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 partnerského serveru s podporou převzetí služeb při selhání na serveru ConnectionString.

Pro objekt, který cílí na databázi nakonfigurovanou pro zrcadlení, dojde k SqlConnection 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í řetězec zadáte název partnerského serveru s podporou převzetí služeb při selhání, klient transparentně pokusí o připojení s partnerem 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 s podporou převzetí služeb při selhání a hlavní databáze nebude k dispozici, když se klientská aplikace poprvé připojí, vyvolá SqlException se vyvolání.

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

Poznámka:

V připojovací řetězec 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 partnera pro převzetí služeb při selhání, ale žádná hodnota pro počáteční katalog nebo databázi, InvalidArgumentException vyvolá se.

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í skutečně připojeno pomocí DataSource vlastnosti objektu SqlConnection . Následující fragment kódu načte název aktivního serveru za předpokladu, že proměnná připojení 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 DataSource se aktualizuje tak, aby odrážela název zrcadla.

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

Chování zrcadlení SqlClient

Klient se vždy pokusí připojit k aktuálnímu hlavnímu serveru. Pokud selže, pokusí se partnera pro převzetí služeb při selhání. Pokud se zrcadlová databáze již přepnula na hlavní roli na partnerském serveru, připojení proběhne úspěšně a nové mapování zrcadlení objektu zabezpečení se odešle klientovi a po dobu životnosti volání AppDomainse do mezipaměti odešle do mezipaměti . Neukládá se v trvalém úložišti a není k dispozici pro následná připojení v jiné doméně nebo procesu AppDomain . Je však k dispozici pro následná připojení ve stejné doméně AppDomain. Všimněte si, ž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 jednou selže 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í objektu zabezpečení nebo zrcadlové sady, buď pomocí názvů více částí, nebo změnou aktuální databáze, změny těchto ostatních databází se v případě selhání nerozšířují. 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.

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

Viz také