GRANT - autorizzazioni per oggetti di sistema (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Concede le autorizzazioni per oggetti di sistema come stored procedure di sistema, stored procedure estese, funzioni e viste.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ sys. ]

Il qualificatore sys è obbligatorio solo quando si fa riferimento a viste del catalogo e viste a gestione dinamica.

system_object

Specifica l'oggetto per cui viene concessa l'autorizzazione.

principal

Specifica l'entità a cui viene concessa l'autorizzazione.

Osservazioni:

Questa istruzione può essere usata per concedere autorizzazioni per determinate stored procedure, stored procedure estese, funzioni con valori di tabella, funzioni scalari, viste, viste del catalogo, viste di compatibilità, viste, INFORMATION_SCHEMA viste a gestione dinamica e tabelle di sistema installate da SQL Server. Ognuno di questi oggetti di sistema esiste come record univoco nel database delle risorse del server (mssqlsystemresource). Il database delle risorse è di sola lettura. Un collegamento all'oggetto è disponibile in forma di record nello schema sys di tutti i database. È possibile concedere, negare o revocare le autorizzazioni per l'esecuzione o la selezione di un oggetto di sistema.

La concessione dell'autorizzazione per l'esecuzione o la selezione di un oggetto non fornisce necessariamente tutte le autorizzazioni necessarie per l'uso dell'oggetto. La maggior parte degli oggetti esegue operazioni per le quali sono necessarie autorizzazioni aggiuntive. Ad esempio, un utente a cui viene concessa EXECUTE l'autorizzazione sp_addlinkedserver per non può creare un server collegato, a meno che l'utente non sia anche membro del ruolo predefinito del server sysadmin .

I nomi di procedure non qualificati vengono risolti dal processo predefinito di risoluzione dei nomi nel database delle risorse. Pertanto, il qualificatore sys è necessario solo quando si specificano viste del catalogo e viste a gestione dinamica.

La concessione delle autorizzazioni per i trigger e per le colonne di oggetti di sistema non è supportata.

Le autorizzazioni per gli oggetti di sistema vengono mantenute durante gli aggiornamenti di SQL Server.

È necessario trovarsi nel master database per concedere le autorizzazioni e l'entità a cui si concedono le autorizzazioni deve essere un utente nel master database. Ovvero, se si tratta di autorizzazioni a livello di server, non è possibile concederle alle entità server, ma solo alle entità di database.

Gli oggetti di sistema sono visibili nella vista del catalogo sys.system_objects . Le autorizzazioni per gli oggetti di sistema sono visibili nella vista del catalogo sys.database_permissions nel database master.

La query seguente restituisce informazioni sulle autorizzazioni degli oggetti di sistema:

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

Autorizzazioni

È richiesta l'autorizzazione CONTROL SERVER.

Esempi

R. Concedere l'autorizzazione SELECT per una visualizzazione

Nell'esempio seguente viene concessa all'account di accesso di SQL Server Sylvester1l'autorizzazione per la selezione di una vista che elenca gli account di accesso di SQL Server. L'esempio concede quindi l'autorizzazione aggiuntiva necessaria per visualizzare i metadati negli account di accesso di SQL Server di cui l'utente non è proprietario.

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

B. Concedere l'autorizzazione EXECUTE per una stored procedure estesa

Nell'esempio seguente viene concessa l'autorizzazione EXECUTE per xp_readmail a Sylvester1.

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