Dela via


NEKA systemobjektbehörigheter (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Nekar behörigheter för systemobjekt som lagrade procedurer, utökade lagrade procedurer, funktioner och vyer.

Transact-SQL syntaxkonventioner

Syntax

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

Argumentpunkter

[ sys. ]

Kvalificeraren sys krävs endast när du refererar till katalogvyer och dynamiska hanteringsvyer.

system_object

Anger det objekt där behörighet nekas.

rektor

Anger det huvudnamn som behörigheten återkallas från.

Anmärkningar

Den här instruktionen kan användas för att neka behörigheter för vissa lagrade procedurer, utökade lagrade procedurer, tabellvärdesfunktioner, skalärfunktioner, vyer, katalogvyer, kompatibilitetsvyer, INFORMATION_SCHEMA vyer, dynamiska hanteringsvyer och systemtabeller som installeras av SQL Server. Vart och ett av dessa systemobjekt finns som en unik post i resursdatabasen (mssqlsystemresource). Resursdatabasen är skrivskyddad. En länk till objektet visas som en post i schemat för sys varje databas.

Standardnamnmatchning löser okvalificerade procedurnamn till resursdatabasen. Därför krävs kvalificeraren sys endast när du anger katalogvyer och dynamiska hanteringsvyer.

Försiktighet

Om du nekar behörigheter för systemobjekt misslyckas program som är beroende av dem. SQL Server Management Studio använder katalogvyer och kanske inte fungerar som förväntat om du ändrar standardbehörigheterna för katalogvyer.

Det går inte att neka behörigheter för utlösare och kolumner i systemobjekt.

Behörigheter för systemobjekt bevaras under SQL Server-uppgraderingar.

Systemobjekt visas i sys.system_objects katalogvy. Behörigheterna för systemobjekt visas i sys.database_permissions katalogvyn i master databasen.

Följande fråga returnerar information om behörigheter för systemobjekt:

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

Behörigheter

Kräver CONTROL SERVER behörighet.

Exempel

I följande exempel nekas EXECUTE behörighet xp_cmdshell till offentlig.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO