Dela via


BEVILJA objektbehörigheter (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Beviljar behörigheter för en tabell, vy, tabellvärdesfunktion, lagrad procedur, utökad lagrad procedur, skalär funktion, aggregerad funktion, tjänstkö eller synonym.

Transact-SQL syntaxkonventioner

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  

Arguments

permission

Anger en behörighet som kan beviljas för ett schemabaserat objekt. En lista över behörigheterna finns i Kommentarer.

ALL

Att bevilja ALLA beviljar inte alla möjliga behörigheter. Att bevilja ALLA motsvarar att bevilja alla ANSI-92-behörigheter som gäller för det angivna objektet. Innebörden av ALLA varierar enligt följande:

  • Skalära funktionsbehörigheter: EXECUTE, REFERENCES.
  • Funktionsbehörigheter för tabellvärde: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Behörigheter för lagrad procedur: KÖR.
  • Tabellbehörigheter: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Visa behörigheter: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

Caution

ALL-behörigheten är inaktuell och underhålls endast för kompatibilitet.

PRIVILEGES

Ingår för ANSI-92-efterlevnad. Ändrar inte beteendet för ALLA.

column_name

Anger namnet på en kolumn i en tabell, vy eller tabellvärdesfunktion som behörigheten beviljas för. Parenteserna ( ) krävs. Endast SELECT-, REFERENCES-, UPDATE- och UNMASK-behörigheter kan beviljas för en kolumn. column_name kan anges i behörighetssatsen eller efter det skyddsbara namnet.

Caution

En nekande på tabellnivå har inte företräde framför ett GRANT på kolumnnivå. Den här inkonsekvensen i behörighetshierarkin har bevarats för bakåtkompatibilitet.

PÅ [ OBJEKT :: ] [ schema_name ] . object_name

Anger det objekt som behörigheten beviljas för. Object-frasen är valfri om schema_name anges. Om object-frasen används krävs omfångskvalificeraren (::). Om schema_name inte anges används standardschemat. Om schema_name anges krävs schemaomfattningskvalificeraren (.).

TILL <database_principal>

Anger det huvudnamn som behörigheten beviljas till.

MED ALTERNATIVET BEVILJA

Anger att huvudkontot också kommer att ges möjlighet att bevilja den angivna behörigheten till andra huvudnamn.

AS-database_principal <>

Anger ett huvudnamn från vilket huvudnamnet som kör den här frågan härleder sin rätt att bevilja behörigheten.

Database_user
Anger en databasanvändare.

Database_role
Anger en databasroll.

Application_role
Anger en programroll.

Database_user_mapped_to_Windows_User
Anger en databasanvändare som mappats till en Windows-användare.

Database_user_mapped_to_Windows_Group
Anger en databasanvändare som mappats till en Windows-grupp.

Database_user_mapped_to_certificate
Anger en databasanvändare som mappats till ett certifikat.

Database_user_mapped_to_asymmetric_key
Anger en databasanvändare som mappats till en asymmetrisk nyckel.

Database_user_with_no_login
Anger en databasanvändare utan motsvarande huvudnamn på servernivå.

Remarks

Important

En kombination av ALTER och REFERENCE behörigheter kan i vissa fall göra det möjligt för den som beviljar att visa data eller köra obehöriga funktioner. Till exempel: En användare med ALTER behörighet i en tabell och REFERENCE behörighet för en funktion kan skapa en beräknad kolumn över en funktion och låta den köras. I det här fallet skulle användaren också behöva SELECT behörighet för den beräknade kolumnen.

Information om objekt visas i olika katalogvyer. Mer information finns i Objektkatalogvyer (Transact-SQL).

Ett objekt är en skyddsnivå på schemanivå som ingår i schemat som är dess överordnade objekt i behörighetshierarkin. De mest specifika och begränsade behörigheter som kan beviljas för ett objekt visas i följande tabell, tillsammans med de mer allmänna behörigheter som omfattar dem underförstått.

Object permission Underförstådd av objektbehörighet Underförstådd av schemabehörighet
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

Schemabindning stöds inte i Azure Synapse Analytics, vilket kan leda till oväntat beteende när underliggande objekt ändras och behörigheter har beviljats till en vy. Mer information finns i T-SQL-vyer med dedikerad SQL-pool och serverlös SQL-pool i Azure Synapse Analytics.

Permissions

Beviljaren (eller det huvudnamn som anges med ALTERNATIVET AS) måste ha antingen själva behörigheten med GRANT OPTIONeller en högre behörighet som innebär att behörigheten beviljas.

Om du använder AS-alternativet gäller följande ytterligare krav.

AS Ytterligare behörighet krävs
Database user IMPERSONATE behörighet för användaren, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Databasanvändare mappad till en Windows-inloggning IMPERSONATE behörighet för användaren, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Databasanvändare mappad till en Windows-grupp Medlemskap i Windows-gruppen, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Databasanvändare mappad till ett certifikat Medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Databasanvändare mappad till en asymmetrisk nyckel Medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Databasanvändaren har inte mappats till något serverhuvudnamn IMPERSONATE behörighet för användaren, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Database role ALTER behörighet för rollen, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .
Application role ALTER behörighet för rollen, medlemskap i den fasta databasrollen db_securityadmin , medlemskap i den fasta databasrollen db_owner eller medlemskap i den fasta serverrollen sysadmin .

Examples

A. Bevilja SELECT-behörighet i en tabell

I följande exempel ges SELECT behörighet till användare RosaQdM i tabellen Person.Address i AdventureWorks2022 databasen.

Det här exemplet som skrivet fungerar inte i Microsoft Fabric eftersom det använder en användare för en SQL-autentiserad inloggning, men samma exempel skulle fungera för en Microsoft Entra ID Fabric-användare, RosaQdM@contoso.comtill exempel .

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

B. Bevilja EXECUTE-behörighet för en lagrad procedur

I följande exempel ges EXECUTE behörighet för lagrad procedur HumanResources.uspUpdateEmployeeHireInfo till en programroll med namnet Recruiting11.

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

C. Bevilja REFERENSER-behörighet i en vy med ALTERNATIVET BEVILJA

I följande exempel ges REFERENCES behörighet för kolumnen BusinessEntityID i vyn HumanResources.vEmployee till användaren Wanida med GRANT OPTION.

Det här exemplet som skrivet fungerar inte i Microsoft Fabric eftersom det använder en användare för en SQL-autentiserad inloggning, men samma exempel skulle fungera för en Microsoft Entra ID Fabric-användare, Wanida@contoso.comtill exempel .

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

D. Bevilja SELECT-behörighet i en tabell utan att använda OBJECT-frasen

I följande exempel ges SELECT behörighet till användare RosaQdM i tabellen Person.Address i AdventureWorks2022 databasen.

Det här exemplet som skrivet fungerar inte i Microsoft Fabric eftersom det använder en användare för en SQL-autentiserad inloggning, men samma exempel skulle fungera för en Microsoft Entra ID Fabric-användare, RosaQdM@contoso.comtill exempel .

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. Bevilja SELECT-behörighet i en tabell till ett domänkonto

I följande exempel ges SELECT behörighet till användare AdventureWorks2022\RosaQdM i tabellen Person.Address i AdventureWorks2022 databasen.

Det här exemplet som skrivs fungerar inte i Microsoft Fabric eftersom det använder ett domänkonto, men samma exempel skulle fungera för en Microsoft Entra ID Fabric-användare, till exempel RosaQdM@contoso.com.

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

F. Bevilja EXECUTE-behörighet för en procedur till en roll

Följande exempel skapar en roll och ger EXECUTE sedan behörighet till rollen för proceduren uspGetBillOfMaterialsAdventureWorks2022 i databasen.

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

G. Bevilja UNMASK-behörighet för en kolumn

I följande exempel ges behörigheten UNMASK , en del av dynamisk datamaskering, för kolumnen email i tabellen Data.Membership till användaren OutreachCoordinator.

Dynamisk datamaskering stöds för närvarande inte i Microsoft Fabric.

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