Dela via


GRANT (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft FabricSQL-databas i 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
}

Argument

ALLA

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.

Skyddsbar Behörigheter
Databas BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEoch CREATE VIEW
Skalär funktion EXECUTE och REFERENCES
Tabellvärdesfunktion DELETE, INSERT, REFERENCES, SELECToch UPDATE
Lagrad procedur EXECUTE
Bord DELETE, INSERT, REFERENCES, SELECToch UPDATE
Utsikt DELETE, INSERT, REFERENCES, SELECToch UPDATE

PRIVILEGIER

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

behörighet

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

kolumn

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

klass

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

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

ATT huvudnamn

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.

ALTERNATIVET BEVILJA

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

AS huvudnamn

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.

Anmärkningar

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.

Försiktighet

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.

Behörigheter

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.

Exempel

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

Skyddsbar GRANT syntax
Programroll BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
Församling BEVILJA sammansättningsbehörigheter (Transact-SQL)
Asymmetrisk nyckel BEVILJA asymmetriska nyckelbehörigheter (Transact-SQL)
Tillgänglighetsgrupp BEVILJA behörigheter för tillgänglighetsgrupp (Transact-SQL)
Intyg BEVILJA certifikatbehörigheter (Transact-SQL)
Kontrakt behörigheter för GRANT Service Broker (Transact-SQL)
Databas BEVILJA databasbehörigheter (Transact-SQL)
Databasomfattande autentiseringsuppgifter GRANT Database Scoped Credential (Transact-SQL)
Slutpunkt BEVILJA slutpunktsbehörigheter (Transact-SQL)
Full-Text katalog bevilja Full-Text behörigheter (Transact-SQL)
Full-Text stopplista bevilja Full-Text behörigheter (Transact-SQL)
Funktion BEVILJA objektbehörigheter (Transact-SQL)
Logga in BEVILJA serverhuvudnamnsbehörigheter (Transact-SQL)
Meddelandetyp behörigheter för GRANT Service Broker (Transact-SQL)
Objekt BEVILJA objektbehörigheter (Transact-SQL)
BEVILJA objektbehörigheter (Transact-SQL)
Fjärrtjänstbindning behörigheter för GRANT Service Broker (Transact-SQL)
Roll BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
Väg behörigheter för GRANT Service Broker (Transact-SQL)
Schemat BEVILJA schemabehörigheter (Transact-SQL)
Sök egenskapslista behörigheter för grant search-egenskapslista (Transact-SQL)
Server BEVILJA serverbehörigheter (Transact-SQL)
Tjänst behörigheter för GRANT Service Broker (Transact-SQL)
Lagrad procedur BEVILJA objektbehörigheter (Transact-SQL)
Symmetrisk nyckel BEVILJA symmetriska nyckelbehörigheter (Transact-SQL)
Synonym BEVILJA objektbehörigheter (Transact-SQL)
Systemobjekt BEVILJA systemobjektbehörigheter (Transact-SQL)
Bord BEVILJA objektbehörigheter (Transact-SQL)
Typ behörigheter av typen GRANT (Transact-SQL)
Användare BEVILJA behörigheter för databasens huvudnamn (Transact-SQL)
Utsikt BEVILJA objektbehörigheter (Transact-SQL)
XML-schemasamling BEVILJA XML-schemainsamlingsbehörigheter (Transact-SQL)