Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az SQL Server adatbázis-tükrözése lehetővé teszi, hogy egy SQL Server-adatbázis másolatát vagy tükrözését készenléti kiszolgálón tárolja. A tükrözés biztosítja, hogy az adatok két különálló példánya mindig létezik, magas rendelkezésre állást és teljes adatredundanciát biztosítva. Az SQL Server .NET-adatszolgáltatója implicit támogatást nyújt az adatbázis-tükrözéshez, így a fejlesztőnek nem kell semmilyen műveletet vagy kódot írnia, miután konfigurálta egy SQL Server-adatbázishoz. Emellett az SqlConnection objektum támogatja az explicit kapcsolati módot, ami lehetővé teszi a feladatátvevő partnerkiszolgáló nevének megadását a ConnectionString részben.
A tükrözéshez konfigurált adatbázist megcélzó objektumok esetében SqlConnection a következő egyszerűsített eseménysorozat történik:
Az ügyfélalkalmazás sikeresen csatlakozik a főkiszolgáló adatbázishoz, és a kiszolgáló visszaküldi a partnerkiszolgáló nevét, amelyet az ügyfél ezután gyorsítótáraz.
Ha a fő adatbázist tartalmazó kiszolgáló meghibásodik, vagy megszakad a kapcsolat, elveszik a kapcsolat és a tranzakció állapota. Az ügyfélalkalmazás megpróbál újra kapcsolatot létesíteni az egyszerű adatbázissal, és sikertelen lesz.
Az ügyfélalkalmazás ezután transzparens módon megpróbál kapcsolatot létesíteni a partnerkiszolgáló tükrözött adatbázisával. Ha sikerül, a rendszer átirányítja a kapcsolatot a tükrözött adatbázisba, amely ezután az új fő adatbázis lesz.
A hibatűrő partner megadása a kapcsolati karakterláncban
Ha megadja a kapcsolati sztringben a feladatátvevő partnerkiszolgáló nevét, az ügyfél átlátszóan megkísérli a kapcsolatot a feladatátvevő partnerrel, ha az ügyfélalkalmazás első kapcsolódásakor a fő adatbázis nem érhető el.
";Failover Partner=PartnerServerName"
Ha kihagyja az átvételi partnerkiszolgáló nevét, és az elsődleges adatbázis nem elérhető, amikor az ügyfélalkalmazás először csatlakozik, akkor hiba vagy kivétel jelezhető egy SqlException segítségével.
SqlConnection Sikeres megnyitáskor a kiszolgáló továbbítja a tartalék partner nevét, és felülírja a kapcsolati sztringben megadott bármely értékeket.
Megjegyzés
Az adatbázis-tükrözési forgatókönyvekhez egyértelműen meg kell adnia a kezdeti katalógus vagy adatbázis nevét a kapcsolati sztringben. Ha az ügyfél olyan kapcsolaton kap feladatátvételi információkat, amely nem rendelkezik explicit módon megadott kezdeti katalógussal vagy adatbázissal, a rendszer nem gyorsítótárazza a feladatátvételi adatokat, és az alkalmazás nem kísérli meg a feladatátvételt, ha az egyszerű kiszolgáló meghibásodik. Ha egy kapcsolati sztring rendelkezik a feladatátvevő partner értékével, de nincs értéke a kezdő katalógusnak vagy adatbázisnak, egy InvalidArgumentException hibát vált ki a rendszer.
Az aktuális szervernév beolvasása
Feladatátvétel esetén a DataSource objektum SqlConnection tulajdonságával lekérheti annak a kiszolgálónak a nevét, amelyhez a jelenlegi kapcsolat ténylegesen kapcsolódik. Az alábbi kódrészlet lekéri az aktív kiszolgáló nevét, feltéve, hogy a kapcsolati változó egy nyitottra SqlConnectionhivatkozik.
Amikor hibaátvételi esemény történik, és a kapcsolat a tükörszerverre vált, a rendszer frissíti a DataSource tulajdonságot, hogy tükrözze a tükör nevét.
Dim activeServer As String = connection.DataSource
string activeServer = connection.DataSource;
Az SqlClient tükrözési viselkedése
A kliens mindig megpróbál csatlakozni az aktuális fő kiszolgálóhoz. Ha sikertelen, megpróbálja a feladatátvételi partnert. Ha a tükrözött adatbázis már át lett kapcsolva a partnerkiszolgálón a fő szerepkörre, a kapcsolat sikeres lesz, és az új fő-tükör leképezést az ügyfélnek küldik, és tárolja a gyorsítótárban a hívás teljes időtartama alatt. A tárolás nem állandó tárolóban történik, és nem érhető el egy másik AppDomain vagy folyamat következő kapcsolataihoz. Az AppDomainben belüli további kapcsolatokhoz azonban elérhető. Vegye figyelembe, hogy az ugyanazon vagy egy másik számítógépen futó másik AppDomain vagy folyamat mindig rendelkezik kapcsolatkészletével, és ezek a kapcsolatok nem lesznek visszaállítva. Abban az esetben, ha az elsődleges adatbázis leáll, minden folyamat vagy AppDomain egyszer meghibásodik, és a pool automatikusan törlődik.
Megjegyzés
A kiszolgáló tükrözési támogatása adatbázisonként van konfigurálva. Ha az adatmanipulációs műveleteket az egyszerű/tükrözött készletben nem szereplő más adatbázisokon hajtják végre, akár többrészes nevek használatával, akár az aktuális adatbázis módosításával, a többi adatbázis módosításai sikertelenség esetén nem propagálódnak. Nem jön létre hiba, ha az adatok nem tükrözött adatbázisban módosulnak. A fejlesztőnek értékelnie kell az ilyen műveletek lehetséges hatását.
Adatbázis-tükrözési erőforrások
A tükrözés konfigurálásával, üzembe helyezésével és felügyeletével kapcsolatos elméleti dokumentációért és információkért tekintse meg a következő erőforrásokat az SQL Server dokumentációjában.
| Erőforrás | Leírás |
|---|---|
| Adatbázis-tükrözés | Ismerteti, hogyan állíthatja be és konfigurálhatja a tükrözést az SQL Serveren. |