Teilen über


Feste Datenbankrollen des SQL Server-Agents

Gilt für: SQL Server Azure SQL Managed Instance

Wichtig

In Azure SQL Managed Instance werden derzeit die meisten, aber nicht alle, SQL Server-Agent-Features unterstützt. Details dazu finden Sie unter T-SQL-Unterschiede zwischen Azure SQL Managed Instance und SQL Server.

SQL Server verfügt über die folgenden festen Datenbankrollen für die msdb-Datenbank, mit denen Administrator*innen den Zugriff auf den SQL Server-Agent besser steuern können. In der folgenden Auflistung sind die Rollen von den niedrigsten bis hin zu den höchsten Zugriffsberechtigungen enthalten:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Wenn Benutzer*innen, die nicht Mitglied einer dieser Rollen sind, in SQL Server Management Studio mit SQL Server verbunden sind, wird der Knoten SQL Server-Agent im Objekt-Explorer nicht angezeigt. Ein Benutzer muss Mitglied einer dieser festen Datenbankrollen oder der festen Serverrolle sysadmin sein, um den SQL Server-Agent verwenden zu können.

Berechtigungen der festen Datenbankrollen des SQL Server-Agents

Die Berechtigungen der Datenbankrollen des SQL Server-Agents sind in Bezug zueinander konzentrisch. Mit anderen Worten: Rollen mit höheren Rechten erben die Berechtigungen von Rollen mit niedrigeren Rechten für Objekte des SQL Server-Agents (einschließlich Warnungen, Operatoren, Aufträgen, Zeitplänen und Proxys). Wenn z. B. Mitgliedern der Rolle SQLAgentUserRole mit den niedrigsten Rechten Zugriff auf proxy_A erteilt wurde, haben die Mitglieder von SQLAgentReaderRole und SQLAgentOperatorRole automatisch Zugriff auf diesen Proxy, obwohl ihnen der Zugriff auf proxy_A nicht ausdrücklich erteilt wurde. Das kann zu Sicherheitsrisiken führen, die in den folgenden Abschnitten zu den einzelnen Rollen erläutert werden.

Berechtigungen für SQLAgentUserRole

SQLAgentUserRole ist die feste Datenbankrolle des SQL Server-Agents mit den niedrigsten Berechtigungen. Sie hat lediglich Berechtigungen für Operatoren, lokale Aufträge und Auftragszeitpläne. Die Mitglieder von SQLAgentUserRole haben lediglich Berechtigungen für lokale Aufträge und Auftragszeitpläne, deren Besitzer sie sind. Sie können keine Multiserveraufträge (Master- und Zielserveraufträge) verwenden, und sie können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, die sie noch nicht besitzen. Die Mitglieder von SQLAgentUserRole können lediglich im Dialogfeld Auftragsschritt-Eigenschaften von SQL Server Management Studio eine Liste mit vorhandenen Proxys anzeigen. Nur der Knoten Aufträge im Objekt-Explorer von SQL Server Management Studio ist für die Mitglieder von SQLAgentUserRole sichtbar.

Wichtig

SQLAgentReaderRole und SQLAgentOperatorRole sind automatisch Mitglieder von SQLAgentUserRole. Dies bedeutet, dass die Mitglieder von SQLAgentReaderRole und SQLAgentOperatorRole Zugriff auf alle SQL Server-Agent-Proxys haben, denen SQLAgentUserRole erteilt wurde und die diese Proxys verwenden können.

Die folgende Tabelle enthält einen Überblick über die SQLAgentUserRole-Berechtigungen für SQL Server-Agent-Objekte.

Aktion Operatoren Lokale Aufträge (nur eigene Aufträge) Auftragszeitpläne (nur eigene Zeitpläne) Proxys
Erstellen/Ändern/Löschen Nein Ja

Der Auftragsbesitz lässt sich nicht ändern.
Ja Nein
Liste anzeigen (aufzählen) Ja

Die Liste mit verfügbaren Operatoren kann zur Nutzung in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
Ja Ja Ja

Die Liste der Proxys steht nur im Dialogfeld Auftragsschritt-Eigenschaften von Management Studio zur Verfügung.
Aktivieren/Deaktivieren Nein Ja Ja Nicht zutreffend
Eigenschaften anzeigen Nein Ja Ja Nein
Ausführen/Beenden/Starten Nicht zutreffend Ja Nicht zutreffend Nicht zutreffend
Auftragsverlauf anzeigen Nicht zutreffend Ja Nicht zutreffend Nicht zutreffend
Auftragsverlauf löschen Nicht zutreffend No

Den Mitgliedern von SQLAgentUserRole muss die Berechtigung EXECUTE für sp_purge_jobhistory zum Löschen des Auftragsverlaufs für Aufträge, deren Besitzer sie sind, ausdrücklich erteilt werden. Den Auftragsverlauf für andere Aufträge können sie nicht löschen.
Nicht zutreffend Nicht zutreffend
Anfügen/Trennen Nicht verfügbar Nicht zutreffend Ja Nicht zutreffend

Berechtigungen für SQLAgentReaderRole

SQLAgentReaderRole enthält alle SQLAgentUserRole-Berechtigungen sowie die Berechtigungen zum Anzeigen der Liste verfügbarer Multiserveraufträge, ihrer Eigenschaften und ihres Verlaufs. Die Mitglieder dieser Rolle können auch die Liste aller verfügbaren Aufträge und Auftragszeitpläne sowie ihre Eigenschaften anzeigen, nicht nur die Aufträge und Auftragszeitpläne, deren Besitzer sie sind. Die Mitglieder vonSQLAgentReaderRole können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, die sie noch nicht besitzen. Nur der Knoten Aufträge im Objekt-Explorer von SQL Server Management Studio ist für die Mitglieder von SQLAgentReaderRole sichtbar.

Wichtig

Die Mitglieder von SQLAgentReaderRole sind automatisch auch Mitglieder von SQLAgentUserRole. Dies bedeutet, dass die Mitglieder von SQLAgentReaderRole Zugriff auf alle SQL Server-Agent-Proxys haben, denen SQLAgentUserRole erteilt wurde und die diese Proxys verwenden können.

Die folgende Tabelle enthält einen Überblick über die SQLAgentReaderRole-Berechtigungen für SQL Server-Agent-Objekte.

Aktion Operatoren Lokale Aufträge Multiserveraufträge Auftragszeitpläne Proxys
Erstellen/Ändern/Löschen Nein Ja (nur Aufträge mit Besitzer)

Der Auftragsbesitz lässt sich nicht ändern.
No Ja (nur Zeitpläne mit Besitzer) No
Liste anzeigen (aufzählen) Ja

Die Liste mit verfügbaren Operatoren kann zur Nutzung in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
Ja Ja Ja Ja

Die Liste der Proxys steht nur im Dialogfeld Auftragsschritt-Eigenschaften von Management Studio zur Verfügung.
Aktivieren/Deaktivieren Nein Ja (nur Aufträge mit Besitzer) No Ja (nur Zeitpläne mit Besitzer) Nicht zutreffend
Eigenschaften anzeigen Nein Ja Ja Ja Nein
Eigenschaften bearbeiten Nein Ja (nur Aufträge mit Besitzer) No Ja (nur Zeitpläne mit Besitzer) No
Ausführen/Beenden/Starten Nicht zutreffend Ja (nur Aufträge mit Besitzer) Nein Nicht zutreffend Nicht zutreffend
Auftragsverlauf anzeigen Nicht zutreffend Ja Ja Nicht zutreffend Nicht zutreffend
Auftragsverlauf löschen Nicht zutreffend No

Den Mitgliedern von SQLAgentReaderRole muss die Berechtigung EXECUTE für sp_purge_jobhistory zum Löschen des Auftragsverlaufs für Aufträge, deren Besitzer sie sind, ausdrücklich erteilt werden. Den Auftragsverlauf für andere Aufträge können sie nicht löschen.
No Nicht zutreffend Nicht zutreffend
Anfügen/Trennen Nicht verfügbar Nicht verfügbar Nicht zutreffend Ja (nur Zeitpläne mit Besitzer) Nicht zutreffend

Berechtigungen für SQLAgentOperatorRole

SQLAgentOperatorRole ist die feste Datenbankrolle des SQL Server-Agents mit den höchsten Berechtigungen. Sie enthält alle Berechtigungen von SQLAgentUserRole und SQLAgentReaderRole. Die Mitglieder dieser Rolle können auch die Eigenschaften für Operatoren und Proxys anzeigen und die verfügbaren Proxys und Warnungen auf dem Server aufzählen.

Die Mitglieder von SQLAgentOperatorRole haben zusätzliche Berechtigungen für lokale Aufträge und Zeitpläne. Sie können alle lokalen Aufträge ausführen, beenden oder starten, und sie können den Auftragsverlauf eines lokalen Auftrags auf dem Server löschen. Sie können auch alle lokalen Aufträge und Zeitpläne auf dem Server aktivieren und deaktivieren. Um lokale Aufträge oder Zeitpläne zu aktivieren oder zu deaktivieren, müssen die Mitglieder dieser Rolle die gespeicherten Prozeduren sp_update_job und sp_update_schedule verwenden. Nur die Parameter, die den Namen oder den Bezeichner des Auftrags oder Zeitplans sowie den @enabled -Parameter angeben, können von den Mitgliedern von SQLAgentOperatorRoleeine Liste mit vorhandenen Proxys anzeigen. Wenn sie andere Parameter angeben, erzeugt die Ausführung dieser gespeicherten Prozeduren einen Fehler. Die Mitglieder von SQLAgentOperatorRole können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, die sie noch nicht besitzen.

Die Knoten Aufträge, Warnungen, Operatoren und Proxys im Objekt-Explorer von SQL Server Management Studio sind für die Mitglieder von SQLAgentOperatorRole sichtbar. Nur der Knoten Fehlerprotokolle ist für die Mitglieder dieser Rolle nicht sichtbar.

Wichtig

Die Mitglieder von SQLAgentOperatorRole sind automatisch auch Mitglieder von SQLAgentUserRole und SQLAgentReaderRole. Dies bedeutet, dass die Mitglieder von SQLAgentOperatorRole Zugriff auf alle SQL Server-Agent-Proxys haben, denen SQLAgentUserRole oder SQLAgentReaderRole erteilt wurde und die diese Proxys verwenden können.

Die folgende Tabelle enthält einen Überblick über die SQLAgentOperatorRole-Berechtigungen für SQL Server-Agent-Objekte.

Aktion Alerts Operatoren Lokale Aufträge Multiserveraufträge Auftragszeitpläne Proxys
Erstellen/Ändern/Löschen Nein Nein Ja (nur Aufträge mit Besitzer)

Der Auftragsbesitz lässt sich nicht ändern.
No Ja (nur Zeitpläne mit Besitzer) No
Liste anzeigen (aufzählen) Ja Ja

Die Liste mit verfügbaren Operatoren kann zur Nutzung in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
Ja Ja Ja Ja
Aktivieren/Deaktivieren Nein Nein Ja

Mitglieder von SQLAgentOperatorRole können lokale Aufträge, deren Besitzer sie nicht sind, aktivieren oder deaktivieren, indem sie die gespeicherte Prozedur sp_update_job verwenden und Werte für die Parameter @enabled und @job_id (oder @job_name) angeben. Wenn ein Mitglied dieser Rolle einen anderen Parameter für diese gespeicherte Prozedur angibt, schlägt die Ausführung der Prozedur fehl.
No Ja

Mitglieder von SQLAgentOperatorRole können Zeitpläne, deren Besitzer sie nicht sind, aktivieren oder deaktivieren, indem sie die gespeicherte Prozedur sp_update_schedule verwenden und Werte für die Parameter @enabled und @schedule_id (oder @name) angeben. Wenn ein Mitglied dieser Rolle einen anderen Parameter für diese gespeicherte Prozedur angibt, schlägt die Ausführung der Prozedur fehl.
Nicht zutreffend
Eigenschaften anzeigen Ja Ja Ja Ja Ja Ja
Eigenschaften bearbeiten Nein Nein Ja (nur Aufträge mit Besitzer) No Ja (nur Zeitpläne mit Besitzer) No
Ausführen/Beenden/Starten Nicht zutreffend Nicht zutreffend Ja Nr. Nicht zutreffend Nicht zutreffend
Auftragsverlauf anzeigen Nicht zutreffend Nicht zutreffend Ja Ja Nicht zutreffend Nicht zutreffend
Auftragsverlauf löschen Nicht zutreffend Nicht zutreffend Ja Nr. Nicht zutreffend Nicht zutreffend
Anfügen/Trennen Nicht verfügbar Nicht verfügbar Nicht verfügbar Nicht zutreffend Ja (nur Zeitpläne mit Besitzer) Nicht zutreffend

Zuweisen mehrerer Rollen zu Benutzer*innen

Mitglieder der festen Serverrolle sysadmin haben Zugriff auf alle SQL Server-Agent-Funktionen. Wenn ein Benutzer nicht Mitglied der sysadmin-Rolle ist, aber mehr als einer festen Datenbankrolle des SQL Server-Agents angehört, sollten Sie unbedingt an das konzentrische Berechtigungsmodell dieser Rollen denken. Da die Rollen mit höheren Berechtigungen immer alle Berechtigungen der Rollen mit niedrigeren Berechtigungen enthalten, hat ein Benutzer, der Mitglied von mehreren Rollen ist, automatisch die Berechtigungen der Rolle mit den höchsten Berechtigungen, deren Mitglied der Benutzer ist.