GRANT - autorizzazioni per oggetti di sistema (Transact-SQL)
Concede le autorizzazioni per oggetti di sistema come stored procedure, stored procedure estese, funzioni e viste.
Sintassi
GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal
Argomenti
[ sys.] .
Il qualificatore sys è obbligatorio solo per riferimenti 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
È possibile utilizzare questa istruzione per concedere le autorizzazioni per particolari 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 include necessariamente tutte le autorizzazioni necessarie per l'utilizzo dell'oggetto. La maggior parte degli oggetti esegue operazioni per cui sono richieste autorizzazioni aggiuntive. Ad esempio, un utente a cui viene concessa l'autorizzazione EXECUTE per sp_addlinkedserver non potrà creare un server collegato a meno che 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. Il qualificatore sys è pertanto obbligatorio solo quando si specificano viste del catalogo e viste a gestione dinamica.
Non è supportata la concessione di autorizzazioni per i trigger e le colonne di oggetti di sistema.
Le autorizzazioni per gli oggetti di sistema vengono mantenute in caso di aggiornamento di SQL Server.
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
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
A. Concessione dell'autorizzazione SELECT per una vista
Nell'esempio seguente viene concessa all'account di accesso di SQL ServerSylvester1 l'autorizzazione per la selezione di una vista che elenca gli account di accesso di SQL Server. Nell'esempio viene poi concessa l'autorizzazione aggiuntiva necessaria per la visualizzazione dei metadati relativi agli account di accesso di SQL Server di cui l'utente non è proprietario.
USE AdventureWorks;
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO
B. Concessione dell'autorizzazione EXECUTE per una stored procedure estesa
Nell'esempio seguente viene concessa l'autorizzazione EXECUTE per xp_readmail a Sylvester1.
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO