Sdílet prostřednictvím


Odepřít oprávnění systémového objektu (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

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

Transact-SQL konvence syntaxe

Syntax

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

Arguments

[sys. ]

sys Kvalifikátor se vyžaduje jenom v případě, že odkazujete na zobrazení katalogu a zobrazení dynamické správy.

system_object

Určuje objekt, u kterého je oprávnění odepřeno.

principal

Určuje objekt zabezpečení, ze kterého se oprávnění odvolává.

Remarks

Tento příkaz lze použít k odepření oprávnění k určitým uloženým procedurám, rozšířeným uloženým procedurám, skalárním funkcím, skalárním funkcím, zobrazením, zobrazením katalogu, zobrazením kompatibility, zobrazením, INFORMATION_SCHEMA dynamickým zobrazením správy a systémovým tabulkám nainstalovaným SQL Serverem. Každý z těchto systémových objektů existuje jako jedinečný záznam v databázi prostředků (mssqlsystemresource). Databáze prostředků je určená jen pro čtení. Odkaz na objekt se zobrazí jako záznam ve schématu sys každé databáze.

Výchozí překlad názvů překládá nekvalifikované názvy procedur do databáze prostředků. Kvalifikátor se proto vyžaduje jenom v případě, sys že zadáváte zobrazení katalogu a zobrazení dynamické správy.

Caution

Odepření oprávnění pro systémové objekty způsobí selhání aplikací, které na nich závisí. SQL Server Management Studio používá zobrazení katalogu a nemusí fungovat podle očekávání, pokud změníte výchozí oprávnění pro zobrazení katalogu.

Odepření oprávnění pro triggery a sloupce systémových objektů se nepodporuje.

Během upgradů SQL Serveru se zachovají oprávnění k systémovým objektům.

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

Následující příklad odmítne EXECUTE oprávnění xp_cmdshell k veřejnému přístupu.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO