Az ügyfelek összekapcsolása egy adatbázis-tükrözési munkamenethez (sql-kiszolgáló)
A megjelenített adatbázis kezdeti kapcsolatának elvégzéséhez az ügyfélnek olyan kapcsolódási karakterláncot kell megadnia, amely feltétlenül tartalmazza a kiszolgáló példány nevét. A szükséges kiszolgálónévnek meg kell határoznia az elsődleges kiszolgáló aktuális példányát, és meg kell neveznie az eredeti tag nevét.
Szükség esetén a kapcsolat-string tartalmazhat egy másik kiszolgálópéldány nevét is, amely azonosítja a tükrökiszolgáló aktuális példányát, amikor az eredeti tag nem érhető el az első kapcsolódási kísérlet során. A második név a failover partner neve.
A kapcsolatláncnak tartalmaznia kell az adatbázis nevét is. Ez azért szükséges, hogy az adatelérési szolgáltató megkísérelje az elutasítást.
Miután megkapta a connection string szolgáltató adathozzáférés megtartja az eredeti a résztvevő nevét és a nevét a partner failover (ha adott) a cache a felejtő memória (menedzselt kód, a cache a bejelentésben szereplő tartomány). A gyorsítótárazást követően az adatkezelő nem frissíti az eredeti tag nevét. Ha az ügyfél rendelkezik a neve a résztvevő failover esetén a szolgáltató az adatokhoz való hozzáférés nem tud csatlakozni a neve az eredeti fél, a szállító is menti a neve a partner failover.
Az adatbázis-tükrözés nem nyújt védelmet a kliensekhez való hozzáféréshez kapcsolódó problémákkal szemben, például ha az ügyfél számítógépe problémákat tapasztal a hálózattal való kapcsolattartásban. A megjelenített adatbázishoz való csatlakozás megkísérlése számos okból kifolyólag meghiúsulhat, amelyek nem kapcsolódnak az adatbeviteli szolgáltatóhoz, például egy kapcsolat kísérlet sikertelen lehet, ha az elsődleges kiszolgáló példány inaktív; Ez akkor fordul elő, ha más adatbázisba költözik, vagy egy hiba miatt.
Amikor megpróbál csatlakozni, az adatátvitel-szolgáltató elsősorban az eredeti tag nevével próbálja meg csatlakozni. Ha a megadott kiszolgáló példány rendelkezésre áll, és az elsődleges kiszolgáló aktuális példánya, akkor általában sikeres a kapcsolódási kísérlet.
Ha a tükrözés felfüggesztésre kerül, akkor az ügyfél általában az elsődleges kiszolgálóhoz csatlakozik, és letölti a résztvevő nevét. Az adatbázis azonban nem lesz elérhető az ügyfél számára, amíg a tükrözés nem folytatódik.
Ha a kísérlet meghiúsul, az adatátvitel-szolgáltató megpróbál kapcsolódni a failover partner nevével, ha rendelkezésre áll. Ha a másik résztvevő neve helyesen azonosítja az aktuális elsődleges kiszolgálót, az adatbeviteli szolgáltató általában megnyitja az eredeti kapcsolatot. Miután ez a kapcsolat befejeződött, az adatszolgáltató letölti az aktuális tükörszerver példánynevét. Ez a név a gyorsítótárban tárolódik, mint a failover partner neve, és a kliens által rendelkezésre bocsátott átirányítási partner neve, ha létezik, felülíródik. Ezt követően az .NET Framework Data Server for SQL Server nem frissíti a failover partner nevét. Az SQL Server Native Client azonban frissíti a gyorsítótárat minden olyan alkalommal, amikor egy későbbi kapcsolat vagy kapcsolat újratelepítése egy másik tag nevét adja vissza.
Az alábbi ábra mutatja az ügyféllel kapcsolatos kapcsolatot az eredeti A résztvevővel a megjelenített Db_1 adatbázishoz. A program bemutatja az esetben, ha az eredeti neve a résztvevő ügyfelek helyesen azonosítja a jelenlegi fő kiszolgáló tagja A. Kezdetben a kapcsolat sikeres, és a szállító adathozzáférés megtartja a nevét, a jelenlegi tükör szerver (tag B) a helyi cache, mint az a résztvevő nevét, hogy biztosítsa failover . Végül az ügyfél csatlakozik a Db_1 adatbázis fő példányához.

Előfordulhat, hogy a kezdeti csatlakozási kísérlet sikertelen, például hálózati hiba következtében vagy azért, mert a kiszolgáló példány inaktív. Mivel az eredeti tag nem érhető el, az ügyfélnek meg kell adnia a partner nevét annak biztosítására, hogy a kapcsolat megszakadjon a kapcsolatláncban, így az adatátvitel-szolgáltató megpróbál kapcsolódni a failover partnerhez.
Ha a partner nevét failover nem áll rendelkezésre, a kezdeti kapcsolódási kísérletek folytatni, amíg nincs hiba (hasonlóan a kapcsolódás nem jeleníti meg az adatbázisban) lejár hálózati kapcsolat időtúllépés vagy nem küldjük vissza.
Ha a failover partner neve szerepel a kapcsolati karakterláncban, akkor az adatátviteli szolgáltató viselkedése a hálózati protokolltól és az ügyfél operációs rendszerétől függ, az alábbiak szerint:
TCP / IP esetén a kapcsolódási kísérleteket egy ismétlődő kapcsolati algoritmus szabályozza, amely az adatbázis-tükrözésre jellemző. Az újrakapcsolódási algoritmus határozza meg a kapcsolat maximális megnyitására engedélyezett maximális időt (újrapróbálkozási idő).
Más hálózati protokollokhoz
Ha hiba történik, vagy az eredeti tag nem érhető el, a kezdeti kapcsolódási kísérletek addig folytatódnak, amíg a hálózati kapcsolat időtúllépése lejárt, vagy az adatátviteli szolgáltató bejelentkezési időtúllépése lejárt. Általában ez a várakozási idő körülbelül 20-30 másodperc. Ezt követően, ha a szolgáltató várakozási ideje lejárt, a szolgáltató megpróbál csatlakozni a failover partnerhez. Ha a kapcsolat időtúllépése a kapcsolat sikeres befejezése előtt jár le, vagy a failover partner nem érhető el, a csatlakozási kísérlet meghiúsul. Ha a failover partner elérhető a bejelentkezési időkorlát előtt, és jelenleg az elsődleges kiszolgáló, akkor általában sikeres a kapcsolódási kísérlet.
Csatlakozási vonalak tükörsávval
Az ügyfél által közölt kapcsolódási karakterlánc olyan adatokat tartalmaz, amelyeket az adatbeviteli szolgáltató az adatbázishoz való csatlakozáshoz használ. Ez a rész a Native Client ODBC SQL Server illesztőprogramot használó tükrözött adatbázisra történő csatlakozással kapcsolatos kulcsszavakat ismerteti.
A hálózati attribútum
A kapcsolat-karakterláncnak tartalmaznia kell a Network attribútumot. jelezve a hálózati protokollt. Ez biztosítja, hogy a megadott hálózati protokoll megmaradjon a különböző résztvevőkhöz való csatlakozáskor. A TCP / IP a legjobb protokoll a megjelenítési adatbázishoz való csatlakozáshoz. A TCP / IP kérésnek a klienshez történő minden egyes alkalommal történő biztosítása érdekében mindig a következő attribútumot kell megadnia a kapcsolathoz:
Mivel a nevezett csövek nem használják a TCP / IP protokoll visszajátszási algoritmust, sok esetben a megadott csövekhez való csatlakozási kísérlet időtartama lejár, mielőtt a megjelenített adatbázishoz csatlakozna.
Attribútum szerver
A kapcsolódási sornak tartalmaznia kell egy kiszolgáló attribútumot, amely megadja az eredeti tag nevét, amelyiknek meg kell határoznia az elsődleges kiszolgáló aktuális példányát.
A kiszolgáló példányának legegyszerűbb módja a név megadására, <имя_сервера> [\<имя_экземпляра_SQL_Server> ]. Például:
Az SQL Server böngészőre vonatkozó kérelemre van szükség, ha a nevezett példány neve meg van adva a kapcsolódási sorban, és nem a porton.
TCP / IP-kapcsolat esetén, ha mindkét résztvevő neve a gyorsítótárban van, az adatátvitel-szolgáltató az újrakapcsolódási algoritmus segítségével létrehoz egy kapcsolatot. Ez igaz mind a kezdeti kapcsolat a munkamenet és a újrakapcsolódás után elvesztése kommunikáció. A kapcsolat létrejötte után az előzetes és az alapvető kapcsolódási lépések végrehajtása további időt igényel.
Tekintettel az idő, hogy hozzon létre egy kapcsolatot meghaladhatja az ismétlő időt, mert a külső tényezők, mint a lassú DNS-keresés, lassú tartományvezérlő vagy a KDC az időt, hogy kommunikáljon a böngésző SQL Server, hálózati túlterheltség, és így tovább. Ilyen külső tényezők megakadályozhatják az ügyfelet a tükrözött adatbázisba való csatlakozáshoz. Emellett a külső tényezők miatt a kapcsolat létrehozásának ideje nagyobb, mint a beállított újrapróbálkozási idő. További információt a DNS és az SQL Server böngésző feltérképezéséről a forrás taghoz való kapcsolódásról a következő témakörben talál: Első hivatkozás létrehozása az adatbázis tükrözésével a fenti témakörben.
Ha a csatlakozási kísérlet meghiúsul vagy az újrapróbálkozási idő lejár, mielőtt a kapcsolat létrejött volna, az adatszolgáltató megpróbál csatlakozni egy másik taghoz. Ha a kapcsolat sikertelen, a szolgáltató megpróbálja megváltoztatni a forrás tag és a failover partner nevét, amíg a kapcsolat létre nem jön, vagy a bejelentkezési idő lejár. Az alapértelmezett időtúllépés időtartama 15 másodperc. Javasoljuk, hogy az időtúllépés időtartama legalább 5 másodperc legyen. A kisebb időtúllépés beállítása megakadályozhatja a sikeres kapcsolódási kísérleteket.
Az újrapróbálkozási idő a belépési idő százalékos aránya. A kapcsolódási kísérlet újrapróbálkozási ideje minden egyes sikeres ciklusnál növekszik. Az első ciklusban a két kísérlet mindegyikének újrapróbálkozási ideje a teljes belépési idő 8% -a. Minden egyes sikeres ciklusnál az ismétlődő algoritmus növeli a maximális ismétlési időt az azonos számmal. Ezért az első nyolc csatlakozási kísérlet újraindítási ideje a következő:
8%, 8%, 16%, 16%, 24%, 24%, 32%, 32%
Az ismétlési időt az alábbi képlet segítségével számítjuk ki:
ahol a PreviousRetryTime kezdetben 0.
Például, ha a bejelentkezési időtúllépés 15 másodpercig a LoginTimeout = 15 értéket használja. Ebben az esetben az első három körhöz rendelt újrapróbálkozási idő a következő lesz:
Az alábbi ábra mutatja a sikeres kapcsolódási kísérletek újrapróbálkozási periódusait, amelyek várakozási ideje minden egyes lejáratra.

Az alapértelmezett bejelentkezés alapértelmezett időtúllépési ideje esetén az első három csatlakozási kísérlethez rendelt maximális idő 14,4 másodperc. Ha minden próbálkozás az összes hozzárendelt időpontot használta, akkor csak 0,6 másodperccel lett volna a belépési idő lejárta előtt. Ebben az esetben a negyedik ciklus lerövidül, és csak az utolsó gyors kapcsolat kísérletet tesz lehetővé a forrás résztvevő nevével. Azonban a csatlakozási kísérlet sikertelen lehet az újrapróbálkozási idő alatt, kevesebb, mint az ütemezett, különösen a következő ciklusokban. Például egy hálózati hiba megpróbálhatja leállítani az újrapróbálkozási idő letelte előtt. Ha az előző kísérletek sikertelenek a hálózati hiba miatt, a negyedik és esetleg további ciklusokra további idő áll rendelkezésre.
A sikertelen kísérletek másik oka egy inaktív kiszolgálópéldány, amely akkor következik be, ha egy kiszolgálópéldány erőforrást küld az adatbázisába. Ebben az esetben egy újrapróbálkozási késleltetést hajtanak végre, hogy megakadályozzák a résztvevők túlterhelését gyors kapcsolat kísérletek végrehajtásával.
Ha mindkét résztvevő neve elérhető, és a bejelentkezési időtartam végtelen, az ügyfél megpróbál folyamatosan csatlakozni a szerverekhez, átváltva az eredeti résztvevő nevéről és a failover partner nevéről.
)
Próbálja újra késlekedni az átfutás során
Ha az ügyfél egy másik forrásba költöző résztvevőhöz próbál csatlakozni, a résztvevő azonnal válaszol arra, hogy nem érhető el. Ebben az esetben a csatlakozási kísérletek minden ciklusa jelentősen rövidebb lesz, mint az ütemezett újrapróbálkozási idő. Ez azt jelenti, hogy a belépési idő lejárta előtt sok kapcsolódási kísérlet fordulhat elő. Annak elkerülése érdekében, hogy a résztvevők túl gyorsan töltsék be a kapcsolódási kísérleteket egy átfutási idő alatt, az adatátvitel-szolgáltató egy rövid újrapróbálkozási késleltetést ad minden egyes visszajátszási ciklus után. A megismételt késleltetés időtartamát az újrapróbálási késleltetési algoritmus határozza meg. Az első ciklus után a késleltetés 100 milliszekundum. A következő három forduló mindegyike után az ismétlődő késleltetés megduplázódik - 200, 400 és 800-ra. Az összes következő körben az újrapróbálási késleltetés 1 másodpercig tart, amíg a csatlakozási kísérlet vagy az idő lejárt.
Ha a kiszolgáló példánya leáll, a kapcsolatkérelem azonnal leáll.
Az alábbi ábra bemutatja, hogy a késleltetés késleltetése hogyan befolyásolja a kapcsolódási kísérleteket a kézi áttelepítés során, amikor a partnerek váltják a szerepüket. A várakozási idő 15 másodperc.
