Freigeben über


Problemlösungslink – Azure SQL Managed Instance

Gilt für:Azure SQL Managed Instance

In diesem Artikel erfahren Sie, wie Sie eine -Verknüpfung zwischen SQL Server und Azure SQL Managed Instance überwachen und Probleme beheben können.

Sie können den Status des Links mit Transact-SQL (T-SQL), Azure PowerShell oder der Azure CLI überprüfen. Wenn Probleme auftreten, können Sie die Fehlercodes verwenden, um das Problem zu beheben.

Viele Probleme beim Erstellen der Verbindung können behoben werden, indem das Netzwerk zwischen den beiden Instanzen überprüft und die Umgebung für die Verbindung ordnungsgemäß vorbereitet wurde.

Anfängliches Seeding

Beim Einrichten einer Verbindung zwischen SQL Server und azure SQL Managed Instance gibt es eine anfängliche Seedingphase, bevor die Datenreplikation beginnt. Die Seedingphase zu Beginn ist der längste und teuerste Teil des Vorgangs. Sobald das anfängliche Seeding abgeschlossen ist, werden die Daten synchronisiert, und nur nachfolgende Datenänderungen werden repliziert. Die Zeit, die für das anfängliche Seeding benötigt wird, ist abhängig von der Größe der Daten, der Intensität der Workloads auf den primären Datenbanken und der Geschwindigkeit der Verbindung zwischen den Netzwerken der primären und der sekundären Replikate.

Wenn die Geschwindigkeit der Verbindung zwischen den beiden Instanzen langsamer als erforderlich ist, wirkt sich dies wahrscheinlich erheblich auf die Zeit für das Seeding aus. Sie können die angegebene Seedinggeschwindigkeit, die Gesamtgröße der Daten und die Verknüpfungsgeschwindigkeit verwenden, um zu schätzen, wie lange die anfängliche Seedingphase dauert, bevor die Datenreplikation beginnt. Bei einer einzelnen Datenbank mit 100 GB würde die anfängliche Startphase etwa 1,2 Stunden dauern, wenn der Link 84 GB pro Stunde pushen kann und keine anderen Datenbanken auf eine andere Verknüpfung gesetzt werden. Wenn über die Verbindung nur 10 GB pro Stunde übertragen werden können, dauert das Seeding einer 100-GB-Datenbank ungefähr 10 Stunden. Wenn mehrere Datenbanken über mehrere Verknüpfungen repliziert werden sollen, wird das Seeding parallel ausgeführt, und in Kombination mit einer langsamen Verbindungsgeschwindigkeit kann die anfängliche Seedingphase erheblich länger dauern, insbesondere, wenn das parallele Seeding von Daten aus allen Datenbanken die verfügbare Linkbandbreite überschreitet.

Die anfängliche Seedingphase ist nicht widerstandsfähig für Netzwerkunterbrechungen und Instanzwartungs- oder Failovervorgänge. Wenn die bidirektionale Konnektivität zwischen SQL Server und SQL Managed Instance vorübergehend verloren geht oder die SQL Server- oder SQL Managed-Instanz während der ersten Seedingphase neu gestartet oder fehlerhaft ist, wird das Seeding erneut gestartet.

Von Bedeutung

Die anfängliche Phase des Seedings kann bei extrem niedrigen Geschwindigkeiten oder stark beanspruchten Verbindungen Tage dauern. In diesem Fall kann beim Erstellen der Verbindung eine Zeitüberschreitung auftreten. Das Erstellen der Verbindung wird nach 6 Tagen automatisch abgebrochen.

Wenn Probleme mit einem Link auftreten, können Sie SQL Server Management Studio (SSMS), Transact-SQL (T-SQL), Azure PowerShell oder die Azure CLI verwenden, um Informationen zum aktuellen Status des Links abzurufen.

Verwenden Sie T-SQL für schnelle Statusdetails des Verknüpfungszustands, und verwenden Sie dann Azure PowerShell oder die Azure CLI, um umfassende Informationen zum aktuellen Status des Links zu erhalten.

Die Linküberwachung ist ab SQL Server Management Studio (SSMS) 21.0 (Vorschau) verfügbar.

Führen Sie die folgenden Schritte aus, um den Linkstatus in SSMS zu überprüfen:

  1. Stellen Sie eine Verbindung mit einem Replikat her, das den Link hosten soll.

  2. Erweitern Sie im Objekt-Explorer den Eintrag Hochverfügbarkeit mit Always On, und erweitern Sie dann Verfügbarkeitsgruppen.

  3. Klicken Sie mit der rechten Maustaste auf den Namen des Links, und wählen Sie dann "Eigenschaften " aus, um das Fenster " Verknüpfungseigenschaften " zu öffnen:

    Screenshot des Rechtsklick-Menüs in SSMS auf einem Link, wobei die Eigenschaften hervorgehoben sind.

  4. Im Fenster " Verknüpfungseigenschaften " werden nützliche Informationen zum Link angezeigt, z. B. Replikatinformationen, Linkstatus und Ablaufdatum des Endpunktzertifikats:

    Screenshot des Fensters

Der Wert replicaState beschreibt den aktuellen Link. Wenn der Zustand auch Error enthält, ist während des im Zustand aufgeführten Vorgangs ein Fehler aufgetreten. Beispielsweise gibt LinkCreationError an, dass beim Erstellen der Verknüpfung ein Fehler aufgetreten ist.

Einige mögliche replicaState-Werte sind:

  • CreatingLink: erstes Seeding
  • LinkSynchronizing: Die Datenreplikation wird durchgeführt.
  • LinkFailoverInProgress: Failover wird ausgeführt

Eine vollständige Liste der Verbindungsstatuseigenschaften erhalten Sie mit dem REST-API-Befehl Verteilte Verfügbarkeitsgruppen – GET.

Es gibt zwei verschiedene Kategorien von Fehlern, die beim Verwenden des Links auftreten können: Fehler, wenn Sie versuchen, den Link zu initialisieren, und Fehler, wenn Sie versuchen, den Link zu erstellen.

Der folgende Fehler kann beim Initialisieren eines Links auftreten (Linkstatus: LinkInitError):

  • Fehler 41962: Vorgang abgebrochen, da der Link innerhalb von 5 Minuten nicht hergestellt wurde. Überprüfen Sie die Netzwerkkonnektivität, und versuchen Sie es erneut.
  • Fehler 41973: Verbindung kann nicht hergestellt werden, da das Endpunktzertifikat von SQL Server nicht ordnungsgemäß in Azure SQL Managed Instance importiert wurde.
  • Fehler 41974: Verbindung kann nicht hergestellt werden, da das Endpunktzertifikat von der verwalteten SQL-Instanz nicht ordnungsgemäß in SQL Server importiert wurde.
  • Fehler 41976: Die Verfügbarkeitsgruppe reagiert nicht. Überprüfen Sie Namen und Konfigurationsparameter, und versuchen Sie es erneut.
  • Fehler 41986: Verknüpfung kann nicht hergestellt werden, da die Verbindung fehlgeschlagen ist oder das sekundäre Replikat nicht reagiert. Überprüfen Sie Namen, Konfigurationsparameter und Netzwerkkonnektivität, und versuchen Sie es dann erneut.
  • Fehler 47521: Verknüpfung kann nicht hergestellt werden, da der sekundäre Server die Anforderung nicht empfangen hat. Stellen Sie sicher, dass die Verfügbarkeitsgruppe und Datenbanken auf dem primären Server fehlerfrei sind, und versuchen Sie es erneut.

Die folgenden Fehler können beim Erstellen eines Links auftreten (Linkstatus: LinkCreationError):

  • Fehler 41977: Die Zieldatenbank reagiert nicht. Überprüfen Sie die Linkparameter, und versuchen Sie es erneut.

  • Vorzeitiges Kürzen des Protokolls: Wenn das Transaktionsprotokoll vor dem Ende des anfänglichen Seedings gekürzt wird, wird wahrscheinlich einer der folgenden Fehler angezeigt:

    • Fehler 1408: Die Remotekopie der Datenbank "%.*ls" wird nicht weit genug wiederhergestellt, um die Datenbankspiegelung zu aktivieren oder der Verfügbarkeitsgruppe beizutreten.
    • Fehler 1412: Für die Remotekopie der „%.*ls“-Datenbank wurde kein Rollforward bis zu einem Zeitpunkt ausgeführt, der in der lokalen Kopie des Datenbankprotokolls enthalten ist.

    Um dieses Problem zu beheben, müssen Sie den Link löschen und neu erstellen.
    Um dieses Problem zu vermeiden, unterbrechen Sie Transaktionsprotokollsicherungen auf SQL Server, damit die Datenbank während der ersten Seedingphase repliziert wird.

Inkonsistenter Zustand nach erzwungenem Failover

Nach einem erzwungenen Failover kann ein Split Brain-Szenario auftreten, bei dem sich beide Replikate in der primären Rolle befinden und die Verbindung in einem inkonsistenten Zustand bleibt. Dies kann passieren, wenn Sie während einer Katastrophe auf das sekundäre Replikat umschalten und das primäre Replikat wieder online geht.

Vergewissern Sie sich zunächst, dass Sie es sich um ein Split Brain-Szenario handelt. Dazu können Sie SQL Server Management Studio (SSMS) oder Transact-SQL (T-SQL) verwenden.

Stellen Sie eine Verbindung mit SQL Server und SQL Managed Instance in SSMS her, und erweitern Sie dann im Objekt-Explorer die Option Verfügbarkeitsreplikate unter dem Knoten Verfügbarkeitsgruppe in Hochverfügbarkeit mit Always On. Wenn zwei verschiedene Replikate als (Primary) aufgeführt werden, handelt es sich um ein Split Brain-Szenario.

Alternativ können Sie das folgende T-SQL-Skript sowohl auf SQL Server als auch auf SQL Managed Instance ausführen, um die Rolle der Replikas zu überprüfen.

-- 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

Wenn für beide Instanzen PRIMARY in der Spalte Verbindungsrolle steht, handelt es sich um ein Split Brain-Szenario.

Um den Split Brain-Zustand aufzuheben, führen Sie zuerst eine Sicherung des Replikats durch, das ursprünglich über die primäre Rolle verfügte. Wenn es sich bei der ursprünglichen primären Instanz um SQL Server handelt, führen Sie eine Sicherung des Protokollfragments durch. Wenn die ursprüngliche primäre Instanz eine Instanz von SQL Managed Instance war, führen Sie eine vollständige Kopiesicherung durch. Nachdem die Sicherung abgeschlossen ist, setzen Sie die verteilte Verfügbarkeitsgruppe auf die sekundäre Rolle für das Replikat fest, das ursprünglich die primäre Rolle innehatte, nun aber die neue sekundäre Rolle übernehmen wird.

Wenn Sie ein Failover Ihrer SQL Server-Arbeitsauslastung zu Azure SQL Managed Instance erzwungen haben und beabsichtigen, die Arbeitsauslastung weiterhin in SQL Managed Instance auszuführen, führen Sie bei einem tatsächlichen Notfall eine Sicherung des Protokollfragments auf SQL Server durch, und legen Sie dann wie im folgenden Beispiel für die verteilte Verfügbarkeitsgruppe die sekundäre Rolle auf SQL Server fest:

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

Führen Sie als Nächstes ein geplantes manuelles Failover von SQL Managed Instance zu SQL Server mithilfe des Links aus, z. B. das folgende Beispiel:

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

Abgelaufenes Zertifikat

Es ist möglich, dass das Zertifikat, das für den Link verwendet wird, abläuft. Wenn das Zertifikat abläuft, schlägt der Link fehl. Um dieses Problem zu beheben, erneuern Sie das Zertifikat.

Netzwerkkonnektivität testen

Bidirektionale Netzwerkkonnektivität zwischen SQL Server und SQL Managed Instance ist erforderlich, damit die Verbindung funktioniert. Nachdem Sie Ports auf der SQL Server-Seite geöffnet und eine NSG-Regel auf der Sql Managed Instance-Seite konfiguriert haben, testen Sie die Konnektivität entweder mithilfe von SQL Server Management Studio (SSMS) oder Transact-SQL.

Testen Sie das Netzwerk, indem Sie einen temporären SQL-Agent-Auftrag sowohl in SQL Server als auch in sql Managed Instance erstellen, um die Verbindung zwischen den beiden Instanzen zu überprüfen. Wenn Sie die Netzwerküberprüfung in SSMS verwenden, wird der Auftrag automatisch für Sie erstellt und nach Abschluss des Tests gelöscht. Sie müssen den SQL-Agent-Auftrag manuell löschen, wenn Sie Ihr Netzwerk mithilfe von T-SQL testen.

Anmerkung

Das Ausführen von PowerShell-Skripts durch den SQL Server-Agent unter SQL Server unter Linux wird derzeit nicht unterstützt, sodass es derzeit nicht möglich ist, Test-NetConnection aus dem SQL Server-Agent-Auftrag auf SQL Server unter Linux auszuführen.

Um den SQL-Agent zum Testen der Netzwerkkonnektivität zu verwenden, benötigen Sie die folgenden Anforderungen:

  • Die testende Person muss über Berechtigungen zum Erstellen eines Auftrags sowohl für SQL Server als auch für SQL Managed Instance verfügen – entweder als sysadmin oder mit der SQLAgentOperator-Rolle für msdb.
  • Der SQL Server-Agent-Dienst muss auf SQL Server ausgeführt werden. Da der Agent standardmäßig in SQL Managed Instance aktiviert ist, ist keine zusätzliche Aktion erforderlich.

Beachte Folgendes:

  • Um falsch negative Ergebnisse zu vermeiden, müssen alle Firewalls entlang des Netzwerkpfads Internet Control Message Protocol (ICMP)-Datenverkehr zulassen.
  • Um falsch positive Ergebnisse zu vermeiden, müssen alle Firewalls entlang des Netzwerkpfads Datenverkehr im proprietären SQL Server UCS-Protokoll zulassen. Das Blockieren des Protokolls kann zu einem erfolgreichen Verbindungstest führen, aber der Link kann nicht erstellt werden.
  • Erweiterte Firewall-Setups mit Schutzmaßnahmen auf Paketebene müssen korrekt konfiguriert werden, um den Datenverkehr zwischen SQL Server und SQL Managed Instance zu ermöglichen.

Führen Sie die folgenden Schritte aus, um die Netzwerkkonnektivität zwischen SQL Server und SQL Managed Instance in SSMS zu testen:

  1. Stellen Sie eine Verbindung mit der Instanz her, die als primäres Replikat in SSMS dient.

  2. Erweitern Sie im Objekt-Explorerdie Datenbanken, und klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie mit der sekundären Datenbank verknüpfen möchten. Wählen Sie Aufgaben>Azure SQL Managed Instance-Verbindung>Testverbindung aus, um den Assistenten für die Netzwerküberprüfung zu öffnen:

    Screenshot des Objekt-Explorers in SSMS mit ausgewähltem 'Verbindung testen' im Rechtsklick-Menü der Datenbankverknüpfung.

  3. Wählen Sie Weiter auf der Seite Einführung des Assistenten für die Netzwerküberprüfung aus.

  4. Wenn alle Anforderungen auf der Seite Voraussetzungen erfüllt sind, wählen Sie Weiter aus. Sorgen Sie andernfalls dafür, dass allen nicht erfüllten Voraussetzungen entsprochen wird, und wählen Sie dann Überprüfung erneut ausführen aus.

  5. Wählen Sie auf der Seite AnmeldenAnmelden aus, um eine Verbindung mit einer anderen Instanz herzustellen, die als sekundäres Replikat dient. Wählen Sie Weiter aus.

  6. Überprüfen Sie die Details auf der Seite "Netzwerkoptionen angeben" und geben Sie ggf. eine IP-Adresse an. Wählen Sie Weiter aus.

  7. Überprüfen Sie auf der Seite Ergebnisse die Aktionen, die der Assistent ausführt, und wählen Sie dann Fertig stellen aus, um die Verbindung zwischen den beiden Replikaten zu testen.

  8. Überprüfen Sie die Seite Ergebnisse, um die Konnektivität zwischen den beiden Replikaten zu überprüfen, und wählen Sie dann Schließen aus, um den Vorgang zu beenden.

Vorsicht

Fahren Sie mit den nächsten Schritten nur fort, wenn Sie die Netzwerkkonnektivität zwischen Ihrer Quell- und Zielumgebung überprüft haben. Andernfalls beheben Sie Probleme mit der Netzwerkkonnektivität, bevor Sie fortfahren.

Weitere Informationen zum Linkfeature finden Sie in den folgenden Ressourcen: