Sdílet prostřednictvím


Odkaz pro řešení potíží – Azure SQL Managed Instance

platí pro:azure SQL Managed Instance

V tomto článku se dozvíte, jak monitorovat a řešit problémy s odkazem mezi SQL Serverem a spravovanou instancí Azure SQL.

Stav odkazu můžete zkontrolovat pomocí Transact-SQL (T-SQL), Azure PowerShellu nebo Azure CLI. Pokud narazíte na problémy, můžete k vyřešení problému použít kódy chyb.

Mnoho problémů s vytvořením propojení je možné vyřešit kontrolou síťového mezi dvěma instancemi a ověřením prostředí bylo správně připravené pro propojení.

Počáteční setí

Při vytváření propojení mezi SQL Serverem a službou Azure SQL Managed Instance probíhá nejprve počáteční fáze před zahájením replikace dat. Počáteční fáze osévání je nejdelší a nejdražší částí operace. Po dokončení počátečního seedingu se data synchronizují a replikují se pouze následné změny dat. Doba trvání počátečního osévání závisí na velikosti dat, intenzitě zátěže na primárních databázích a rychlosti spojení mezi sítěmi primárních a sekundárních replik.

Pokud je rychlost propojení mezi těmito dvěma instancemi pomalejší než to, co je potřeba, je pravděpodobné, že doba potřebná k osázení bude výrazně ovlivněna. Můžete použít uvedenou počáteční rychlost, celkovou velikost dat a přenosovou rychlost k odhadu, jak dlouho bude počáteční fáze trvat před zahájením replikace dat. Například v případě jedné databáze o velikosti 100 GB by počáteční fáze trvala přibližně 1,2 hodiny, pokud je propojení schopné přenést 84 GB za hodinu a pokud se žádné jiné databáze nezasívají na jiné propojení. Pokud propojení může přenášet pouze 10 GB za hodinu, může počáteční rozdělení databáze o velikosti 100 GB trvat přibližně 10 hodin. Pokud existuje více databází, které se mají replikovat přes více propojení, provede se šíření paralelně, a v kombinaci s pomalou rychlostí linky může počáteční fáze trvat výrazně déle, zejména pokud paralelní počáteční šíření dat ze všech databází překročí dostupnou šířku pásma linky.

Úvodní fáze seedingu není odolná vůči výpadkům sítě, údržbě instancí nebo přepnutí při selhání. Pokud dojde k dočasné ztrátě obousměrného připojení mezi SQL Serverem a SQL Managed Instance, nebo pokud dojde k restartování SQL Serveru či SQL Managed Instance nebo k převzetí služeb při selhání během počáteční fáze nasazení, seedování bude restartováno.

Důležité

Počáteční fáze počátečního seedingu může trvat dny s extrémně nízkými rychlostmi nebo zaneprázdněnými spojeními. V takovém případě může vytvoření odkazu vypršet časový limit. Vytvoření odkazu se po 6 dnech automaticky zruší.

Pokud narazíte na problémy s odkazem, můžete získat informace o aktuálním stavu odkazu pomocí aplikace SQL Server Management Studio (SSMS), Transact-SQL (T-SQL), Azure PowerShellu nebo Azure CLI.

K rychlému zobrazení stavu odkazu použijte T-SQL a poté pomocí Azure PowerShellu nebo Azure CLI získejte komplexní informace o aktuálním stavu odkazu.

Monitorování propojení je k dispozici od aplikace SQL Server Management Studio (SSMS) 21.0 (Preview).

Pokud chcete zkontrolovat stav propojení v nástroji SSMS, postupujte takto:

  1. Připojte se k replice, která hostí odkaz.

  2. V Průzkumníku objektů rozbalte položku Always On s vysokou dostupností a potom rozbalte Skupiny dostupnosti.

  3. Klikněte pravým tlačítkem myši na název odkazu a potom výběrem možnosti Vlastnosti otevřete okno Vlastnosti odkazu :

    Snímek obrazovky s kontextovou nabídkou po kliknutí pravým tlačítkem myši na odkaz v nástroji SSMS se zvýrazněnými vlastnostmi.

  4. V okně Vlastnosti odkazu se zobrazí užitečné informace o odkazu, například informace o replice, stav propojení a datum vypršení platnosti certifikátu koncového bodu:

    Snímek obrazovky s oknem vlastností odkazu v SSMS

Hodnota replicaState popisuje aktuální odkaz. Pokud stav obsahuje také Chyba došlo k chybě během operace uvedené ve stavu. Například LinkCreationError značí, že při vytváření odkazu došlo k chybě.

Mezi možné hodnoty replicaState patří:

  • CreatingLink: Počáteční sázení
  • LinkSynchronizing: Probíhá replikace dat
  • Selhání propojení je v procesu: Probíhá selhání propojení

Úplný seznam vlastností stavu propojení najdete v distribuovaných skupinách dostupnosti – PŘÍKAZ GET REST API.

Při použití odkazu existují dvě různé kategorie chyb – chyby při pokusu o inicializaci odkazu a chyby při pokusu o vytvoření odkazu.

K následující chybě může dojít při inicializaci propojení (stav propojení: LinkInitError):

K následujícím chybám může dojít při vytváření odkazu (stav propojení: LinkCreationError):

  • Chyba 41977: Cílová databáze neodpovídá. Zkontrolujte parametry propojení a zkuste to znovu.

  • Předčasné zkrácení protokolu: Pokud se transakční protokol zkrátí před dokončením počátečního nastavení, pravděpodobně uvidíte jednu z následujících chyb:

    • Chyba 1408: Vzdálená kopie databáze%.*ls není dostatečně obnovena do potřebného stavu, neumožňuje zrcadlení databáze ani její připojení ke skupině dostupnosti.
    • Chyba 1412: Vzdálená kopie databáze%.*ls nebyla převedena vpřed k časovému bodu, který je zahrnut v místní kopii protokolu databáze.

    Pokud chcete tento problém vyřešit, musíte odstranit a znovu vytvořit odkaz.
    Aby jste se tomuto problému vyhnuli, pozastavte zálohování transakčních protokolů na SQL Serveru pro databázi, která je replikována během počáteční fáze nasazení.

Nekonzistentní stav po vynuceném převzetí při selhání

Po vynuceném převzetí služeb při selhánímůžete narazit na scénář rozděleného mozku, ve kterém jsou obě repliky v primární roli a propojení tak zůstane v nekonzistentním stavu. K tomu může dojít, pokud během havárie přepnete na sekundární repliku a pak se primární replika vrátí online.

Nejprve ověřte, že jste ve scénáři rozděleného mozku. Můžete to provést pomocí aplikace SQL Server Management Studio (SSMS) nebo Transact-SQL (T-SQL).

Připojte se k SQL Serveru i ke spravované instanci SQL v nástroji SSMS, a potom v Průzkumníku objektůrozbalte Repliky dostupnosti pod uzlem Skupiny dostupnosti v rámci Always On High Availability. Pokud jsou dvě různé repliky uvedené jako (primární), jste ve scénáři rozděleného mozku.

Případně můžete následující skript T-SQL spustit na jak SQL Serveru, tak i SQL Managed Instance, abyste zkontrolovali roli replik.

-- Execute on SQL Server and SQL Managed Instance 
USE master
DECLARE @link_name varchar(max) = '<DAGName>'
SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   JOIN sys.dm_hadr_availability_replica_states rs 
   ON ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 AND ag.is_distributed = 1 AND ag.name = @link_name 
GO

Pokud oba instance uvádějí PRIMÁRNÍ ve sloupci role Propojení, jste ve scénáři rozděleného mozku.

Pokud chcete vyřešit stav rozděleného mozku, nejprve vytvořte zálohu na replice, která byla původní primární. Pokud původní primární server byl SQL Server, proveďte zálohování protokolu tail. Pokud byla původní primární instance SQL Managed Instance, proveďte úplné zálohování typu copy-only. Po dokončení zálohování nastavte distribuovanou skupinu dostupnosti na sekundární roli pro repliku, která byla dříve původně primární, ale nyní bude novou sekundární.

Například v případě skutečné havárie za předpokladu, že jste vynutili převzetí služeb při selhání úlohy SQL Serveru do služby Azure SQL Managed Instance a chcete pokračovat ve spouštění úloh ve službě SQL Managed Instance, proveďte zálohu koncového protokolu na SQL Serveru a pak nastavte distribuovanou skupinu dostupnosti na sekundární roli na SQL Serveru, například v následujícím příkladu:

--Execute on SQL Server 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] 
SET (ROLE = SECONDARY) 
GO 

Potom prostřednictvím odkazu spusťte plánované ruční převzetí služeb při selhání ze spravované instance SQL na SQL Server, například:

--Execute on SQL Managed Instance 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] FAILOVER 
GO 

Prošlý certifikát

Platnost certifikátu použitého pro odkaz může vypršet. Pokud platnost certifikátu vyprší, odkaz selže. Pokud chcete tento problém vyřešit, otočte certifikát.

Testování připojení k síti

Aby propojení fungovalo, je nezbytné obousměrné síťové připojení mezi SQL Serverem a službou SQL Managed Instance. Po otevření portů na straně SQL Serveru a konfiguraci pravidla NSG na straně služby SQL Managed Instance otestujte připojení pomocí aplikace SQL Server Management Studio (SSMS) nebo Transact-SQL.

Otestujte síť vytvořením dočasné úlohy agenta SQL na SQL Serveru i ve spravované instanci SQL a zkontrolujte připojení mezi těmito dvěma instancemi. Když v SSMS použijete Network Checker, úloha se pro vás automaticky vytvoří a po dokončení testu se odstraní. Pokud otestujete síť pomocí T-SQL, musíte úlohu agenta SQL ručně odstranit.

Poznámka

Spouštění skriptů PowerShellu agentem SQL Serveru na SQL Serveru v Linuxu se v současné době nepodporuje, takže v současné době není možné spustit Test-NetConnection z úlohy agenta SQL Serveru na SQL Serveru v Linuxu.

Pokud chcete k otestování připojení k síti použít agenta SQL, potřebujete následující požadavky:

  • Uživatel provádějící test musí mít oprávnění k vytvoření úlohy buď jako správce systému, nebo musí patřit do role SQLAgentOperator pro msdb, a to jak pro SQL Server, tak pro spravovanou instanci SQL.
  • Služba agenta SQL Serveru musí být spuštěná na SQL Serveru. Vzhledem k tomu, že je agent ve výchozím nastavení ve službě SQL Managed Instance zapnutý, není nutná žádná další akce.

Vezměte v úvahu následující skutečnosti:

  • Aby se zabránilo falešně negativním výsledkům, musí všechny brány firewall v síťové cestě umožňovat provoz protokolu ICMP (Internet Control Message Protocol).
  • Aby se zabránilo falešně pozitivním výsledkům, musí všechny brány firewall na síťové cestě umožňovat provoz na proprietárním protokolu SQL Server UCS. Blokování protokolu může vést k úspěšnému testu připojení, ale propojení se nepodaří vytvořit.
  • Pokročilá nastavení brány firewall s mantinely na úrovni paketů musí být správně nakonfigurovaná tak, aby umožňovala správně provoz mezi SQL Serverem a spravovanou instancí SQL.

Pokud chcete otestovat síťové připojení mezi SQL Serverem a službou SQL Managed Instance v nástroji SSMS, postupujte takto:

  1. Připojte se k instanci, která bude primární replikou v nástroji SSMS.

  2. V Průzkumník objektůrozbalte databáze a klikněte pravým tlačítkem myši na databázi, kterou chcete propojit se sekundární. Vyberte Úlohy>Azure SQL Managed Instance odkaz>Test připojení, abyste otevřeli průvodce Network Checker.

    Snímek obrazovky průzkumníka objektů v SSMS s vybraným testovacím připojením v nabídce pro kliknutí pravým tlačítkem myši na databázový odkaz.

  3. Na stránce Úvod v průvodci Kontrola sítě vyberte Další.

  4. Pokud jsou splněny všechny požadavky na stránce Požadavky, vyberte Další. V opačném případě vyřešte všechny nesplněné požadavky a pak vyberte Znovu spustit ověřování.

  5. Na stránce Přihlášení vyberte Přihlášení pro připojení k druhé instanci, která bude sekundární replikou. Vyberte Další.

  6. Zkontrolujte podrobnosti na stránce Zadat možnosti sítě a v případě potřeby zadejte IP adresu. Vyberte Další.

  7. Na stránce Souhrn zkontrolujte akce, které průvodce provede, a pak vyberte Dokončit a otestujte připojení mezi těmito dvěma replikami.

  8. Zkontrolujte stránku Výsledky, abyste ověřili existenci připojení mezi těmito dvěma replikami, a poté vyberte Zavřít k dokončení.

Opatrnost

Pokračujte dalšími kroky jenom v případě, že jste ověřili síťové připojení mezi zdrojovým a cílovým prostředím. V opačném případě před pokračováním vyřešte potíže s připojením k síti.

Další informace o funkci odkazu najdete v následujících zdrojích informací: