

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 für Amazon RDS
<a name="Appendix.SQLServer.CommonDBATasks.Agent"></a>

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](http://msdn.microsoft.com/en-us/library/ms189237) 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](#SQLServerAgent.Replicate).  
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 Support kontaktieren, um eine Erhöhung anzufordern. Öffnen Sie die Seite des [AWS Support-Centers](https://console.aws.amazon.com/support/home#/), 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:
+ Die Ausführung von Replikationsjobs und die Ausführung der Befehlszeilen-Skripts 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.
+ Derzeit unterstützt RDS für SQL Server die Verwendung von SQL-Server-Agent-Tokens nicht.

## Aktivieren der Auftragsreplikation von SQL Server Agent
<a name="SQLServerAgent.Replicate"></a>

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 für 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.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/SQLAgentJob.png)


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.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/SQLAgentJob_last_sync_time.png)


Wenn Sie auch die Replikation von `tempdb` 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 Parameter `@object_type` angeben:

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

Weitere Informationen über die `tempdb`-Replikation finden Sie unter [TempDB-Konfiguration für Multi-AZ-Bereitstellungen](SQLServer.TempDB.MAZ.md).

# Rollen von SQL Server Agent
<a name="SQLServerAgent.AgentRoles"></a>

RDS für SQL Server unterstützt die folgenden Rollen von SQL Server Agent mit unterschiedlichen Berechtigungsebenen für die Verwaltung von Aufgaben:
+ **SQLAgentUserRole**

  Berechtigungen
  + Eigene Aufträge, Zeitpläne und Operatoren erstellen und verwalten
  + Eigenschaften ihrer eigenen Aufträge und Zeitpläne anzeigen
  + Aufträge, die von anderen Benutzern erstellt wurden, können nicht angezeigt oder verwaltet werden

  Diese Rolle eignet sich für Benutzer, die ihre eigenen Aufträge erstellen und verwalten müssen, aber keinen Zugriff auf Aufträge benötigen, die von anderen Benutzern erstellt wurden.
+ **SQLAgentReaderRole**

  Berechtigungen
  + Alle Berechtigungen der SQLAgentUserRole
  + Liste aller Aufträge und Zeitpläne anzeigen, einschließlich derer, die von anderen erstellt wurden
  + Eigenschaften aller Aufträge anzeigen
  + Auftragshistorie einsehen

  Diese Rolle eignet sich für Benutzer, die den Status aller Aufträge überwachen, diese aber nicht verwalten müssen.
+ **SQLAgentOperatorRole**

  Berechtigungen
  + Alle Berechtigungen der SQLAgentUserRole und SQLAgentReaderRole
  + Aufträge ausführen, anhalten oder starten
  + Auftragshistorie verwalten
  + Aufträge und Zeitpläne aktivieren/deaktivieren
  + Operatoren und Proxys anzeigen

  Diese Rolle bietet die umfassendsten Berechtigungen und eignet sich für Benutzer, die die volle Kontrolle über alle Aufträge haben müssen.

Verwenden Sie den folgenden Befehl, um Ihrem SQL-Server-Anmeldenamen die Rollen zuzuweisen:

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## Verwalten der SQLAgentOperatorRole in RDS für SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Um die aktuellen Aufträge anzuzeigen, müssen Sie Ihrem SQL-Server-Anmeldenamen die Rolle SQLAgentOperatorRole hinzufügen und sie entfernen, bevor Sie die Verbindung zu Ihrer Datenbank trennen.

Gehen Sie wie folgt vor, um die Struktur von SQL Server Agent in SQL Server Management Studio zu visualisieren:

**Anzeigen von SQL Server Agent in SQL Server Management Studio (SSMS)**

1. Melden Sie sich mit den RDS-Hauptanmeldeinformationen bei der Instance von RDS SQL Server an und weisen Sie dem gewünschten Benutzer die SQLAgentUserRole zu.

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   Mit diesen Befehlen wird der Benutzer in der `msdb`-Datenbank erstellt, falls er nicht existiert. Außerdem wird der Benutzer zur SQLAgentUserRole hinzugefügt, sodass die Struktur von SQL Server Agent in SSMS sichtbar ist. Darüber hinaus werden dem Benutzer Änderungsberechtigungen für die SQLAgentOperatorRole gewährt. Auf diese Weise kann der Benutzer sich selbst zu dieser Rolle hinzufügen oder daraus entfernen. 

1. Um sich selbst zu der oben genannten Rolle hinzuzufügen, stellen Sie mit dem Benutzer, der die Aufträge sehen muss, eine Verbindung zur Instance von RDS SQL Server her und führen Sie das folgende Skript aus.

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   Danach klicken Sie mit der rechten Maustaste auf den Ordner **Aufträge** und wählen Sie **Aktualisieren**.

1. Wenn Sie diese Aktion ausführen, wird auf der Registerkarte **Aufträge** eine Schaltfläche mit einem Pluszeichen (**\$1**) angezeigt. Klicken Sie darauf, um die Liste der Aufträge für SQL Server Agent zu erweitern.

1. 
**Wichtig**  
Bevor Sie die Verbindung zur Instance von RDS SQL Server trennen, müssen Sie sich selbst aus der SQLAgentOperatorRole entfernen.

   Um Ihren Anmeldenamen aus der SQLAgentOperatorRole zu entfernen, führen Sie die folgende Abfrage aus, bevor Sie Management Studio trennen oder schließen:

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

Weitere Informationen finden Sie unter [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

# Hinzufügen eines Benutzers zur Rolle SQLAgentUser
<a name="SQLServerAgent.AddUser"></a>

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.

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

1. Fügen Sie den Benutzer`SQLAgentUserRole` 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 zur Rolle SQLAgentUser einen Benutzer hinzu**

1. Melden Sie sich als Hauptbenutzer an.

1. 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
<a name="SQLServerAgent.DeleteJob"></a>

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. Weitere Informationen finden Sie unter [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

**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';
  ```