Verwenden von SQL Server Agent - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von SQL Server Agent

Mit Amazon RDS können Sie SQL Server Agent in einer DB-Instance verwenden, in der Microsoft SQL Enterprise Edition, Standard Edition oder Web Edition ausgeführt wird. SQL Server Agent ist ein Service von Microsoft Windows für die Ausführung geplanter administrativer Aufgaben, so genannte Jobs. Sie können SQL Server Agent für die Ausführung von T-SQL-Jobs für den erneuten Aufbau von Indizes, die Ausführung von Beschädigungsprüfungen und für die Zusammenfassung von Daten in einer SQL Server-DB-Instance verwenden.

Wenn Sie eine SQL-Server-DB-Instance erstellen, wird der Hauptbenutzer mit der Rolle SQLAgentUserRole registriert.

SQL Server Agent kann einen Job nach Plan, als Antwort auf ein bestimmtes Ereignis oder auf Abruf ausführen. Weitere Informationen finden Sie unter SQL Server Agent in der Microsoft-Dokumentation.

Anmerkung

Vermeiden Sie es, Jobs zu planen, die während der Wartungs- und Backup-zeitfenster für Ihre DB-Instance ausgeführt werden. Die Wartungs- und Backup-Prozesse, die von AWS gestartet werden, könnten einen Job unterbrechen oder dazu führen, dass er abgebrochen wird.

In Multi-AZ-Bereitstellungen werden Aufträge von SQL Server Agent vom primären Host auf den sekundären Host repliziert, wenn die Auftragsreplikationsfunktion aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Auftragsreplikation von SQL Server Agent.

Multi-AZ-Bereitstellungen haben ein Limit von 10.000 SQL-Server-Agent-Aufträgen. Wenn Sie ein höheres Limit benötigen, können Sie AWS Support kontaktieren, um eine Erhöhung anzufordern. Öffnen Sie die Seite des AWS Support-Centers, melden Sie sich an und wählen Sie Fall erstellen aus. Wählen Sie Service Limit increase (Erhöhung des Servicelimits). Füllen Sie das Formular aus und senden Sie es ab.

Um den Verlauf eines einzelnen SQL Server Agent-Auftrags in SQL Server Management Studio (SSMS) anzuzeigen, öffnen Sie den Objektexplorer, klicken mit der rechten Maustaste auf den Auftrag und wählen dann View History (Verlauf anzeigen).

Da der SQL Server-Agent auf einem verwalteten Host in einer DB-Instance ausgeführt wird, werden einige Aktionen nicht unterstützt:

  • Das Ausführen von Replikationsaufträgen und das Ausführen von Befehlszeilenskripten mithilfe von ActiveX , Windows Command Shell oder Windows PowerShell werden nicht unterstützt.

  • Sie können SQL Server-Agent nicht manuell starten, stoppen oder neu starten.

  • E-Mail-Benachrichtigungen über SQL Server Agent sind von einer DB-Instance aus nicht verfügbar.

  • Warnungen und Operatoren von SQL Server-Agenten werden nicht unterstützt.

  • Die Verwendung von SQL Server-Agent zum Erstellen von Backups wird nicht unterstützt. Verwenden Sie Amazon RDS, um Ihre DB-Instance zu sichern.

Aktivieren der Auftragsreplikation von SQL Server Agent

Sie können die Auftragsreplikation von SQL Server Agent mithilfe der folgenden gespeicherten Prozedur aktivieren:

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

Sie können die gespeicherte Prozedur in allen SQL-Server-Versionen ausführen, die von Amazon RDS for SQL Server unterstützt werden. Es werden Aufträge in den folgenden Kategorien repliziert:

  • [Uncategorized (Local)]

  • [Uncategorized (Multi-Server)]

  • [Uncategorized]

  • Datenauflister

  • Database Engine Tuning Advisor

  • Datenbankwartung

  • Volltext

Es werden nur Aufträge, die T-SQL-Auftragsschritte verwenden, repliziert. Aufträge mit Schritttypen wie SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), Replikation und PowerShell werden nicht repliziert. Aufträge, die Datenbank-E-Mail und Objekte auf Serverebene verwenden, werden nicht repliziert.

Wichtig

Der primäre Host ist die Informationsquelle für die Replikation. Stellen Sie vor dem Aktivieren der Auftragsreplikation sicher, dass sich Ihre SQL-Server-Agent-Aufträge auf dem primären Host befinden. Andernfalls werden Ihre SQL-Server-Agent-Aufträge ggf. gelöscht, wenn Sie die Funktion aktivieren und sich neuere Aufträge auf dem sekundären Host befinden.

Sie können die folgende Funktion verwenden, um zu überprüfen, ob die Replikation aktiviert ist.

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

Die T-SQL-Abfrage gibt Folgendes zurück, wenn die Aufträge von SQL Server Agent repliziert werden. Wenn sie nicht repliziert werden, wird für object_class kein Wert zurückgegeben.


                    Aufträge von SQL Server Agent werden repliziert.

Sie können die folgende Funktion verwenden, um zu ermitteln, wann Objekte zuletzt synchronisiert (UTC) wurden.

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Angenommen, Sie ändern einen Auftrag von SQL Server Agent um 01:00 Uhr. Sie erwarten, dass die letzte Synchronisationszeit nach 01:00 Uhr liegt, was darauf hinweist, dass die Synchronisation stattgefunden hat.

Nach der Synchronisation wird erwartet, dass die für date_created und date_modified auf dem sekundären Knoten zurückgegebenen Werte übereinstimmen.


                    Serverobjekte wurden zuletzt um 01:21:23 Uhr synchronisiert.

Wenn Sie auch tempdb die Replikation verwenden, können Sie die Replikation sowohl für SQL-Agent-Aufträge als auch für die tempdb Konfiguration aktivieren, indem Sie sie im @object_type Parameter angeben:

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

Weitere Informationen zur tempdb Replikation finden Sie unter TempDB-Konfiguration für Multi-AZ-Bereitstellungen.

Hinzufügen eines Benutzers zur SQL-AgentUser Rolle

Damit eine zusätzliche Anmeldung oder ein zusätzlicher Benutzer SQL Server Agent verwenden kann, müssen Sie sich als Hauptbenutzer anmelden und wie folgt vorgehen:

  1. Erstellen Sie mithilfe des Befehls CREATE LOGIN eine weitere Anmeldung auf Serverebene.

  2. Erstellen Sie mithilfe des Befehls msdb einen Benutzer in CREATE USER und verknüpfen Sie dann diesen Benutzer mit der Anmeldung, die Sie im vorherigen Schritt erstellt haben.

  3. Fügen Sie den BenutzerSQLAgentUserRole mit der gespeicherten Systemprozedur sp_addrolemember hinzu.

Nehmen wir beispielsweise an, Ihr Hauptbenutzername lautet admin und Sie möchten einem Benutzer mit dem Namen theirname und dem Passwort theirpassword den Zugriff auf SQL Server Agent erlauben. In diesem Fall können Sie das folgende Verfahren verwenden.

So fügen Sie der SQL-AgentUser Rolle einen Benutzer hinzu
  1. Melden Sie sich als Hauptbenutzer an.

  2. Führen Sie die folgenden Befehle aus:

    --Initially set context to master database USE [master]; GO --Create a server-level login named theirname with password theirpassword CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword'; GO --Set context to msdb database USE [msdb]; GO --Create a database user named theirname and link it to server-level login theirname CREATE USER [theirname] FOR LOGIN [theirname]; GO --Added database user theirname in msdb to SQLAgentUserRole in msdb EXEC sp_addrolemember [SQLAgentUserRole], [theirname];

Löschen eines SQL Server-Agent-Jobs

Sie verwenden die gespeicherte Prozedur sp_delete_job, um SQL Server-Agent-Jobs auf Amazon RDS für Microsoft SQL Server zu löschen.

Sie können SSMS nicht verwenden, um SQL Server-Agent-Jobs zu löschen. Falls Sie dies versuchen, erhalten Sie eine Fehlermeldung ähnlich der folgenden:

The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.

Als verwalteter Service ist RDS von der Ausführung von Prozeduren ausgeschlossen, die auf die Windows-Registrierung zugreifen. Wenn Sie SSMS verwenden, versucht es, einen Prozess (xp_regread) auszuführen, für den RDS nicht autorisiert ist.

Anmerkung

Bei RDS für SQL Server dürfen nur Mitglieder der sysadmin-Rolle Jobs aktualisieren oder löschen, die einem anderen Anmeldenamen gehören.

So löschen Sie einen SQL Server-Agent-Job
  • Führen Sie die folgende T-SQL-Anweisung aus:

    EXEC msdb..sp_delete_job @job_name = 'job_name';