Sdílet prostřednictvím


Řešení potíží s konfigurací zrcadlení databáze (SQL Server)

platí pro:SQL Server

Toto téma obsahuje informace, které vám pomůžou při řešení potíží s nastavením relace zrcadlení databáze.

Upozornění

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Pro zajištění vysoké dostupnosti místo toho použijte skupiny dostupnosti AlwaysOn.

Důležité

Zrcadlení databáze v SQL Serveru je odlišná technologie od zrcadlení databáze Microsoft Fabric. Zrcadlení do prostředí Fabric poskytuje lepší analytický výkon, možnost sjednocení datového úložiště pomocí OneLake ve Fabric a otevřený přístup k datům ve formátu Delta Parquet.

Díky zrcadlení do Microsoft Fabric můžete neustále replikovat stávající datovou infrastrukturu přímo do OneLake ve Fabric, včetně dat ze SQL Serveru 2016+, Azure SQL Database, Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake a dalších.

Ujistěte se, že všechny požadavky na zrcadlení databáze splňujete.

Problém Shrnutí
Chybová zpráva 1418 Tato zpráva SYSTÉMU SQL Server označuje, že síťová adresa serveru není dostupná nebo neexistuje, a navrhuje, abyste ověřili název síťové adresy a příkaz znovu spusťte.
Účty Popisuje požadavky pro správnou konfiguraci účtů, ve kterých běží SQL Server.
Koncové body Popisuje požadavky na správnou konfiguraci koncového bodu zrcadlení databáze jednotlivých instancí serveru.
SystemAddress Shrnuje alternativy pro určení systémového jména instance serveru v konfiguraci zrcadlení databází.
Přístup k síti Dokumentuje požadavek, aby každá instance serveru mohla přistupovat k portům druhé instance serveru nebo instancí přes tcp.
Příprava zrcadlové databáze Shrnuje požadavky na přípravu zrcadlové databáze, aby bylo možné spustit zrcadlení.
Operace vytvoření souboru se nezdařila. Popisuje, jak reagovat na neúspěšnou operaci vytvoření souboru.
Spuštění zrcadlení pomocí jazyka Transact-SQL Popisuje požadované pořadí příkazů ALTER DATABASE database_name SET PARTNER ='partner_server' .
Transakce napříč databázemi Automatické převzetí služeb při selhání může vést k automatickému a potenciálně nesprávnému řešení transakcí v pochybnostech. Z tohoto důvodu zrcadlení databáze nepodporuje transakce mezi databázemi.

Accounts

Účty, na kterých běží SQL Server, musí být správně nakonfigurované.

  1. Mají účty správná oprávnění?

    1. Pokud jsou účty spuštěné ve stejných doménových účtech, sníží se pravděpodobnost chybné konfigurace.

    2. Pokud účty běží v různých doménách nebo nejsou účty domény, musí být přihlášení jednoho účtu vytvořeno v hlavním serveru na druhém počítači a toto přihlášení musí mít udělená oprávnění CONNECT v koncovém bodu. Další informace najdete v tématu Správa metadat při zpřístupnění databáze v jiné instanci serveru (SQL Server). To zahrnuje účet síťové služby.

  2. Pokud sql Server běží jako služba, která používá místní systémový účet, musíte k ověřování použít certifikáty. Další informace najdete v tématu Použití certifikátů pro koncový bod zrcadlení databáze (Transact-SQL).

Endpoints

Koncové body musí být správně nakonfigurované.

  1. Ujistěte se, že každá instance serveru (hlavní server, zrcadlový server a svědek, pokud existuje) má koncový bod pro zrcadlení databáze. Další informace najdete v tématu sys.database_mirroring_endpoints (Transact-SQL) a v závislosti na způsobu ověřování vytvořte koncový bod zrcadlení databáze pro ověřování systému Windows (Transact-SQL) nebo použijte certifikáty pro koncový bod zrcadlení databáze (Transact-SQL)..

  2. Zkontrolujte správnost čísel portů.

    K identifikaci portu aktuálně přidruženého ke koncovému bodu zrcadlení databáze instance serveru, použijte katalogová zobrazení sys.database_mirroring_endpoints a sys.tcp_endpoints.

  3. V případě problémů s nastavením zrcadlení databáze, které je obtížné vysvětlit, doporučujeme zkontrolovat každou instanci serveru a zjistit, jestli naslouchá na správných portech.

  4. Ujistěte se, že koncové body jsou spuštěné (STATE=STARTED). V každé instanci serveru použijte následující příkaz Transact-SQL.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    Další informace o sloupci state_desc najdete v tématu sys.database_mirroring_endpoints (Transact-SQL).

    Ke spuštění koncového bodu použijte následující příkaz Transact-SQL.

    ALTER ENDPOINT Endpoint_Mirroring   
    STATE = STARTED   
    AS TCP (LISTENER_PORT = <port_number>)  
    FOR database_mirroring (ROLE = ALL);  
    GO  
    

    Další informace naleznete v tématu ALTER ENDPOINT (Transact-SQL).

  5. Zkontrolujte správnost role. V každé instanci serveru použijte následující příkaz Transact-SQL.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

    Další informace najdete v tématu sys.database_mirroring_endpoints (Transact-SQL).

  6. Přihlášení k účtu služby z jiné instance serveru vyžaduje oprávnění CONNECT. Ujistěte se, že přihlášení z druhého serveru má oprávnění CONNECT. Pokud chcete zjistit, kdo má oprávnění CONNECT pro koncový bod, použijte v každé instanci serveru následující příkaz Transact-SQL.

    SELECT 'Metadata Check';  
    SELECT EP.name, SP.STATE,   
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))   
          AS GRANTOR,   
       SP.TYPE AS PERMISSION,  
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))   
          AS GRANTEE   
       FROM sys.server_permissions SP , sys.endpoints EP  
       WHERE SP.major_id = EP.endpoint_id  
       ORDER BY Permission,grantor, grantee;   
    GO  
    
    

Systémová adresa

Pro název systému instance serveru v konfiguraci zrcadlení databáze můžete použít libovolný název, který jednoznačně identifikuje systém. Adresa serveru může být systémovým názvem (pokud jsou systémy ve stejné doméně), plně kvalifikovaným názvem domény nebo IP adresou (pokud možno statickou IP adresou). Použití plně kvalifikovaného názvu domény je zaručeno, že bude fungovat. Další informace najdete v tématu Určení síťové adresy serveru (zrcadlení databáze).

Síťový přístup

Každá instance serveru musí mít přístup k portům druhé instance serveru nebo instancí přes protokol TCP. To je zvlášť důležité, pokud jsou instance serveru v různých doménách, které navzájem nedůvěřují (nedůvěryhodné domény). Tím se omezuje velká část komunikace mezi instancemi serveru.

Příprava zrcadlové databáze

Ať už spouštíte zrcadlení poprvé nebo znovu po jeho odebrání, ověřte, jestli je zrcadlová databáze připravená pro zrcadlení.

Při vytváření zrcadlové databáze na zrcadlovém serveru se ujistěte, že obnovujete zálohu hlavní databáze s uvedením stejného názvu databáze s možností NORECOVERY. Také musí být použity všechny zálohy protokolů vytvořené po provedení této zálohy, a to znovu POMOCÍ NORECOVERY.

Pokud je to možné, doporučujeme také, aby cesta k souboru (včetně písmene jednotky) zrcadlové databáze byla shodná s cestou hlavní databáze. Pokud se cesty k souborům musí lišit, například pokud je hlavní databáze na jednotce F:, ale zrcadlový systém nemá jednotku F:, musíte do příkazu RESTORE zahrnout možnost MOVE.

Důležité

Pokud soubory databáze přesunete při vytváření zrcadlové databáze, možná nebudete moct později přidat soubory do databáze bez pozastavení zrcadlení.

Pokud bylo zrcadlení databáze zastaveno, musí se před jeho opětovným spuštěním aplikovat všechny následné zálohy protokolů pořízené primární databází na zrcadlenou databázi.

Další informace naleznete v tématu Příprava zrcadlové databáze pro zrcadlení (SQL Server).

Neúspěch operace Create-File

Přidání souboru, které neovlivní zrcadlení, vyžaduje, aby cesta k souboru existovala na obou serverech. Proto pokud při vytváření zrcadlové databáze přesunete soubory databáze, může pozdější operace se zrcadlovým souborem selhat a způsobit pozastavení zrcadlení.

Problém vyřešíte tak, že:

  1. Vlastník databáze musí odebrat relaci zrcadlení a obnovit úplnou zálohu skupiny souborů, která obsahuje přidaný soubor.

  2. Vlastník pak musí zálohovat protokol obsahující operaci přidání souboru na hlavním serveru a ručně obnovit zálohu protokolu v databázi zrcadlení při použití možností WITH NORECOVERY a WITH MOVE. Tímto způsobem se vytvoří zadaná cesta k souboru na zrcadlovém serveru a obnoví se nový soubor do tohoto umístění.

  3. Aby bylo možné připravit databázi na novou relaci zrcadlení, musí vlastník také obnovit všechny zbývající zálohy protokolů z hlavního serveru s použitím možnosti BEZ OBNOVENÍ.

Další informace najdete v tématu Odebrání zrcadlení databáze (SQL Server), příprava zrcadlové databáze pro zrcadlení (SQL Server), vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (Transact-SQL), použití certifikátů pro koncový bod zrcadlení databáze (Transact-SQL) nebo vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (SQL Server Management Studio).

Spuštění zrcadlení pomocí Transact-SQL

Pořadí, ve kterém jsou vydány příkazy ALTER DATABASE database_name SET PARTNER ='partner_server' , je velmi důležité.

  1. První příkaz musí být spuštěn na zrcadlovém serveru. Při vydání tohoto příkazu se zrcadlový server nepokusí kontaktovat žádnou jinou instanci serveru. Místo toho zrcadlový server dává pokyn své databázi, aby čekala, dokud ji nekontaktuje primární server.

  2. Druhý příkaz ALTER DATABASE musí být spuštěn na hlavním serveru. Tento příkaz způsobí, že hlavní server se pokusí připojit k zrcadlovému serveru. Po vytvoření připojení se zrcadlo pokusí připojit k hlavnímu serveru prostřednictvím jiného připojení.

Další informace naleznete v tématu ALTER DATABASE (Transact-SQL).

Poznámka:

Informace o použití SQL Server Management Studio ke spuštění zrcadlení databáze najdete v tématu Vytvoření relace zrcadlení databáze pomocí ověřování systému Windows (SQL Server Management Studio).

Transakce napříč databázemi

Když je databáze zrcadlena v režimu vysoké bezpečnosti s automatickým převzetím při selhání, může automatické převzetí při selhání vést k automatickému a potenciálně nesprávnému řešení sporných transakcí. Pokud dojde k automatickému převzetí služeb při selhání v jedné z databází, zatímco se potvrzuje transakce mezi databázemi, mohou mezi databázemi nastat logické nekonzistence.

Typy transakcí mezi různými databázemi, které mohou být ovlivněny automatickým převzetím služeb při selhání, zahrnují:

  • Transakce, která aktualizuje více databází ve stejné instanci SQL Serveru.

  • Transakce, které používají microsoft Distributed Transaction Coordinator (MS DTC).

Další informace naleznete v tématu transakce mezi databázemi a distribuované transakce pro skupiny dostupnosti AlwaysOn a zrcadlení databáze (SQL Server).

Viz také

Nastavení zrcadlení databáze (SQL Server)
Zabezpečení přenosu pro zrcadlení databáze a skupiny dostupnosti AlwaysOn (SQL Server)