Dela via


GRANT (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 ett huvudnamn som kan skyddas. Det allmänna konceptet är att GRANT <some permission> ON <some object> TO <some user, login, or group>. En allmän beskrivning av behörigheter finns i behörigheter (databasmotor).

Transact-SQL syntaxkonventioner

Syntax

Syntax för SQL Server, Azure SQL Database och 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 ]

Syntax för Azure Synapse Analytics, Parallel Data Warehouse och 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
}

Arguments

ALL

Det här alternativet är inaktuellt och underhålls endast för bakåtkompatibilitet. Den beviljar inte alla möjliga behörigheter. Att bevilja ALL motsvarar att bevilja följande behörigheter.

Securable Permissions
Database BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEoch CREATE VIEW
Scalar function EXECUTE och REFERENCES
Table-valued function DELETE, INSERT, REFERENCES, SELECToch UPDATE
Stored procedure EXECUTE
Table DELETE, INSERT, REFERENCES, SELECToch UPDATE
View DELETE, INSERT, REFERENCES, SELECToch UPDATE

PRIVILEGES

Ingår för ISO-efterlevnad. Ändrar inte beteendet för ALL.

permission

Namnet på en behörighet. Giltiga mappningar av behörigheter till skyddsbara filer beskrivs i följande avsnitt.

column

Anger namnet på en kolumn i en tabell där behörigheter beviljas. Parenteserna ( och ) krävs.

class

Anger klassen för den skyddsbara som behörigheten beviljas för. Omfångskvalificeraren :: krävs.

securable

Anger det skydd som behörigheten beviljas för.

TO principal

Namnet på ett huvudnamn. De huvudkonton som behörigheter för en skyddsbar kan beviljas till varierar beroende på vilka som kan skyddas. Se följande avsnitt för giltiga kombinationer.

GRANT OPTION

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

AS principal

Använd AS <principal>-satsen för att ange att huvudkontot som registrerats som beviljare av behörigheten ska vara ett annat huvudnamn än den person som kör -instruktionen. Anta till exempel att användaren Mary har principal_id12och att användaren Raul är huvudnamn 15. Mary kör GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Nu visar tabellen sys.database_permissions att grantor_principal_id var 15 (Raul) trots att instruktionen faktiskt kördes av användaren 12 (Mary).

Användning av AS-satsen rekommenderas vanligtvis inte om du inte uttryckligen behöver definiera behörighetskedjan. Mer information finns i sammanfattning av algoritmen för behörighetskontroll.

Användningen av AS i den här instruktionen innebär inte möjligheten att personifiera en annan användare.

Remarks

Den fullständiga syntaxen för GRANT-instruktionen är komplex. Det tidigare syntaxdiagrammet förenklades för att uppmärksamma dess struktur. Fullständig syntax för att bevilja behörigheter för specifika skyddsbara objekt beskrivs i artiklarna som anges senare i den här artikeln.

Instruktionen REVOKE kan användas för att ta bort beviljade behörigheter, och DENY-instruktionen kan användas för att förhindra att ett huvudnamn får en specifik behörighet via en GRANT.

Om du beviljar en behörighet tar DENY eller REVOKE av behörigheten bort för den angivna skyddsbara filen. Om samma behörighet nekas med ett högre omfång som innehåller det skyddbara objektet har DENY företräde. Men att återkalla den beviljade behörigheten i ett högre omfång har inte företräde.

Behörigheter på databasnivå beviljas inom den angivna databasens omfång. Om en användare behöver behörighet till objekt i en annan databas skapar du användarkontot i den andra databasen eller ger användarkontot åtkomst till den andra databasen samt den aktuella databasen.

Caution

En DENY på tabellnivå har inte företräde framför en GRANTpå kolumnnivå. Den här inkonsekvensen i behörighetshierarkin har bevarats för bakåtkompatibilitetens skull. Den tas bort i en framtida version.

Den sp_helprotect system lagrade proceduren rapporterar behörigheter på databasnivå.

I Microsoft Fabric kan CREATE USER inte köras explicit för närvarande. När GRANT eller DENY körs skapas användaren automatiskt.

MED ALTERNATIVET BEVILJA

GRANT ... WITH GRANT OPTION anger att säkerhetsobjektet som tar emot behörigheten ges möjlighet att bevilja den angivna behörigheten till andra säkerhetskonton. När huvudnamnet som tar emot behörigheten är en roll eller en Windows-grupp måste AS-satsen användas när objektbehörigheten måste beviljas ytterligare för användare som inte är medlemmar i gruppen eller rollen. Eftersom endast en användare, i stället för en grupp eller roll, kan köra en GRANT-instruktion, måste en specifik medlem i gruppen eller rollen använda AS-satsen för att uttryckligen anropa rollen eller gruppmedlemskapet när behörigheten beviljas. I följande exempel visas hur WITH GRANT OPTION används när den beviljas till en roll eller En Windows-grupp.

-- 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;

Diagram över SQL Server-behörigheter

Ett diagram med affischstorlek för alla databasmotorbehörigheter i PDF-format finns i https://aka.ms/sql-permissions-poster.

Permissions

Beviljaren (eller det huvudnamn som anges med alternativet AS) måste ha antingen behörigheten själv med GRANT OPTIONeller en högre behörighet som innebär att behörigheten beviljas. Om du använder alternativet AS gäller ytterligare krav. Mer information finns i den säkerhetsbara artikeln.

Objektägare kan bevilja behörigheter för de objekt de äger. Huvudnamn med CONTROL behörighet för en skyddsbar kan bevilja behörighet för den skyddsbara filen.

Beviljare av CONTROL SERVER behörighet, till exempel medlemmar i sysadmin fast serverroll, kan bevilja alla behörigheter på alla skyddbara på servern. Beviljanden av CONTROL behörighet för en databas, till exempel medlemmar i db_owner fast databasroll, kan ge alla behörigheter som kan säkras i databasen. Beviljanden av CONTROL behörighet för ett schema kan ge alla behörigheter för alla objekt i schemat.

Examples

I följande tabell visas de skyddsbara objekten och artiklarna som beskriver den skyddsbara syntaxen.

Securable GRANT syntax
Application Role BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
Assembly BEVILJA sammansättningsbehörigheter (Transact-SQL)
Asymmetric Key BEVILJA asymmetriska nyckelbehörigheter (Transact-SQL)
Availability Group BEVILJA behörigheter för tillgänglighetsgrupp (Transact-SQL)
Certificate BEVILJA certifikatbehörigheter (Transact-SQL)
Contract behörigheter för GRANT Service Broker (Transact-SQL)
Database BEVILJA databasbehörigheter (Transact-SQL)
Databasomfattande autentiseringsuppgifter GRANT Database Scoped Credential (Transact-SQL)
Endpoint BEVILJA slutpunktsbehörigheter (Transact-SQL)
Full-Text Catalog bevilja Full-Text behörigheter (Transact-SQL)
Full-Text Stoplist bevilja Full-Text behörigheter (Transact-SQL)
Function BEVILJA objektbehörigheter (Transact-SQL)
Login BEVILJA serverhuvudnamnsbehörigheter (Transact-SQL)
Message Type behörigheter för GRANT Service Broker (Transact-SQL)
Object BEVILJA objektbehörigheter (Transact-SQL)
Queue BEVILJA objektbehörigheter (Transact-SQL)
Fjärrtjänstbindning behörigheter för GRANT Service Broker (Transact-SQL)
Role BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
Route behörigheter för GRANT Service Broker (Transact-SQL)
Schema BEVILJA schemabehörigheter (Transact-SQL)
Sök egenskapslista behörigheter för grant search-egenskapslista (Transact-SQL)
Server BEVILJA serverbehörigheter (Transact-SQL)
Service behörigheter för GRANT Service Broker (Transact-SQL)
Stored Procedure BEVILJA objektbehörigheter (Transact-SQL)
Symmetric Key BEVILJA symmetriska nyckelbehörigheter (Transact-SQL)
Synonym BEVILJA objektbehörigheter (Transact-SQL)
System Objects BEVILJA systemobjektbehörigheter (Transact-SQL)
Table BEVILJA objektbehörigheter (Transact-SQL)
Type behörigheter av typen GRANT (Transact-SQL)
User BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
View BEVILJA objektbehörigheter (Transact-SQL)
XML-schemasamling BEVILJA XML-schemainsamlingsbehörigheter (Transact-SQL)