Udostępnij za pomocą


UPRAWNIENIA OBIEKTU GRANT (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Przyznaje uprawnienia do tabeli, widoku, funkcji wartości tabeli, procedury składowanej, rozszerzonej procedury składowanej, funkcji skalarnej, funkcji agregującej, kolejki usługi lub synonimu.

Transact-SQL konwencje składni

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

Określa uprawnienie, które można udzielić dla obiektu zawartego w schemacie. Aby uzyskać listę uprawnień, zobacz Uwagi.

ALL

Przyznanie all nie udziela wszystkich możliwych uprawnień. Przyznanie ALL jest równoważne przyznaniu wszystkich uprawnień ANSI-92 mających zastosowanie do określonego obiektu. Znaczenie ALL różni się w następujący sposób:

  • Uprawnienia funkcji skalarnych: EXECUTE, REFERENCES.
  • Uprawnienia funkcji wartości tabeli: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Uprawnienia procedury składowanej: EXECUTE.
  • Uprawnienia do tabeli: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Wyświetlanie uprawnień: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

Caution

Uprawnienie ALL jest przestarzałe i obsługiwane tylko w celu zachowania zgodności.

PRIVILEGES

Dołączone do zgodności ANSI-92. Nie zmienia zachowania ALL.

column_name

Określa nazwę kolumny w tabeli, widoku lub funkcji wartości tabeli, na której jest przyznawane uprawnienie. Nawiasy ( ) są wymagane. Tylko uprawnienia SELECT, REFERENCES, UPDATE i UNMASK można przyznać w kolumnie. column_name można określić w klauzuli permissions lub po zabezpieczanej nazwie.

Caution

Odmowa na poziomie tabeli nie ma pierwszeństwa przed grantem na poziomie kolumny. Ta niespójność w hierarchii uprawnień została zachowana w celu zapewnienia zgodności z poprzednimi wersjami.

ON [ OBJECT:: ] [ schema_name ] . object_name

Określa obiekt, na którym udzielono uprawnień. Fraza OBJECT jest opcjonalna, jeśli określono schema_name . Jeśli jest używana fraza OBJECT, kwalifikator zakresu (::) jest wymagany. Jeśli schema_name nie zostanie określony, zostanie użyty schemat domyślny. Jeśli określono schema_name , wymagany jest kwalifikator zakresu schematu (.).

ABY <database_principal>

Określa podmiot zabezpieczeń, któremu udzielono uprawnień.

Z OPCJĄ UDZIELANIA

Wskazuje, że podmiot zabezpieczeń będzie również mieć możliwość udzielenia określonego uprawnienia innym podmiotom zabezpieczeń.

As <database_principal>

Określa podmiot zabezpieczeń, z którego podmiot zabezpieczeń wykonujący to zapytanie ma prawo przyznać uprawnienie.

Database_user
Określa użytkownika bazy danych.

Database_role
Określa rolę bazy danych.

Application_role
Określa rolę aplikacji.

Database_user_mapped_to_Windows_User
Określa użytkownika bazy danych zamapowanego na użytkownika systemu Windows.

Database_user_mapped_to_Windows_Group
Określa użytkownika bazy danych zamapowanego na grupę systemu Windows.

Database_user_mapped_to_certificate
Określa użytkownika bazy danych mapowanego na certyfikat.

Database_user_mapped_to_asymmetric_key
Określa użytkownika bazy danych mapowanego na klucz asymetryczny.

Database_user_with_no_login
Określa użytkownika bazy danych bez odpowiedniego podmiotu zabezpieczeń na poziomie serwera.

Remarks

Important

Kombinacja ALTER uprawnień i REFERENCE w niektórych przypadkach może umożliwić udzielonemu wyświetlanie danych lub wykonywanie nieautoryzowanych funkcji. Na przykład: użytkownik z ALTER uprawnieniami do tabeli i REFERENCE uprawnienia do funkcji może utworzyć obliczoną kolumnę za pośrednictwem funkcji i mieć ją wykonać. W takim przypadku użytkownik będzie również potrzebować SELECT uprawnień do obliczonej kolumny.

Informacje o obiektach są widoczne w różnych widokach wykazu. Aby uzyskać więcej informacji, zobacz Widoki wykazu obiektów (Transact-SQL).

Obiekt jest zabezpieczany na poziomie schematu zawarty w schemacie, który jest jego elementem nadrzędnym w hierarchii uprawnień. Najbardziej szczegółowe i ograniczone uprawnienia, które można udzielić dla obiektu, są wymienione w poniższej tabeli wraz z bardziej ogólnymi uprawnieniami, które obejmują je przez implikację.

Pozwolenie na obiekt Sugerowane przez uprawnienie obiektu Dorozumiane przez uprawnienie schematu
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

Powiązanie schematu nie jest obsługiwane w usłudze Azure Synapse Analytics, co może prowadzić do nieoczekiwanego zachowania, gdy obiekty bazowe są modyfikowane, a uprawnienia zostały przyznane widokowi. Aby uzyskać więcej informacji, zobacz Widoki języka T-SQL z dedykowaną pulą SQL i bezserwerową pulą SQL w usłudze Azure Synapse Analytics.

Permissions

Podmiot udzielający (lub podmiot zabezpieczeń określony z opcją AS) musi mieć uprawnienie z GRANT OPTIONuprawnieniem lub wyższym uprawnieniem, które oznacza przyznanie uprawnienia.

Jeśli używasz opcji AS, obowiązują następujące dodatkowe wymagania.

AS Wymagane dodatkowe uprawnienia
Użytkownik bazy danych IMPERSONATE uprawnienie użytkownika, członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Użytkownik bazy danych zamapowany na logowanie do systemu Windows IMPERSONATE uprawnienie użytkownika, członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Użytkownik bazy danych zamapowany na grupę systemu Windows Członkostwo w grupie systemu Windows, członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Użytkownik bazy danych zamapowany na certyfikat Członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Użytkownik bazy danych zamapowany na klucz asymetryczny Członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Użytkownik bazy danych nie jest mapowany na żadną jednostkę serwera IMPERSONATE uprawnienie użytkownika, członkostwo w stałej db_securityadmin roli bazy danych, członkostwo w stałej db_owner roli bazy danych lub członkostwo w stałej sysadmin roli serwera.
Rola bazy danych ALTER uprawnienia do roli, członkostwa w stałej db_securityadmin roli bazy danych, członkostwa w stałej db_owner roli bazy danych lub członkostwa w stałej sysadmin roli serwera.
Rola aplikacji ALTER uprawnienia do roli, członkostwa w stałej db_securityadmin roli bazy danych, członkostwa w stałej db_owner roli bazy danych lub członkostwa w stałej sysadmin roli serwera.

Examples

A. Udzielanie uprawnień SELECT w tabeli

Poniższy przykład przyznaje SELECT użytkownikowi uprawnienia do RosaQdM tabeli Person.Address w AdventureWorks2025 bazie danych.

Ten przykład nie działa w usłudze Microsoft Fabric, ponieważ używa użytkownika do uwierzytelnionego logowania SQL, ale ten sam przykład działa dla użytkownika usługi Microsoft Entra ID Fabric, na przykład RosaQdM@contoso.com.

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

B. Udzielanie uprawnień EXECUTE w procedurze składowanej

Poniższy przykład udziela EXECUTE uprawnień do procedury HumanResources.uspUpdateEmployeeHireInfo składowanej roli aplikacji o nazwie Recruiting11.

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

C. Udzielanie uprawnień REFERENCES w widoku z OPCJĄ UDZIELANIA

Poniższy przykład udziela REFERENCES uprawnień do kolumny w widoku BusinessEntityID użytkownikowi HumanResources.vEmployeeWanida za pomocą GRANT OPTIONpolecenia .

Ten przykład nie działa w usłudze Microsoft Fabric, ponieważ używa użytkownika do uwierzytelnionego logowania SQL, ale ten sam przykład działa dla użytkownika usługi Microsoft Entra ID Fabric, na przykład Wanida@contoso.com.

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

D. Udzielanie uprawnień SELECT w tabeli bez używania frazy OBJECT

Poniższy przykład przyznaje SELECT użytkownikowi uprawnienia do RosaQdM tabeli Person.Address w AdventureWorks2025 bazie danych.

Ten przykład nie działa w usłudze Microsoft Fabric, ponieważ używa użytkownika do uwierzytelnionego logowania SQL, ale ten sam przykład działa dla użytkownika usługi Microsoft Entra ID Fabric, na przykład RosaQdM@contoso.com.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. Udzielanie uprawnień SELECT w tabeli do konta domeny

Poniższy przykład przyznaje SELECT użytkownikowi uprawnienia do AdventureWorks2022\RosaQdM tabeli Person.Address w AdventureWorks2025 bazie danych.

Ten przykład, jak zapisano, nie działa w usłudze Microsoft Fabric, ponieważ używa konta domeny, ale ten sam przykład działa dla użytkownika usługi Microsoft Entra ID Fabric, na przykład RosaQdM@contoso.com.

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

F. Udzielanie uprawnień EXECUTE w procedurze roli

Poniższy przykład tworzy rolę, a następnie udziela EXECUTE uprawnień do roli w procedurze uspGetBillOfMaterialsAdventureWorks2025 w bazie danych.

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

G. Udzielanie uprawnień UNMASK w kolumnie

Poniższy przykład przyznaje UNMASK uprawnienie , część dynamicznego maskowania danych, dla kolumny email w tabeli Data.Membership użytkownikowi OutreachCoordinator.

Dynamiczne maskowanie danych nie jest obecnie obsługiwane w usłudze Microsoft Fabric.

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