GRANT Systemobjektbehörigheter (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Ger behörigheter på systemobjekt såsom systemlagrade procedurer, utökade lagrade procedurer, funktioner och vyer.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

[ sys. ]

Systemkvalificeringen krävs endast när du syftar på katalogvyer och dynamiska hanteringsvyer.

system_object

Specificerar objektet för vilket tillstånd ges.

principal

Anger det huvudnamn som behörigheten beviljas till.

Remarks

Detta uttalande kan användas för att ge behörigheter på vissa lagrade procedurer, utökade lagrade procedurer, tabellvärda funktioner, skalärfunktioner, vyer, katalogvyer, kompatibilitetsvyer, vyer, INFORMATION_SCHEMA dynamiska hanteringsvyer och systemtabeller som installeras av SQL Server. Var och en av dessa systemobjekt existerar som en unik post i serverns resursdatabas (mssqlsystemresource). Resursdatabasen är skrivskyddad. En länk till objektet exponeras som en post i systemschemat för varje databas. Behörighet att köra eller välja ett systemobjekt kan beviljas, nekas och återkallas.

Att ge tillstånd att köra eller välja ett objekt innebär inte nödvändigtvis att alla behörigheter som krävs för att använda objektet. De flesta objekt utför operationer för vilka extra behörigheter krävs. Till exempel kan en användare som har tillstånd på EXECUTEsp_addlinkedserver inte skapa en länkad server om inte användaren också tillhör sysadmin-fixserverrollen .

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

Att ge behörigheter på triggers och kolumner i systemobjekt stöds inte.

Behörigheter på systemobjekt bevaras vid uppgraderingar av SQL Server.

Du måste vara i databasen master för att ge behörigheter, och den principal du ger behörigheterna till måste vara en användare i databasen master . Det vill säga, om de är servernivåbehörigheter kan du inte ge dem till serverhuvudenare, bara databasprinciper.

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

Permissions

Kräver behörighet för kontroll av server.

Examples

A. Bevilja SELECT-behörighet på en vy

Följande exempel ger SQL Server-inloggningsbehörighet Sylvester1 att välja en vy som listar SQL Server-inloggningar. Exemplet ger sedan den extra behörighet som krävs för att se metadata på SQL Server-inloggningar som användaren inte äger.

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

B. Ge EXECUTE-behörighet för en utökad lagrad procedur

Följande exempel ger EXECUTE tillstånd på xp_readmail .Sylvester1

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