Wie synchronisiere ich SQL-Server-Agent-Aufträge zwischen den primären und sekundären Hosts in meiner Instance des Typs RDS für SQL Server Multi-AZ?

Lesedauer: 4 Minute
0

Ich habe eine Amazon Relational Database (Amazon RDS)-Instance des Typs RDS für Microsoft SQL Server Multi-AZ. Ich möchte Aufträge in SQL Server Agent zwischen den primären und sekundären Hosts in meiner Instance synchronisieren.

Kurzbeschreibung

Amazon RDS für SQL Server verwendet „Immer aktiviert“/Spiegelung für die Multi-AZ-Einrichtung hinter den Kulissen. SQL Server Agent speichert Aufträge in der MSDB-Systemdatenbank. Diese Systemdatenbank wird im Rahmen einer Multi-AZ-Bereitstellung nicht repliziert. Die Aufträge in SQL Server Agent werden daher nicht automatisch synchronisiert. Nach dem Failover müssen Sie die Aufträge auf dem neuen Primärserver neu erstellen. Die Aufträge befinden sich jedoch in der alten Primärdatenbank, in der Sie sie ursprünglich erstellt haben. Wenn Sie für die Instance ein Failback zur vorherigen Primärinstance durchführen (in der Sie die Aufträge erstellt haben), werden die Aufträge weiterhin angezeigt. Um die Aufträge in Multi-AZ zu erstellen, erstellen Sie sie zuerst in der primären (aktiven) Instance. Führen Sie dann ein Failover für die RDS-Instance durch und erstellen Sie dieselben Aufträge auf der neuen primären Instance.

Um die manuelle Erstellung von Aufträgen auf der neuen Primärinstance zu umgehen, aktivieren Sie die Auftragsreplikation von SQL Server Agent. Wenn Sie die Auftragsreplikation in Ihrer Multi-AZ-Umgebung aktivieren, kopiert SQL Server Agent Aufträge automatisch vom primären Host auf den sekundären Host. Sie müssen die Aufträge dann nicht manuell auf dem neuen primären Replikat erstellen, da sie über die Replikationsfunktion von Server Agent synchronisiert wurden. Die Aufträge sind in beiden Replikaten verfügbar.

Weitere Informationen finden Sie unter Multi-AZ deployments for Amazon RDS for Microsoft SQL Server.

Hinweis: Die folgende Lösung ist nicht auf Amazon RDS Custom für SQL Server anwendbar.

Lösung

Aktivieren der SQL-Agent-Replikationsfunktion

Um die Auftragsreplikation von SQL Server Agent zu aktivieren, führen Sie das folgende Verfahren mit dem Administratorkonto auf der Primärinstance aus:

Wichtig: Führen Sie dieses Verfahren auf der Instance aus, auf der alle Agentenaufträge verfügbar sind. Wenn die Instance ohne die verfügbaren Agentenaufträge zur primären Instance wird und Sie diese Funktion aktivieren, werden Aufträge auf der sekundären Instance gelöscht. Außerdem werden alle vorhandenen und neu erstellten Aufträge im Rahmen dieser Funktion repliziert.

EXECUTE msdb.dbo.rds_set_system_database_sync_objects
@object_types = 'SQLAgentJob';

Sicherstellen, dass die Replikationsfunktion von SQL Agent aktiviert ist

Vergewissern Sie sich, dass die Replikationsfunktion aktiviert ist:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

Diese Abfrage gibt SQLagentjob für object_class zurück, wenn die Replikationsfunktion aktiviert ist. Wenn die Abfrage nichts zurückgibt, ist die Funktion nicht aktiviert.

Überprüfen, wann geänderte und neue Aufträge zuletzt mit der sekundären Instance synchronisiert wurden

Überprüfen Sie die last_sync_time der Replikation:

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Wenn die Synchronisierungszeit in den Ergebnissen der Abfrage die Aktualisierungs- oder Erstellungszeit des Auftrags überschritten hat, wird der Auftrag mit der sekundären Instance synchronisiert.

Hinweis: Wenn Sie den Zeitpunkt der Auftragserstellung oder -aktualisierung nicht kennen, führen Sie zunächst die folgende Abfrage aus, um den Zeitstempel abzurufen:

select name as 'JobName'
,JobStatus = CASE
    When enabled =1 Then 'Active'
    Else 'Inactive'
    END
,date_created As 'JobCreatedOn' ,date_modified as 'LastModified'
from msdb..sysjobs

Hinweis: Es dauert einige Minuten, bis die Aufträge zwischen den Replikaten synchronisiert sind.

Um ein DB-Failover durchzuführen und zu bestätigen, dass die Aufträge repliziert werden, warten Sie zuerst auf die Aktualisierung der last_sync_time. Fahren Sie dann mit dem Multi-AZ-Failover fort.

Unterstützte und nicht unterstützte Auftragskategorien für die Agent-Auftragsreplikation

Aufträge in den folgenden Kategorien werden repliziert:

  • [Uncategorized (Local)]
  • [Uncategorized (Multi-Server)]
  • [Uncategorized]
  • Datensammler
  • Datenbank-Engine-Optimierungsratgeber
  • Wartung der Datenbank
  • Volltext

Hinweis: Nur Jobs, die den Schritttyp als T-SQL verwenden, werden repliziert.

Die folgenden Kategorien unterstützen keine Replikation:

  • Aufträge mit Schritttypen wie SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), Replikation oder PowerShell
  • Aufträge, die Datenbank-E-Mail und Objekte auf Serverebene verwenden

Ausschalten der Auftragsreplikation in SQL Server Agent

Führen Sie den folgenden Befehl aus, um die Auftragsreplikation in SQL Server Agent zu deaktivieren:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = '';

Nachdem Sie die Replikation deaktiviert haben, werden Änderungen an vorhandenen und neu erstellten Aufträgen nicht mehr mit dem anderen Replikat synchronisiert.