GRANT (Objektberechtigungen) (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Analyseendpunkt in Microsoft Fabric Warehouse in Microsoft Fabric SQL-Datenbank in Microsoft Fabric
Erteilt Berechtigungen für eine Tabelle, Sicht, Tabellenwertfunktion, gespeicherte Prozedur, erweiterte gespeicherte Prozedur, Skalarfunktion, Aggregatfunktion, Dienstwarteschlange oder für ein Synonym.
Transact-SQL-Syntaxkonventionen
Syntax
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column_name [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column_name [ ,...n ] ) ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Argumente
permission
Gibt eine Berechtigung an, die für Objekte, die Schemas als Bereiche besitzen, erteilt werden kann. Eine Liste der Berechtigungen finden Sie in den Hinweisen.
ALL
Mit ALL werden nicht alle möglichen Berechtigungen erteilt. Das Erteilen von Berechtigungen mit ALL entspricht dem Erteilen aller ANSI-92-Berechtigungen, die für das angegebene Objekt gelten. Die Bedeutung von ALL variiert wie folgt:
- Berechtigungen für Skalarwertfunktion: EXECUTE, REFERENCES.
- Berechtigungen für Tabellenwertfunktion: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Berechtigungen für gespeicherte Prozeduren: EXECUTE.
- Tabellenberechtigungen: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Berechtigungen anzeigen: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
Achtung
Die ALL-Berechtigung ist als veraltet markiert und wird nur aus Kompatibilitätsgründen beibehalten.
PRIVILEGES
Dient zur Kompatibilität mit ANSI-92. Ändert das Verhalten von ALL nicht.
column_name
Gibt den Namen einer Spalte in einer Tabelle, Sicht oder Tabellenwertfunktion an, für die die Berechtigung erteilt wird. Die Klammern () sind erforderlich. Für eine Spalte können nur die Berechtigungen SELECT, REFERENCES, UPDATE und UNMASK gewährt werden. column_name kann in der Berechtigungsklausel oder nach dem Namen des sicherungsfähigen Elements angegeben werden.
Achtung
Eine DENY-Anweisung auf Tabellenebene hat keinen Vorrang vor einer GRANT-Anweisung auf Spaltenebene. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten.
ON [ OBJECT :: ] [ schema_name ] . object_name
Gibt das Objekt an, für das die Berechtigung erteilt wird. Der OBJECT-Ausdruck ist optional, wenn schema_name angegeben ist. Wird der OBJECT-Ausdruck verwendet, ist der Bereichsqualifizierer (::) erforderlich. Wenn schema_name nicht angegeben ist, wird das Standardschema verwendet. Wenn schema_name angegeben ist, ist der Schemabereichsqualifizierer (.) erforderlich.
TO <database_principal>
Gibt den Prinzipal an, für den die Berechtigung erteilt wird.
WITH GRANT OPTION
Gibt an, dass der Prinzipal die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.
AS <Datenbankprinzipal>
Gibt einen Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, sein Recht zum Erteilen der Berechtigung ableitet.
Database_user
Gibt einen Datenbankbenutzer an.
Database_role
Gibt eine Datenbankrolle an.
Application_role
Gibt eine Anwendungsrolle an.
Database_user_mapped_to_Windows_User
Gibt einen Datenbankbenutzer an, der einem Windows-Benutzer zugeordnet ist.
Database_user_mapped_to_Windows_Group
Gibt einen Datenbankbenutzer an, der einer Windows-Gruppe zugeordnet ist.
Database_user_mapped_to_certificate
Gibt einen Datenbankbenutzer an, der einem Zertifikat zugeordnet ist.
Database_user_mapped_to_asymmetric_key
Gibt einen Datenbankbenutzer an, der einem asymmetrischen Schlüssel zugeordnet ist.
Database_user_with_no_login
Gibt einen Datenbankbenutzer ohne entsprechenden Prinzipal auf Serverebene an.
Bemerkungen
Wichtig
Durch eine Kombination von ALTER
- und REFERENCE
-Berechtigungen würde in manchen Fällen zugelassen, dass der Empfänger Daten anzeigt oder Funktionen ausführt, für die er nicht autorisiert ist. Beispiel: Ein Benutzer mit ALTER
-Berechtigung für eine Tabelle und REFERENCE
-Berechtigung für eine Funktion kann eine berechnete Spalte für eine Funktion erstellen und ausführen lassen. In diesem Fall benötigt der Benutzer auch die SELECT
-Berechtigung für die berechnete Spalte.
Informationen zu Objekten werden in unterschiedlichen Katalogsichten angezeigt. Weitere Informationen finden Sie unter Katalogsichten für Objekte (Transact-SQL).
Ein Objekt ist ein sicherungsfähiges Element auf Schemaebene in dem Schema, das das übergeordnete Element in der Berechtigungshierarchie ist. Die spezifischsten und restriktivsten Berechtigungen, die für ein Objekt erteilt werden können, sind unten aufgeführt. Auch die allgemeineren Berechtigungen sind aufgeführt, die diese implizit enthalten.
Objektberechtigung | Impliziert durch die Objektberechtigung | Impliziert durch die Schemaberechtigung |
---|---|---|
ALTER |
CONTROL |
ALTER |
CONTROL |
CONTROL |
CONTROL |
DELETE |
CONTROL |
DELETE |
EXECUTE |
CONTROL |
EXECUTE |
INSERT |
CONTROL |
INSERT |
RECEIVE |
CONTROL |
CONTROL |
REFERENCES |
CONTROL |
REFERENCES |
SELECT |
RECEIVE |
SELECT |
TAKE OWNERSHIP |
CONTROL |
CONTROL |
UPDATE |
CONTROL |
UPDATE |
VIEW CHANGE TRACKING |
CONTROL |
VIEW CHANGE TRACKING |
VIEW DEFINITION |
CONTROL |
VIEW DEFINITION |
Berechtigungen
Der Berechtigende (oder der mit der AS-Option angegebene Prinzipal) benötigt entweder die Berechtigung selbst mit GRANT OPTION
oder eine höhere Berechtigung, die die erteilte Berechtigung impliziert.
Falls die AS-Option verwendet wird, gelten die folgenden zusätzlichen Anforderungen.
AS | Zusätzliche Berechtigung erforderlich |
---|---|
Datenbankbenutzer | IMPERSONATE -Berechtigung für den Benutzer, die Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer | IMPERSONATE -Berechtigung für den Benutzer, die Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Einer Windows-Gruppe zugeordneter Datenbankbenutzer | Mitgliedschaft in der Windows-Gruppe, Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Einem Zertifikat zugeordneter Datenbankbenutzer | Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer | Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Einem Serverprinzipal zugeordneter Datenbankbenutzer | IMPERSONATE -Berechtigung für den Benutzer, die Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Datenbankrolle | ALTER -Berechtigung für die Rolle, die Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Anwendungsrolle | ALTER -Berechtigung für die Rolle, die Mitgliedschaft in der festen Datenbankrolle db_securityadmin , die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Mitgliedschaft in der festen Serverrolle sysadmin . |
Beispiele
A. Erteilen der SELECT-Berechtigung für eine Tabelle
Im folgenden Beispiel wird die SELECT
-Berechtigung dem Benutzer RosaQdM
für die Person.Address
-Tabelle in der AdventureWorks2022
-Datenbank erteilt.
Dieses Beispiel, wie geschrieben, funktioniert in Microsoft Fabric nicht, da es einen Benutzer für eine authentifizierte SQL-Anmeldung verwendet, aber dasselbe Beispiel würde für einen Microsoft Entra ID Fabric-Benutzer funktionieren, z. B. RosaQdM@contoso.com
.
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
B. Erteilen der EXECUTE-Berechtigung für eine gespeicherte Prozedur
Im folgenden Beispiel wird die EXECUTE
-Berechtigung für die gespeicherte Prozedur HumanResources.uspUpdateEmployeeHireInfo
der Anwendungsrolle Recruiting11
erteilt.
USE AdventureWorks2022;
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
C. Erteilen der REFERENCES-Berechtigung für eine Sicht mit GRANT OPTION
Im folgenden Beispiel wird die REFERENCES
-Berechtigung für die BusinessEntityID
-Spalte in der HumanResources.vEmployee
-Sicht dem Benutzer Wanida
mit GRANT OPTION
erteilt.
Dieses Beispiel, wie geschrieben, funktioniert in Microsoft Fabric nicht, da es einen Benutzer für eine authentifizierte SQL-Anmeldung verwendet, aber dasselbe Beispiel würde für einen Microsoft Entra ID Fabric-Benutzer funktionieren, z. B. Wanida@contoso.com
.
GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida WITH GRANT OPTION;
GO
D: Erteilen der SELECT-Berechtigung für eine Tabelle ohne Verwendung des OBJECT-Ausdrucks
Im folgenden Beispiel wird die SELECT
-Berechtigung dem Benutzer RosaQdM
für die Person.Address
-Tabelle in der AdventureWorks2022
-Datenbank erteilt.
Dieses Beispiel, wie geschrieben, funktioniert in Microsoft Fabric nicht, da es einen Benutzer für eine authentifizierte SQL-Anmeldung verwendet, aber dasselbe Beispiel würde für einen Microsoft Entra ID Fabric-Benutzer funktionieren, z. B. RosaQdM@contoso.com
.
GRANT SELECT ON Person.Address TO RosaQdM;
GO
E. Erteilen der SELECT-Berechtigung für eine Tabelle an ein Domänenkonto
Im folgenden Beispiel wird die SELECT
-Berechtigung dem Benutzer AdventureWorks2022\RosaQdM
für die Person.Address
-Tabelle in der AdventureWorks2022
-Datenbank erteilt.
Dieses Beispiel, wie geschrieben, funktioniert in Microsoft Fabric nicht, da es ein Domänen-Konto verwendet, aber dasselbe Beispiel würde für einen Microsoft Entra ID Fabric-Benutzer funktionieren, z. B. RosaQdM@contoso.com
.
GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];
GO
F. Erteilen der EXECUTE-Berechtigung für eine Prozedur an eine Rolle
Im folgenden Beispiel wird eine Rolle erstellt; anschließend wird der Rolle die EXECUTE
-Berechtigung für die uspGetBillOfMaterials
-Prozedur in der AdventureWorks2022
-Datenbank erteilt.
CREATE ROLE newrole ;
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;
GO
G. Erteilen der UNMASK-Berechtigung für eine Spalte
Im folgenden Beispiel wird dem Benutzer OutreachCoordinator
die UNMASK
-Berechtigung, die Teil der dynamischen Datenmaskierung ist, für die Spalte email
in der Tabelle Data.Membership
erteilt.
Die dynamische Datenmaskierung wird in Microsoft Fabric derzeit nicht unterstützt.
GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO
Zugehöriger Inhalt
- DENY (Objektberechtigungen) (Transact-SQL)
- REVOKE-Objektberechtigungen (Transact-SQL)
- Katalogsichten für Objekte (Transact-SQL)
- Berechtigungen (Datenbank-Engine)
- Prinzipale (Datenbank-Engine)
- Sicherungsfähige Elemente
- sys.fn_builtin_permissions (Transact-SQL)
- HAS_PERMS_BY_NAME (Transact-SQL)
- sys.fn_my_permissions (Transact-SQL)
- Dynamische Datenmaskierung
- Sicherheit auf Zeilenebene