GRANT (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Erteilt einem Prinzipal Berechtigungen für ein sicherungsfähiges Element. Das allgemeine Konzept ist .GRANT <some permission> ON <some object> TO <some user, login, or group>
Eine allgemeine Diskussion zu Berechtigungen finden Sie unter Berechtigungen (Datenbank-Engine).
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für SQL Server und Azure SQL-Datenbank
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ , ...n ] ) ] [ , ...n ]
[ ON [ class :: ] securable ] TO principal [ , ...n ]
[ WITH GRANT OPTION ] [ AS principal ]
Syntax für Azure Synapse Analytics und Parallel Data Warehouse und Microsoft Fabric.
GRANT
<permission> [ , ...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ , ...n ]
[ WITH GRANT OPTION ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumente
ALL
Diese Option ist als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität beibehalten. Sie gewährt nicht alle möglichen Berechtigungen. Die Gewährung ALL
entspricht der Gewährung der folgenden Berechtigungen.
Sicherungsfähig | Berechtigungen |
---|---|
Datenbank | BACKUP DATABASE , BACKUP LOG , CREATE DATABASE CREATE DEFAULT CREATE PROCEDURE CREATE FUNCTION , CREATE RULE , , , , und CREATE TABLE CREATE VIEW |
Skalarfunktion | EXECUTE und REFERENCES |
Tabellenwertfunktion | DELETE , INSERT , REFERENCES , SELECT und UPDATE |
Gespeicherte Prozedur | EXECUTE |
Tabelle | DELETE , INSERT , REFERENCES , SELECT und UPDATE |
Ansicht | DELETE , INSERT , REFERENCES , SELECT und UPDATE |
PRIVILEGES
Aus Gründen der Kompatibilität mit ISO eingeschlossen. Ändert nicht das Verhalten von ALL
.
permission
Der Name einer Berechtigung. Die gültigen Zuordnungen von Berechtigungen zu sicherungsfähigen Daten werden in den folgenden Abschnitten beschrieben.
column
Gibt den Namen einer Spalte in einer Tabelle an, für die Berechtigungen erteilt werden. Die Klammern (
und )
sind erforderlich.
class
Gibt die Klasse des sicherungsfähigen Elements an, für das die Berechtigung erteilt wird. Der Bereichsqualifizierer ::
ist erforderlich.
securable
Gibt das sicherungsfähige Element an, für das die Berechtigung erteilt wird.
TO principal
Der Name eines Prinzipals. Die Prinzipale, für die Berechtigungen für ein sicherungsfähiges Element erteilt werden können, sind abhängig vom jeweiligen sicherungsfähigen Element unterschiedlich. In den folgenden Abschnitten finden Sie gültige Kombinationen.
GRANT OPTION
Gibt an, dass der Empfänger die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.
AS principal
Verwenden Sie die AS <principal>
Klausel, um anzugeben, dass der Als Geber der Berechtigung aufgezeichnete Prinzipal ein anderer Prinzipal als die Person sein soll, die die Anweisung ausführt. Nehmen Wir beispielsweise an, dass der Benutzer Mary
einen principal_id
von 12
, und der Benutzer Raul
ist Prinzipal 15
. Mary führt jetzt aus, die sys.database_permissions
Tabelle gibt an, dass die grantor_prinicpal_id
Anweisung () obwohl 15
Raul
die Anweisung tatsächlich vom Benutzer 12
(Mary
) ausgeführt GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
wurde.
Die Verwendung der Klausel wird in der AS
Regel nur empfohlen, wenn Sie die Berechtigungskette explizit definieren müssen. Weitere Informationen finden Sie in der Zusammenfassung des Berechtigungsprüfungsalgorithmus.
Die Verwendung AS
in dieser Anweisung impliziert nicht die Fähigkeit, einen anderen Benutzer zu imitieren.
Hinweise
Die vollständige Syntax der GRANT
Anweisung ist komplex. Das vorherige Syntaxdiagramm wurde vereinfacht, um die Aufmerksamkeit auf seine Struktur zu lenken. Die vollständige Syntax zum Erteilen von Berechtigungen für bestimmte sicherungsfähige Elemente wird in den artikeln beschrieben, die weiter unten in diesem Artikel aufgeführt sind.
Die REVOKE
Anweisung kann verwendet werden, um erteilte Berechtigungen zu entfernen, und die DENY
Anweisung kann verwendet werden, um zu verhindern, dass ein Prinzipal eine bestimmte Berechtigung über eine .GRANT
Das Erteilen einer Berechtigung entfernt DENY
oder REVOKE
von dieser Berechtigung für die angegebene sicherungsfähige Berechtigung. Wenn dieselbe Berechtigung in einem höheren Bereich verweigert wird, der die sicherungsfähige Berechtigung enthält, hat dies DENY
Vorrang. Das Widerrufen der erteilten Berechtigung in einem höheren Bereich hat jedoch keine Vorrang.
Berechtigungen auf Datenbankebene werden innerhalb des Bereichs der angegebenen Datenbank erteilt. Wenn ein Benutzer Berechtigungen für Objekte in einer anderen Datenbank benötigt, erstellen Sie das Benutzerkonto in der anderen Datenbank oder erteilen dem Benutzerkonto Zugriff auf die aktuelle Datenbank und auf die andere Datenbank.
Achtung
Eine Tabellenebene DENY
hat keine Vorrang vor einer Spaltenebene GRANT
. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten. Dieses Element wird in einer späteren Version entfernt.
Die sp_helprotect
gespeicherte Systemprozedur meldet Berechtigungen für eine sicherungsfähige Datenbankebene.
In Microsoft Fabric CREATE USER
kann derzeit nicht explizit ausgeführt werden. Wenn GRANT
oder DENY
ausgeführt wird, wird der Benutzer automatisch erstellt.
WITH GRANT OPTION
Dies GRANT ... WITH GRANT OPTION
gibt an, dass der Sicherheitsprinzipal, der die Berechtigung erhält, über die Möglichkeit verfügt, anderen Sicherheitskonten die angegebene Berechtigung zu erteilen. Wenn der Prinzipal, der die Berechtigung erhält, eine Rolle oder eine Windows-Gruppe ist, muss die AS
Klausel verwendet werden, wenn die Objektberechtigung weiteren Benutzern gewährt werden muss, die keine Mitglieder der Gruppe oder Rolle sind. Da nur ein Benutzer anstelle einer Gruppe oder Rolle eine GRANT
Anweisung ausführen kann, muss ein bestimmtes Mitglied der Gruppe oder Rolle die AS
Klausel verwenden, um die Rolle oder Gruppenmitgliedschaft explizit aufzurufen, wenn die Berechtigung erteilt wird. Im folgenden Beispiel wird gezeigt, wie dies WITH GRANT OPTION
verwendet wird, wenn sie einer Rolle oder Einer Windows-Gruppe erteilt wird.
-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;
Diagramm der SQL Server-Berechtigungen
Ein Posterdiagramm mit allen Datenbank-Engine Berechtigungen im PDF-Format finden Sie unter https://aka.ms/sql-permissions-poster.
Berechtigungen
Der Grantor (oder der mit der AS
Option angegebene Prinzipal) muss entweder über die Berechtigung selbst GRANT OPTION
oder eine höhere Berechtigung verfügen, die die erteilte Berechtigung impliziert. Wenn Sie die AS
Option verwenden, gelten zusätzliche Anforderungen. Weitere Informationen hierzu finden Sie im Artikel zu sicherungsfähigen Elementen.
Objektbesitzer können Berechtigungen für die Objekte erteilen, die sie besitzen. Prinzipale mit CONTROL
Berechtigungen für eine sicherungsfähige Berechtigung können diese sicherungsfähigen Berechtigungen erteilen.
Berechtigungsempfänger CONTROL SERVER
, z. B. Mitglieder der festen Serverrolle sysadmin , können jede Berechtigung für alle sicherungsfähigen Elemente auf dem Server erteilen. Erteilte CONTROL
Berechtigungen für eine Datenbank, z. B. Mitglieder der db_owner festen Datenbankrolle, können jede Berechtigung für alle sicherungsfähigen Elemente in der Datenbank erteilen. Erteilte Berechtigungen CONTROL
für ein Schema können beliebige Berechtigungen für jedes Objekt innerhalb des Schemas erteilen.
Beispiele
In der folgenden Tabelle sind die sicherungsfähigen Elemente und Artikel aufgeführt, in denen die für sicherungsfähige Elemente spezifische Syntax beschrieben wird.