Wie synchronisiere ich SQL-Server Agent-Aufgaben zwischen dem primären und dem sekundären Host in meiner RDS-für-SQL-Server-Multi-AZ-Instance?

Lesedauer: 4 Minute
0

Ich möchte SQL-Server-Agent-Aufgaben zwischen dem primären und dem sekundären Host in meiner Amazon Relational Database (Amazon RDS) für Microsoft-SQL-Server-Multi-AZ-Instance synchronisieren. Wie gehe ich dafür vor?

Kurzbeschreibung

Amazon RDS for SQL Server verwendet Always On/Mirroring für das Multi-AZ-Setup hinter den Kulissen. Aufgaben des SQL-Server-Agents werden in der msdb-Systemdatenbank gespeichert. Diese Systemdatenbank wird im Rahmen Ihrer Multi-AZ-Bereitstellung nicht repliziert. Daher werden die Aufgaben des SQL-Server-Agents nicht automatisch synchronisiert. Sie müssen die Aufgaben auf dem neuen Primärserver nach dem Failover neu erstellen. Die Aufgaben befinden sich jedoch in der alten Primarvereinigung, in der sie ursprünglich geschaffen wurden. Wenn Sie ein Failback der Instance auf die vorherige primäre Instance durchführen (wo die Jobs ursprünglich erstellt wurden), werden die Aufgaben weiterhin angezeigt. Um die Jobs in Multi-AZ zu erstellen, erstellen Sie zuerst die Aufgaben in der primären (aktiven) Instance. Führen Sie dann ein Failover der RDS-Instance durch und erstellen Sie dieselben Aufgaben auf der neuen primären Instance.

Um zu vermeiden, dass Aufgaben auf dem neuen Primärserver manuell erstellt werden, aktivieren Sie die Aufgabenreplikation des SQL-Agents. Wenn die Auftragsreplikation in Ihrer Multi-AZ-Umgebung aktiviert ist, werden die SQL-Server-Agent-Aufgaben automatisch vom primären Host auf den sekundären Host kopiert. Sie müssen die Aufgaben nicht manuell auf dem neuen primären Replikat erstellen, da sie über die Agentreplikationsfunktion synchronisiert werden. Die Aufgaben sind in beiden Replikaten verfügbar.

Weitere Informationen finden Sie unter Multi-AZ-Bereitstellungen für Amazon RDS für Microsoft SQL Server.

Auflösung

SQL-Agent-Replikationsfunktion aktivieren

Führen Sie das folgende Verfahren mit dem Administratorkonto auf der primären Instance aus, um die Aufgabenreplikation des SQL-Server-Agents zu aktivieren.

Wichtiger Hinweis: Stellen Sie sicher, dass Sie dieses Verfahren auf der Instance ausführen, auf der alle Agentenaufträge verfügbar sind. Wenn die Instanz ohne die verfügbaren Agentenaufträge zur primären Instance wird und Sie diese Funktion aktivieren, werden alle Aufträge auf der sekundären Instance gelöscht. Beachten Sie auch, dass alle vorhandenen und neu erstellten Aufträge als Teil dieser Funktion repliziert werden.

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

Stellen Sie sicher, dass die SQL-Agent-Replikationsfunktion aktiviert ist

Verwenden Sie die folgende Abfrage, um zu überprüfen, ob die Replikationsfunktion aktiviert ist:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

Die vorhergehende 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 Sie, wann geändert und neue Jobs zuletzt mit dem sekundären synchronisiert wurden

Verwenden Sie die folgende Abfrage, um die last_sync_time der Replikation zu überprüfen:

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Wenn die Synchronisierungszeit in den Abfrageergebnissen nach der Aktualisierungs- oder Erstellungszeit des Auftrags liegt, wird der Job mit dem sekundären Job synchronisiert.

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

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.

Wenn Sie ein DB-Failover durchführen möchten, um zu bestätigen, dass die Aufträge repliziert wurden, warten Sie, bis last_sync_time aktualisiert wurde, bevor Sie mit dem Multi-AZ-Failover fortfahren.

Status der Aufträge auf der Sekundarstufe

Ein SQL Server Agent XP befindet sich im Status Deaktiviert, mit oder ohne Verwendung der Replikationsfunktion auf dem sekundären Replikat. Die Aufträge werden also nicht auf dem sekundären Server ausgeführt.

Unterstützte und nicht unterstützte ategorien für die Replikation von Agent-Aufgaben

Aufgaben in den folgenden Kategorien werden repliziert:

  • [Uncategorized (Lokal)]
  • [Uncategorized (Multi-Server)]
  • [Uncategorized]
  • Datenkollektor
  • Optimierungsberater für Datenbankmodule
  • Datenbank-Wartung
  • Volltext

Hinweis: Nur Aufgaben, 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 und PowerShell.
  • Aufgaben, die Database Mail und Objekte auf Serverebene verwenden.

Auftragsreplikation des SQL-Server-Agenten deaktivieren

Führen Sie den folgenden Befehl aus, um die Auftragsreplikation des SQL-Server-Agenten 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.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr