Sdílet prostřednictvím


Zrcadlení databáze na SQL Serveru

Stáhnout ADO.NET

Poznámka:

Zrcadlení databáze v SQL Serveru je odlišná technologie od zrcadlení databáze Microsoft Fabric.

Zrcadlení databáze na SQL Serveru umožňuje zachovat kopii nebo zrcadlo databáze SQL Serveru na pohotovostním serveru. Zrcadlení zajišťuje, že vždy existují dvě samostatné kopie dat, které poskytují vysokou dostupnost a úplnou redundanci dat. Zprostředkovatel Microsoft SqlClient pro SQL Server poskytuje implicitní podporu zrcadlení databází. Vývojář nemusí dělat nic, jakmile je klient nakonfigurovaný pro databázi SQL Serveru. Objekt SqlConnection také podporuje explicitní režim připojení, který umožňuje zadat název partnerského serveru pro převzetí služeb při selhání v 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ý klient ukládá do mezipaměti.
  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 záložního partnerského serveru a hlavní databáze nebude při připojení klientské aplikace k dispozici, klient se transparentně pokusí o připojení k záložnímu partnerovi.

";Failover Partner=PartnerServerName"

Pokud vynecháte název partner serveru pro převzetí služeb při selhání a hlavní databáze není při prvním připojení klientské aplikace k dispozici, dojde k SqlException.

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

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

Když dojde k převzetí služeb při selhání, můžete pomocí vlastnosti DataSource objektu SqlConnection načíst název serveru, ke kterému je aktuální připojení. 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 mirror server, vlastnost DataSource se aktualizuje tak, aby odrážela název mirror serveru.

string activeServer = connection.DataSource;

Chování mirroringu SqlClient

Klient se vždy pokusí připojit k 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 budoucí připojení v jiné doméně nebo procesu AppDomain . Je ale k dispozici pro pozdější připojení ve stejné doméně AppDomain. 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 nerestartují. 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í.

Další kroky

Zdroje pro 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 Description
Zrcadlení databáze Popisuje, jak nastavit a nakonfigurovat zrcadlení na SQL Serveru.