Delen via


GRANT (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft FabricSQL-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 TABLEen CREATE VIEW
Scalaire functie EXECUTE en REFERENCES
Tabelwaarde, functie DELETE, INSERT, REFERENCES, SELECTen UPDATE
Opgeslagen procedure EXECUTE
Tafel DELETE, INSERT, REFERENCES, SELECTen UPDATE
Bekijken DELETE, INSERT, REFERENCES, SELECTen UPDATE

PRIVILEGES

Opgenomen voor ISO-naleving. Het gedrag van ALLwordt 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 12heeft 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 GRANTop 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 OPTIONof 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.

Beveiligbare GRANT syntaxis
Toepassingsrol database-principalmachtigingen verlenen (Transact-SQL)
Vergadering Assemblymachtigingen verlenen (Transact-SQL)
Asymmetrische sleutel Asymmetrische sleutelmachtigingen verlenen (Transact-SQL)
Beschikbaarheidsgroep Machtigingen voor beschikbaarheidsgroep verlenen (Transact-SQL)
Certificaat certificaatmachtigingen verlenen (Transact-SQL)
Contract Service Broker-machtigingen verlenen (Transact-SQL)
Databank Databasemachtigingen verlenen (Transact-SQL)
Referentie in databasebereik GRANT Database Scoped Credential (Transact-SQL)
Eindpunt Eindpuntmachtigingen verlenen (Transact-SQL)
Full-Text catalogus Full-Text machtigingen verlenen (Transact-SQL)
Full-Text stoplijst Full-Text machtigingen verlenen (Transact-SQL)
Functie objectmachtigingen verlenen (Transact-SQL)
Inloggen machtigingen voor server-principals verlenen (Transact-SQL)
Berichttype Service Broker-machtigingen verlenen (Transact-SQL)
Object objectmachtigingen verlenen (Transact-SQL)
Rij objectmachtigingen verlenen (Transact-SQL)
Externe servicebinding Service Broker-machtigingen verlenen (Transact-SQL)
Rol database-principalmachtigingen verlenen (Transact-SQL)
Route Service Broker-machtigingen verlenen (Transact-SQL)
Schema SCHEMAmachtigingen verlenen (Transact-SQL)
Lijst met zoekeigenschappen machtigingen voor zoekeigenschappenlijst verlenen (Transact-SQL)
Server servermachtigingen verlenen (Transact-SQL)
Dienst Service Broker-machtigingen verlenen (Transact-SQL)
Opgeslagen procedure objectmachtigingen verlenen (Transact-SQL)
Symmetrische sleutel symmetrische sleutelmachtigingen verlenen (Transact-SQL)
Synoniem objectmachtigingen verlenen (Transact-SQL)
Systeemobjecten machtigingen voor systeemobjecten verlenen (Transact-SQL)
Tafel objectmachtigingen verlenen (Transact-SQL)
Type type machtigingen verlenen (Transact-SQL)
Gebruiker database-principalmachtigingen verlenen (Transact-SQL)
Bekijken objectmachtigingen verlenen (Transact-SQL)
XML-schemaverzameling MACHTIGINGEN voor XML-schemaverzameling (Transact-SQL) verlenen