Delen via


Objectmachtigingen verlenen (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 tabel, weergave, tabelwaardefunctie, opgeslagen procedure, uitgebreide opgeslagen procedure, scalaire functie, statistische functie, servicewachtrij of synoniem.

Transact-SQL syntaxis-conventies

Syntaxis

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  

Argumenten

machtiging

Hiermee geeft u een machtiging op die kan worden verleend voor een schema-ingesloten object. Zie Opmerkingen voor een lijst met machtigingen.

ALLE

Het verlenen van ALL verleent niet alle mogelijke machtigingen. Het verlenen van ALL is gelijk aan het verlenen van alle ANSI-92-machtigingen die van toepassing zijn op het opgegeven object. De betekenis van ALL varieert als volgt:

  • Scalaire functiemachtigingen: EXECUTE, REFERENCES.
  • Functiemachtigingen met tabelwaarde: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Machtigingen voor opgeslagen procedures: EXECUTE.
  • Tabelmachtigingen: VERWIJDEREN, INVOEGEN, VERWIJZINGEN, SELECTEREN, BIJWERKEN.
  • Machtigingen weergeven: VERWIJDEREN, INVOEGEN, VERWIJZINGEN, SELECTEREN, BIJWERKEN.

Waarschuwing

De machtiging ALL is afgeschaft en wordt alleen onderhouden voor compatibiliteit.

PRIVILEGES

Opgenomen voor ANSI-92-naleving. Het gedrag van ALL wordt niet gewijzigd.

column_name

Hiermee geeft u de naam van een kolom in een tabel, weergave of tabelwaardefunctie op waarvoor de machtiging wordt verleend. De haakjes ( ) zijn vereist. Alleen SELECT-, VERWIJZINGEN-, UPDATE- en UNMASK-machtigingen kunnen worden verleend voor een kolom. column_name kan worden opgegeven in de machtigingscomponent of na de beveiligbare naam.

Waarschuwing

Een DENY op tabelniveau heeft geen prioriteit boven een GRANT op kolomniveau. Deze inconsistentie in de machtigingshiërarchie is behouden voor achterwaartse compatibiliteit.

ON [ OBJECT :: ] [ schema_name ] . object_name

Hiermee geeft u het object waarop de machtiging wordt verleend. De objectterm is optioneel als schema_name is opgegeven. Als de OBJECT-woordgroep wordt gebruikt, is de bereikkwalificatie (::) vereist. Als schema_name niet is opgegeven, wordt het standaardschema gebruikt. Als schema_name is opgegeven, is de kwalificatie voor schemabereik (.) vereist.

TO <database_principal>

Hiermee geeft u de principal aan waaraan de machtiging wordt verleend.

MET DE OPTIE VERLENEN

Geeft aan dat de principal ook de mogelijkheid krijgt om de opgegeven machtiging aan andere principals te verlenen.

AS-database_principal <>

Hiermee geeft u een principal op waaruit de principal die deze query uitvoert, het recht heeft om de machtiging te verlenen.

Database_user
Hiermee geeft u een databasegebruiker.

Database_role
Hiermee geeft u een databaserol op.

Application_role
Hiermee geeft u een toepassingsrol op.

Database_user_mapped_to_Windows_User
Hiermee geeft u een databasegebruiker die is toegewezen aan een Windows-gebruiker.

Database_user_mapped_to_Windows_Group
Hiermee geeft u een databasegebruiker die is toegewezen aan een Windows-groep.

Database_user_mapped_to_certificate
Hiermee geeft u een databasegebruiker die is toegewezen aan een certificaat.

Database_user_mapped_to_asymmetric_key
Hiermee geeft u een databasegebruiker die is toegewezen aan een asymmetrische sleutel.

Database_user_with_no_login
Hiermee geeft u een databasegebruiker zonder bijbehorende principal op serverniveau op.

Opmerkingen

Belangrijk

Een combinatie van ALTER machtigingen en REFERENCE machtigingen kan in sommige gevallen toestaan dat de grantee gegevens kan bekijken of niet-geautoriseerde functies kan uitvoeren. Bijvoorbeeld: Een gebruiker met ALTER machtigingen voor een tabel en REFERENCE machtiging voor een functie kan een berekende kolom maken over een functie en deze laten uitvoeren. In dit geval heeft de gebruiker ook toestemming nodig SELECT voor de berekende kolom.

Informatie over objecten is zichtbaar in verschillende catalogusweergaven. Zie Objectcatalogusweergaven (Transact-SQL) voor meer informatie.

Een object is een beveiligbaar op schemaniveau dat is opgenomen in het schema dat het bovenliggende object in de machtigingshiërarchie is. De meest specifieke en beperkte machtigingen die voor een object kunnen worden verleend, worden vermeld in de volgende tabel, samen met de meer algemene machtigingen die ze bevatten door implicatie.

Objectmachtiging Impliciet op objectmachtiging Impliciet door schemamachtiging
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

Schemabinding wordt niet ondersteund in Azure Synapse Analytics, wat kan leiden tot onverwacht gedrag wanneer onderliggende objecten worden gewijzigd en machtigingen zijn verleend aan een weergave. Zie T-SQL-weergaven met toegewezen SQL-pool en serverloze SQL-pool in Azure Synapse Analytics voor meer informatie.

Machtigingen

De grantor (of de principal die is opgegeven met de AS-optie) moet de machtiging zelf hebben of GRANT OPTIONeen hogere machtiging die impliceert dat de machtiging wordt verleend.

Als u de AS-optie gebruikt, zijn de volgende aanvullende vereisten van toepassing.

AS Aanvullende machtiging vereist
Databasegebruiker IMPERSONATE machtiging voor de gebruiker, lidmaatschap van de db_securityadmin rol vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.
Databasegebruiker die is toegewezen aan een Windows-aanmelding IMPERSONATE machtiging voor de gebruiker, lidmaatschap van de db_securityadmin rol vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.
Databasegebruiker die is toegewezen aan een Windows-groep Lidmaatschap van de Windows-groep, lidmaatschap van de rol van de db_securityadmin vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.
Databasegebruiker die is toegewezen aan een certificaat Lidmaatschap van de db_securityadmin rol vaste database, lidmaatschap van de rol van de db_owner vaste database of lidmaatschap van de sysadmin vaste serverfunctie.
Databasegebruiker die is toegewezen aan een asymmetrische sleutel Lidmaatschap van de db_securityadmin rol vaste database, lidmaatschap van de rol van de db_owner vaste database of lidmaatschap van de sysadmin vaste serverfunctie.
Databasegebruiker die niet is toegewezen aan een server-principal IMPERSONATE machtiging voor de gebruiker, lidmaatschap van de db_securityadmin rol vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.
Databaserol ALTER machtiging voor de rol, lidmaatschap van de rol van de db_securityadmin vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.
Toepassingsrol ALTER machtiging voor de rol, lidmaatschap van de rol van de db_securityadmin vaste database, lidmaatschap van de db_owner vaste databaserol of lidmaatschap van de sysadmin vaste serverfunctie.

Voorbeelden

Eén. SELECT-machtiging verlenen voor een tabel

In het volgende voorbeeld wordt toestemming verleend SELECT aan de gebruiker RosaQdM in de tabel Person.Address in de AdventureWorks2022 database.

Dit voorbeeld, zoals geschreven, werkt niet in Microsoft Fabric omdat er een gebruiker wordt gebruikt voor een geverifieerde SQL-aanmelding, maar hetzelfde voorbeeld zou werken voor een Microsoft Entra ID Fabric-gebruiker, bijvoorbeeld RosaQdM@contoso.com.

GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;  
GO  

B. EXECUTE-machtiging verlenen voor een opgeslagen procedure

Het volgende voorbeeld verleent EXECUTE machtigingen voor opgeslagen procedures HumanResources.uspUpdateEmployeeHireInfo aan een toepassingsrol met de naam Recruiting11.

USE AdventureWorks2022;   
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO   

C. VERWIJZINGEN machtigen voor een weergave met DE OPTIE VERLENEN

Het volgende voorbeeld verleent REFERENCES machtigingen voor de kolom BusinessEntityID in weergave HumanResources.vEmployee aan de gebruiker Wanida met GRANT OPTION.

Dit voorbeeld, zoals geschreven, werkt niet in Microsoft Fabric omdat er een gebruiker wordt gebruikt voor een geverifieerde SQL-aanmelding, maar hetzelfde voorbeeld zou werken voor een Microsoft Entra ID Fabric-gebruiker, bijvoorbeeld Wanida@contoso.com.

GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee   
    TO Wanida WITH GRANT OPTION;  
GO  

D. SELECT-machtiging verlenen aan een tabel zonder de objectzin te gebruiken

In het volgende voorbeeld wordt toestemming verleend SELECT aan de gebruiker RosaQdM in de tabel Person.Address in de AdventureWorks2022 database.

Dit voorbeeld, zoals geschreven, werkt niet in Microsoft Fabric omdat er een gebruiker wordt gebruikt voor een geverifieerde SQL-aanmelding, maar hetzelfde voorbeeld zou werken voor een Microsoft Entra ID Fabric-gebruiker, bijvoorbeeld RosaQdM@contoso.com.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. SELECT-machtiging verlenen voor een tabel aan een domeinaccount

In het volgende voorbeeld wordt toestemming verleend SELECT aan de gebruiker AdventureWorks2022\RosaQdM in de tabel Person.Address in de AdventureWorks2022 database.

Dit voorbeeld zoals geschreven werkt niet in Microsoft Fabric omdat het een domeinaccount gebruikt, maar hetzelfde voorbeeld zou werken voor een Microsoft Entra ID Fabric-gebruiker, bijvoorbeeld RosaQdM@contoso.com.

GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];  
GO  

F. EXECUTE-machtiging verlenen aan een procedure voor een rol

In het volgende voorbeeld wordt een rol gemaakt en wordt vervolgens toestemming verleend EXECUTE aan de rol voor procedure uspGetBillOfMaterials in de AdventureWorks2022 database.

CREATE ROLE newrole ;  
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;  
GO  

G. UNMASK-machtiging verlenen voor een kolom

In het volgende voorbeeld verleent u de UNMASK machtiging, onderdeel van dynamische gegevensmaskering, voor de kolom email in de tabel Data.Membership aan de gebruiker OutreachCoordinator.

Dynamische gegevensmaskering wordt momenteel niet ondersteund in Microsoft Fabric.

GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO