Delen via


Machtigingen voor systeemobject weigeren (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

Hiermee worden machtigingen voor systeemobjecten, zoals opgeslagen procedures, uitgebreide opgeslagen procedures, functies en weergaven, geweigerd.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

[ sys. ]

De sys kwalificatie is alleen vereist wanneer u verwijst naar catalogusweergaven en dynamische beheerweergaven.

system_object

Hiermee geeft u het object op waarvoor de machtiging wordt geweigerd.

principal

Hiermee geeft u de principal van waaruit de machtiging wordt ingetrokken.

Remarks

Deze instructie kan worden gebruikt om machtigingen te weigeren voor bepaalde opgeslagen procedures, uitgebreide opgeslagen procedures, tabelwaardefuncties, scalaire functies, weergaven, catalogusweergaven, compatibiliteitsweergaven, INFORMATION_SCHEMA weergaven, dynamische beheerweergaven en systeemtabellen die zijn geïnstalleerd door SQL Server. Elk van deze systeemobjecten bestaat als een unieke record in de resourcedatabase (mssqlsystemresource). De resourcedatabase heeft het kenmerk Alleen-lezen. Een koppeling naar het object wordt weergegeven als een record in het sys schema van elke database.

Met standaardnaamomzetting worden niet-gekwalificeerde procedurenamen omgezet in de resourcedatabase. Daarom is de sys kwalificatie alleen vereist wanneer u catalogusweergaven en dynamische beheerweergaven opgeeft.

Caution

Als u machtigingen voor systeemobjecten weigert, mislukken toepassingen die hiervan afhankelijk zijn. SQL Server Management Studio maakt gebruik van catalogusweergaven en werkt mogelijk niet zoals verwacht, als u de standaardmachtigingen voor catalogusweergaven wijzigt.

Het weigeren van machtigingen voor triggers en kolommen met systeemobjecten wordt niet ondersteund.

Machtigingen voor systeemobjecten blijven behouden tijdens sql Server-upgrades.

Systeemobjecten zijn zichtbaar in de catalogusweergave sys.system_objects . De machtigingen voor systeemobjecten zijn zichtbaar in de sys.database_permissions catalogusweergave in de master database.

De volgende query retourneert informatie over machtigingen van systeemobjecten:

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

Hiervoor is CONTROL SERVER machtiging vereist.

Examples

In het volgende voorbeeld wordt EXECUTE de machtiging xp_cmdshell voor openbaar geweigerd.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO