Sdílet prostřednictvím


Oprávnění k objektu GRANT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Uděluje oprávnění pro tabulku, zobrazení, funkci s hodnotou tabulky, uloženou proceduru, rozšířenou uloženou proceduru, skalární funkci, agregační funkci, frontu služby nebo synonyma.

Transact-SQL konvence syntaxe

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

Určuje oprávnění, které lze udělit u objektu obsaženého ve schématu. Seznam oprávnění najdete v části Poznámky.

ALL

Udělení všech možných oprávnění neuděluje všechna možná oprávnění. Udělení funkce ALL odpovídá udělení všech oprávnění ANSI-92 použitelných pro zadaný objekt. Význam ALL se liší takto:

  • Oprávnění skalárních funkcí: EXECUTE, REFERENCES.
  • Oprávnění funkce s hodnotou tabulky: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Oprávnění uložené procedury: EXECUTE.
  • Oprávnění tabulky: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Zobrazit oprávnění: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

Caution

Oprávnění ALL je zastaralé a udržuje se pouze kvůli kompatibilitě.

PRIVILEGES

Součástí je dodržování předpisů ANSI-92. Nemění chování funkce ALL.

column_name

Určuje název sloupce v tabulce, zobrazení nebo funkci s hodnotou tabulky, pro kterou se oprávnění uděluje. Jsou vyžadovány závorky (). U sloupce je možné udělit pouze oprávnění SELECT, REFERENCES, UPDATE a UNMASK. column_name lze zadat v klauzuli oprávnění nebo za zabezpečitelným názvem.

Caution

Odepření na úrovni tabulky nemá přednost před udělením na úrovni sloupce. Tato nekonzistence v hierarchii oprávnění byla zachována kvůli zpětné kompatibilitě.

NA [ OBJEKT :: ] [ schema_name ] . object_name

Určuje objekt, u kterého se oprávnění uděluje. Pokud je zadána schema_name, je fráze OBJECT volitelná. Pokud se použije fráze OBJECT, je vyžadován kvalifikátor oboru (::). Pokud není zadán schema_name , použije se výchozí schéma. Pokud je zadán schema_name , je vyžadován kvalifikátor oboru schématu (.).

NA <database_principal>

Určuje objekt zabezpečení, ke kterému se oprávnění uděluje.

S MOŽNOSTÍ UDĚLENÍ

Označuje, že objekt zabezpečení bude mít také možnost udělit zadané oprávnění jiným objektům zabezpečení.

DATABASE_PRINCIPAL AS <>

Určuje objekt zabezpečení, ze kterého objekt zabezpečení, který spouští tento dotaz, odvozuje své právo udělit oprávnění.

Database_user
Určuje uživatele databáze.

Database_role
Určuje roli databáze.

Application_role
Určuje roli aplikace.

Database_user_mapped_to_Windows_User
Určuje uživatele databáze mapované na uživatele systému Windows.

Database_user_mapped_to_Windows_Group
Určuje uživatele databáze mapované na skupinu Windows.

Database_user_mapped_to_certificate
Určuje uživatele databáze mapované na certifikát.

Database_user_mapped_to_asymmetric_key
Určuje uživatele databáze namapovaný na asymetrický klíč.

Database_user_with_no_login
Určuje uživatele databáze bez odpovídajícího objektu zabezpečení na úrovni serveru.

Remarks

Important

Kombinace ALTER a REFERENCE oprávnění v některých případech může uživateli udělit oprávnění k zobrazení dat nebo spuštění neautorizovaných funkcí. Příklad: Uživatel s oprávněním ALTER k tabulce a REFERENCE oprávnění funkce může vytvořit počítaný sloupec nad funkcí a nechat ho spustit. V takovém případě by uživatel také potřeboval SELECT oprávnění k počítaného sloupci.

Informace o objektech jsou viditelné v různých zobrazeních katalogu. Další informace naleznete v tématu Zobrazení katalogu objektů (Transact-SQL).

Objekt je zabezpečitelná na úrovni schématu obsažená schématem, který je jeho nadřazeným objektem v hierarchii oprávnění. Nejvýraznější a omezená oprávnění, která lze udělit u objektu, jsou uvedena v následující tabulce společně s obecnějšími oprávněními, která je zahrnují implikací.

Oprávnění objektu Implicitní oprávnění objektu Implicitní oprávnění schématu
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

Vazba schématu není ve službě Azure Synapse Analytics podporovaná, což může vést k neočekávanému chování při změně podkladových objektů a udělení oprávnění k zobrazení. Další informace najdete v tématu Zobrazení T-SQL s vyhrazeným fondem SQL a bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Permissions

Grantor (nebo objekt zabezpečení zadaný s možností AS) musí mít buď oprávnění samotná s GRANT OPTION, nebo vyšší oprávnění, které znamená udělení oprávnění.

Pokud používáte možnost AS, platí následující další požadavky.

AS Další požadovaná oprávnění
Uživatel databáze IMPERSONATE oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Uživatel databáze namapovaný na přihlášení k Systému Windows IMPERSONATE oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Uživatel databáze namapovaný na skupinu Windows Členství ve skupině Windows, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Uživatel databáze namapovaný na certifikát Členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Uživatel databáze namapovaný na asymetrický klíč Členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Uživatel databáze není namapovaný na žádný objekt zabezpečení serveru IMPERSONATE oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Role databáze ALTER oprávnění k roli, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.
Aplikační role ALTER oprávnění k roli, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v sysadmin pevné roli serveru.

Examples

A. Udělení oprávnění SELECT v tabulce

Následující příklad uděluje SELECT uživateli RosaQdM oprávnění k tabulce Person.Address v AdventureWorks2025 databázi.

Tento příklad jako napsaný nefunguje v Microsoft Fabric, protože používá uživatele pro ověřené přihlášení SQL, ale tento stejný příklad by fungoval pro uživatele Microsoft Entra ID Fabric, RosaQdM@contoso.comnapříklad .

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

B. Udělení oprávnění EXECUTE pro uloženou proceduru

Následující příklad uděluje EXECUTE oprávnění pro uloženou proceduru HumanResources.uspUpdateEmployeeHireInfo k roli aplikace volaný Recruiting11.

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

C. Udělení oprávnění REFERENCE v zobrazení pomocí MOŽNOSTI GRANT

Následující příklad uděluje REFERENCES oprávnění ke sloupci BusinessEntityID v zobrazení HumanResources.vEmployee uživateli Wanida s GRANT OPTION.

Tento příklad jako napsaný nefunguje v Microsoft Fabric, protože používá uživatele pro ověřené přihlášení SQL, ale tento stejný příklad by fungoval pro uživatele Microsoft Entra ID Fabric, Wanida@contoso.comnapříklad .

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

D. Udělení oprávnění SELECT v tabulce bez použití fráze OBJECT

Následující příklad uděluje SELECT uživateli RosaQdM oprávnění k tabulce Person.Address v AdventureWorks2025 databázi.

Tento příklad jako napsaný nefunguje v Microsoft Fabric, protože používá uživatele pro ověřené přihlášení SQL, ale tento stejný příklad by fungoval pro uživatele Microsoft Entra ID Fabric, RosaQdM@contoso.comnapříklad .

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. Udělení oprávnění SELECT pro tabulku účtu domény

Následující příklad uděluje SELECT uživateli AdventureWorks2022\RosaQdM oprávnění k tabulce Person.Address v AdventureWorks2025 databázi.

Tento příklad jako napsaný nefunguje v Microsoft Fabric, protože používá účet domény, ale tento stejný příklad by fungoval pro uživatele Microsoft Entra ID Fabric, RosaQdM@contoso.comnapříklad .

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

F. Udělení oprávnění EXECUTE pro proceduru roli

Následující příklad vytvoří roli a pak udělí EXECUTE oprávnění k roli pro proceduru uspGetBillOfMaterialsAdventureWorks2025 v databázi.

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

G. Udělení oprávnění UNMASK u sloupce

Následující příklad uděluje UNMASK oprávnění, část dynamického maskování dat, pro sloupec email v tabulce Data.Membership uživatele OutreachCoordinator.

Dynamické maskování dat se v současné době v Microsoft Fabric nepodporuje.

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