GRANT Oprávnění systémových objektů (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Uděluje oprávnění k systémovým objektům, jako jsou systémové uložené procedury, rozšířené uložené procedury, funkce a pohledy.

Transact-SQL konvence syntaxe

Syntax

GRANT { SELECT | EXECUTE } ON [ sys. ] system_object TO principal
[ ; ]

Arguments

[sys. ]

Kvalifikátor pro sys je potřeba pouze tehdy, když mluvíte o katalogových a dynamických manažerských pohledech.

system_object

Specifikuje objekt, na který je oprávnění uděleno.

principal

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

Remarks

Tento příkaz lze použít k udělení oprávnění k určitým uloženým procedurám, rozšířeným uloženým procedurám, funkcím s tabulkovými hodnotami, skalárním funkcím, pohledům, katalogovým pohledům, kompatibilitním pohledům, pohledům, INFORMATION_SCHEMA dynamickým správním pohledům a systémovým tabulkám instalovaným SQL Server. Každý z těchto systémových objektů existuje jako jedinečný záznam v databázi zdrojů serveru (mssqlsystemresource). Databáze prostředků je určená jen pro čtení. Odkaz na objekt je vystaven jako záznam v systémovém schématu každé databáze. Povolení ke spuštění nebo výběru systémového objektu může být uděleno, zamítnuto a odebráno.

Udělení oprávnění k vykonání nebo výběru objektu nemusí nutně sdělit všechna oprávnění potřebná k použití objektu. Většina objektů provádí operace, pro které jsou potřeba další oprávnění. Například uživatel, kterému je uděleno EXECUTE oprávnění , sp_addlinkedserver nemůže vytvořit propojený server, pokud není zároveň členem role pevného správce systému .

Výchozí překlad názvů překládá nekvalifikované názvy procedur do databáze prostředků. Proto je sys kvalifikátor potřeba pouze tehdy, když specifikujete katalogové a dynamické manažerské pohledy.

Udělování oprávnění na triggery a sloupce systémových objektů není podporováno.

Oprávnění na systémových objektech jsou zachována během upgradů SQL Server.

Musíte být v databázi master , abyste mohli udělit oprávnění, a principál, kterému je udělujete, musí být uživatelem v databázi master . To znamená, že pokud jde o serverová oprávnění, nemůžete je udělit principalům serveru, pouze principalům databáze.

Systémové objekty jsou viditelné v zobrazení katalogu sys.system_objects. Oprávnění k systémovým objektům jsou viditelná v zobrazení katalogu sys.database_permissions v databázi master.

Následující dotaz vrátí informace o oprávněních systémových objektů:

SELECT *
FROM master.sys.database_permissions AS dp
INNER JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0;
GO

Permissions

Vyžaduje oprávnění CONTROL SERVER.

Examples

A. Udělit povolení SELECT k zobrazení

Následující příklad uděluje SQL Server oprávnění k Sylvester1 přihlášení vybrat pohled, který uvádí přihlašovací údaje do SQL Server. Příklad pak uděluje dodatečné oprávnění potřebné k prohlížení metadat na přihlašovacích osobách SQL Server, které uživatel nevlastní.

USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

B. Udělit povolení EXECUTE na rozšířenou uloženou proceduru

Následující příklad dává EXECUTE povolení na xp_readmail .Sylvester1

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO