GRANT (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL-database in Microsoft Fabric
Verleent machtigingen voor een beveiligbare principal. Het algemene concept is om te GRANT <some permission> ON <some object> TO <some user, login, or group>
. Zie Machtigingen (Database Engine)voor een algemene bespreking van machtigingen.
Transact-SQL syntaxisconventies
Syntaxis
Syntaxis voor SQL Server, Azure SQL Database en Fabric SQL-database.
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ , ...n ] ) ] [ , ...n ]
[ ON [ class :: ] securable ] TO principal [ , ...n ]
[ WITH GRANT OPTION ] [ AS principal ]
Syntaxis voor Azure Synapse Analytics, Parallel Data Warehouse en Microsoft Fabric Warehouse.
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
}
Argumenten
ALLE
Deze optie is afgeschaft en wordt alleen onderhouden voor compatibiliteit met eerdere versies. Het verleent niet alle mogelijke machtigingen. Het verlenen van ALL
is gelijk aan het verlenen van de volgende machtigingen.
Beveiligbare | Machtigingen |
---|---|
Databank |
BACKUP DATABASE , BACKUP LOG , CREATE DATABASE , CREATE DEFAULT , CREATE FUNCTION , CREATE PROCEDURE , CREATE RULE , CREATE TABLE en CREATE VIEW |
Scalaire functie |
EXECUTE en REFERENCES |
Tabelwaarde, functie |
DELETE , INSERT , REFERENCES , SELECT en UPDATE |
Opgeslagen procedure | EXECUTE |
Tafel |
DELETE , INSERT , REFERENCES , SELECT en UPDATE |
Bekijken |
DELETE , INSERT , REFERENCES , SELECT en UPDATE |
PRIVILEGES
Opgenomen voor ISO-naleving. Het gedrag van ALL
wordt niet gewijzigd.
machtiging
De naam van een machtiging. De geldige toewijzingen van machtigingen voor beveiligbare items worden beschreven in de volgende secties.
kolom
Hiermee geeft u de naam van een kolom in een tabel waarvoor machtigingen worden verleend. De haakjes (
en )
zijn vereist.
klasse
Hiermee geeft u de klasse van de beveiligbare waarop de machtiging wordt verleend. De kwalificatie van het bereik ::
is vereist.
beveiligbare
Hiermee geeft u de beveiligbare waarop de machtiging wordt verleend.
Principal-
De naam van een principal. De principals waaraan machtigingen voor een beveiligbare kunnen worden verleend, variëren, afhankelijk van de beveiligbare. Zie de volgende secties voor geldige combinaties.
OPTIE VERLENEN
Geeft aan dat de toekenning ook de mogelijkheid krijgt om de opgegeven machtiging te verlenen aan andere principals.
PRINCIPAL- as
Gebruik de AS <principal>
-component om aan te geven dat de principal die is vastgelegd als de grantor van de machtiging een andere principal moet zijn dan de persoon die de instructie uitvoert. Stel dat de gebruiker Mary
een principal_id
van 12
heeft en dat Raul
principal is 15
. Mary voert nu GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
De tabel sys.database_permissions
geeft aan dat de grantor_principal_id
is 15
(Raul
) ook al is de instructie daadwerkelijk uitgevoerd door de gebruiker 12
(Mary
).
Het gebruik van de AS
-component wordt doorgaans niet aanbevolen, tenzij u de machtigingsketen expliciet moet definiëren. Zie Samenvatting van het algoritme machtigingscontrolevoor meer informatie.
Het gebruik van AS
in deze instructie impliceert niet de mogelijkheid om een andere gebruiker te imiteren.
Opmerkingen
De volledige syntaxis van de GRANT
-instructie is complex. Het vorige syntaxisdiagram is vereenvoudigd om de aandacht te vestigen op de structuur. Volledige syntaxis voor het verlenen van machtigingen voor specifieke beveiligbare objecten wordt beschreven in de artikelen die verderop in dit artikel worden vermeld.
De REVOKE
instructie kan worden gebruikt om verleende machtigingen te verwijderen en de DENY
instructie kan worden gebruikt om te voorkomen dat een principal een specifieke machtiging krijgt via een GRANT
.
Als u een machtiging verleent, worden DENY
of REVOKE
van die machtiging voor de opgegeven beveiligbaar verwijderd. Als dezelfde machtiging wordt geweigerd voor een hoger bereik dat de beveiligbare bevat, heeft de DENY
voorrang. Maar het intrekken van de verleende machtiging op een hoger bereik heeft geen prioriteit.
Machtigingen op databaseniveau worden verleend binnen het bereik van de opgegeven database. Als een gebruiker machtigingen nodig heeft voor objecten in een andere database, maakt u het gebruikersaccount in de andere database of verleent u het gebruikersaccount toegang tot de andere database, evenals de huidige database.
Voorzichtigheid
Een DENY
op tabelniveau heeft geen prioriteit boven een GRANT
op kolomniveau. Deze inconsistentie in de machtigingshiërarchie is behouden omwille van achterwaartse compatibiliteit. Deze wordt verwijderd in een toekomstige release.
De sp_helprotect
systeem opgeslagen procedure rapporteert machtigingen voor een beveiligbaar databaseniveau.
In Microsoft Fabric kan CREATE USER
momenteel niet expliciet worden uitgevoerd. Wanneer GRANT
of DENY
wordt uitgevoerd, wordt de gebruiker automatisch gemaakt.
MET DE OPTIE VERLENEN
De GRANT ... WITH GRANT OPTION
geeft aan dat de beveiligingsprincipaal die de machtiging ontvangt, de mogelijkheid krijgt om de opgegeven machtiging te verlenen aan andere beveiligingsaccounts. Wanneer de principal die de machtiging ontvangt een rol of een Windows-groep is, moet de AS
component worden gebruikt wanneer de objectmachtiging verder moet worden verleend aan gebruikers die geen lid zijn van de groep of rol. Omdat alleen een gebruiker, in plaats van een groep of rol, een GRANT
instructie kan uitvoeren, moet een specifiek lid van de groep of rol de AS
component gebruiken om expliciet de rol of groepslidmaatschap aan te roepen bij het verlenen van de machtiging. In het volgende voorbeeld ziet u hoe de WITH GRANT OPTION
wordt gebruikt wanneer deze wordt verleend aan een rol of Windows-groep.
-- 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;
Grafiek met SQL Server-machtigingen
Zie https://aka.ms/sql-permissions-postervoor een postergrafiek van alle database-enginemachtigingen in PDF-indeling.
Machtigingen
De grantor (of de principal die is opgegeven met de optie AS
) moet de machtiging zelf hebben met GRANT OPTION
of een hogere machtiging die impliceert dat de machtiging wordt verleend. Als u de optie AS
gebruikt, zijn aanvullende vereisten van toepassing. Zie het artikel beveiligbaar voor meer informatie.
Objecteigenaren kunnen machtigingen verlenen voor de objecten die ze bezitten. Principals met CONTROL
machtiging voor een beveiligbaar kunnen machtigingen verlenen voor die beveiligbare.
Grantees van CONTROL SERVER
machtiging, zoals leden van de sysadmin vaste serverfunctie, kunnen elke machtiging verlenen voor elke beveiligbare server op de server. Grantees van CONTROL
machtiging voor een database, zoals leden van de db_owner vaste databaserol, kunnen elke machtiging verlenen voor elke beveiligbare database in de database. Grantees van CONTROL
machtiging voor een schema kunnen elke machtiging verlenen voor elk object in het schema.
Voorbeelden
De volgende tabel bevat de beveiligbare items en de artikelen die de beveiligbare specifieke syntaxis beschrijven.
Verwante inhoud
- DENY (Transact-SQL)
- INTREKKEN (Transact-SQL)
-
sp_addlogin (Transact-SQL) -
sp_adduser (Transact-SQL) - sp_changedbowner (Transact-SQL)
- sp_dropuser (Transact-SQL)
- sp_helprotect (Transact-SQL)
- sp_helpuser (Transact-SQL)