Sdílet prostřednictvím


Zrcadlení databáze na SQL Serveru

Zrcadlení databáze na SQL Serveru umožňuje zachovat kopii nebo zrcadlo databáze SQL Serveru na pohotovostním serveru. Zrcadlení zajišťuje, že existují vždy dvě samostatné kopie dat, což zajišťuje vysokou dostupnost a úplnou redundanci dat. Rozhraní .NET Zprostředkovatel dat pro SQL Server poskytuje implicitní podporu zrcadlení databáze, takže vývojář nemusí provádět žádnou akci ani psát jakýkoli kód, jakmile je nakonfigurován pro databázi SQL Serveru. Kromě toho SqlConnection objekt podporuje explicitní režim připojení, který umožňuje zadat název serveru partnerského pro převzetí služeb při selhání v ConnectionString.

Pro objekt SqlConnection, který směřuje k databázi nakonfigurované pro zrcadlení, dochází k následující zjednodušené sekvenci událostí:

  1. Klientská aplikace se úspěšně připojí k hlavní databázi a server odešle zpět název partnerského serveru, který se pak ukládá do mezipaměti klienta.

  2. Pokud server obsahující hlavní databázi selže nebo dojde k přerušení připojení, připojení a stav transakce se ztratí. Klientská aplikace se pokusí znovu navázat připojení k hlavní databázi a selže.

  3. Klientská aplikace se pak transparentně pokusí navázat připojení k zrcadlové databázi na partnerském serveru. Pokud bude úspěšné, připojení se přesměruje do zrcadlové databáze, která se pak stane novou hlavní databází.

Určení partnera pro převzetí služeb při selhání v připojovacím řetězci

Pokud do připojovacího řetězce zadáte název partnerského serveru s podporou převzetí služeb při selhání, klient se transparentně pokusí o připojení s partnerským serverem pro převzetí služeb při selhání, pokud je hlavní databáze při prvním připojení klientské aplikace nedostupná.

";Failover Partner=PartnerServerName"

Pokud vynecháte název partnerského serveru pro převzetí služeb při selhání a hlavní databáze nebude k dispozici, když se klientská aplikace poprvé připojí, je vznesena SqlException.

Po úspěšném otevření SqlConnection server vrátí název partnera pro převzetí služeb při selhání a nahradí všechny hodnoty zadané v připojovacím řetězci.

Poznámka:

V připojovacím řetězci je nutné explicitně zadat počáteční katalog nebo název databáze pro scénáře zrcadlení databáze. Pokud klient obdrží informace o převzetí služeb při selhání připojení, které nemá explicitně zadaný počáteční katalog nebo databázi, informace o převzetí služeb při selhání se neukládá do mezipaměti a aplikace se nepokusí převzít služby při selhání, pokud hlavní server selže. Pokud má připojovací řetězec hodnotu pro partnera při převzetí služeb při selhání, ale žádnou hodnotu pro počáteční katalog nebo databázi, vyvolá se InvalidArgumentException.

Načtení aktuálního názvu serveru

V případě převzetí služeb při selhání můžete načíst název serveru, ke kterému je aktuální připojení, pomocí vlastnosti DataSource objektu SqlConnection. Následující fragment kódu načte název aktivního serveru, pokud připojovací proměnná odkazuje na otevřený SqlConnection.

Když dojde k události převzetí služeb při selhání a připojení se přepne na zrcadlový server, vlastnost se aktualizuje tak, DataSource aby odrážela název zrcadla.

Dim activeServer As String = connection.DataSource
string activeServer = connection.DataSource;

Chování zrcadlení u SqlClient

Klient se vždy pokusí připojit k aktuálnímu hlavnímu serveru. Pokud selže, zkusí spojení s partnerem pro záložní řešení. Pokud se zrcadlová databáze již přepnula na roli hlavní na partnerském serveru, připojení proběhne úspěšně a nové mapování hlavní-zrcadlo se odešle klientovi a je uloženo v mezipaměti po dobu životnosti volání AppDomain. Neukládá se v trvalém úložišti a není k dispozici pro následná připojení v jiném AppDomain nebo procesu. Je však k dispozici pro následná připojení ve stejné doméně AppDomain. Mějte na paměti, že jiný AppDomain nebo proces spuštěný na stejném nebo jiném počítači má vždy svůj fond připojení a tato připojení se neobnovují. V takovém případě dojde k výpadku primární databáze, každý proces nebo AppDomain selže jednou a fond se automaticky vymaže.

Poznámka:

Podpora zrcadlení na serveru se konfiguruje pro každou databázi. Pokud se operace manipulace s daty provádějí s jinými databázemi, které nejsou součástí hlavní/zrcadlové sady, buď pomocí vícedílných názvů, nebo změnou aktuální databáze, změny těchto ostatních databází se v případě selhání nešíří. Při změně dat v databázi, která není zrcadlená, se nevygeneruje žádná chyba. Vývojář musí vyhodnotit možný dopad těchto operací.

Prostředky zrcadlení databáze

Koncepční dokumentaci a informace o konfiguraci, nasazení a správě zrcadlení najdete v následujících zdrojích informací v dokumentaci k SQL Serveru.

Zdroj Popis
Zrcadlení databáze Popisuje, jak nastavit a nakonfigurovat zrcadlení na SQL Serveru.

Viz také