GRANT - autorizzazioni per server (Transact-SQL)
Concede le autorizzazioni per un server.
Si applica a: SQL Server (da SQL Server 2008 alla versione corrente). |
Convenzioni della sintassi Transact-SQL
Sintassi
GRANT permission [ ,...n ]
TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ AS <grantor_principal> ]
<grantee_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
<grantor_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
Argomenti
permission
Specifica un'autorizzazione che può essere concessa per un server. Per un elenco delle autorizzazioni, vedere la sezione Osservazioni di seguito in questo argomento.TO <grantee_principal>
Specifica l'entità a cui viene concessa l'autorizzazione.AS <grantor_principal>
Specifica un'entità dalla quale l'entità che esegue la query ottiene il diritto di concedere l'autorizzazione.WITH GRANT OPTION
Indica che l'entità potrà inoltre concedere l'autorizzazione specificata ad altre entità.SQL_Server_login
Specifica un account di accesso di SQL Server.SQL_Server_login_mapped_to_Windows_login
Specifica un account di accesso di SQL Server sul quale viene eseguito il mapping a un utente di Windows.SQL_Server_login_mapped_to_Windows_group
Specifica un account di accesso di SQL Server sul quale viene eseguito il mapping a un gruppo di Windows.SQL_Server_login_mapped_to_certificate
Specifica un account di accesso di SQL Server di cui è stato eseguito il mapping a un certificato.SQL_Server_login_mapped_to_asymmetric_key
Specifica un account di accesso di SQL Server di cui è stato eseguito il mapping a una chiave asimmetrica.server_role
Specifica un ruolo del server definito dall'utente.
Osservazioni
È possibile concedere autorizzazioni nell'ambito del server solo se il database corrente è il database master.
È possibile visualizzare le informazioni sulle autorizzazioni del server nella vista del catalogo sys.server_permissions e le informazioni sulle entità server nella vista del catalogo sys.server_principals. Le informazioni sulle appartenenze dei ruoli del server sono visibili nella vista del catalogo sys.server_role_members.
Un server rappresenta il livello più alto nella gerarchia delle autorizzazioni. Nella tabella seguente sono elencate le autorizzazioni più specifiche e limitate che è possibile concedere per un server.
Autorizzazione del server |
Autorizzazione del server in cui è inclusa |
---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP Si applica a: SQL Server (da SQL Server 2012 alla versione corrente). |
CONTROL SERVER |
ALTER ANY CONNECTION |
CONTROL SERVER |
ALTER ANY CREDENTIAL |
CONTROL SERVER |
ALTER ANY DATABASE |
CONTROL SERVER |
ALTER ANY ENDPOINT |
CONTROL SERVER |
ALTER ANY EVENT NOTIFICATION |
CONTROL SERVER |
ALTER ANY EVENT SESSION |
CONTROL SERVER |
ALTER ANY LINKED SERVER |
CONTROL SERVER |
ALTER ANY LOGIN |
CONTROL SERVER |
ALTER ANY SERVER AUDIT |
CONTROL SERVER |
ALTER ANY SERVER ROLE Si applica a: SQL Server (da SQL Server 2012 alla versione corrente). |
CONTROL SERVER |
ALTER RESOURCES |
CONTROL SERVER |
ALTER SERVER STATE |
CONTROL SERVER |
ALTER SETTINGS |
CONTROL SERVER |
ALTER TRACE |
CONTROL SERVER |
AUTHENTICATE SERVER |
CONTROL SERVER |
CONNECT ANY DATABASE Si applica a: SQL Server (da SQL Server 2014 alla versione corrente). |
CONTROL SERVER |
CONNECT SQL |
CONTROL SERVER |
CONTROL SERVER |
CONTROL SERVER |
CREATE ANY DATABASE |
ALTER ANY DATABASE |
CREATE AVAILABILITY GROUP Si applica a: SQL Server (da SQL Server 2012 alla versione corrente). |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE Si applica a: SQL Server (da SQL Server 2012 alla versione corrente). |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY |
CONTROL SERVER |
IMPERSONATE ANY LOGIN Si applica a: SQL Server (da SQL Server 2014 alla versione corrente). |
CONTROL SERVER |
SELECT ALL USER SECURABLES Si applica a: SQL Server (da SQL Server 2014 alla versione corrente). |
CONTROL SERVER |
SHUTDOWN |
CONTROL SERVER |
UNSAFE ASSEMBLY |
CONTROL SERVER |
VIEW ANY DATABASE |
VIEW ANY DEFINITION |
VIEW ANY DEFINITION |
CONTROL SERVER |
VIEW SERVER STATE |
ALTER SERVER STATE |
Osservazioni
In SQL Server 2014 sono state aggiunte le tre autorizzazioni server riportate di seguito.
Autorizzazione CONNECT ANY DATABASE
Concedere l'autorizzazione CONNECT ANY DATABASE a un account di accesso che deve connettersi a tutti i database attualmente esistenti e ai nuovi database che potrebbero essere creati in futuro. Non concede alcuna autorizzazione nei database oltre la connessione. Combinare con SELECT ALL USER SECURABLES o VIEW SERVER STATE per consentire a un processo di controllo di visualizzare tutti i dati o tutti gli stati del database nell'istanza di SQL Server.Autorizzazione IMPERSONATE ANY LOGIN
Quando viene concessa, consente a un processo di livello intermedio di rappresentare l'account dei client a cui ci si connette, quando si connette ai database. Quando viene negata, è possibile che a un account di accesso con privilegi elevati venga impedito di rappresentare altri account di accesso. Ad esempio, è possibile che a un account di accesso con autorizzazione CONTROL SERVER venga impedito di rappresentare altri account di accesso.Autorizzazione SELECT ALL USER SECURABLES
Quando viene concessa, un account di accesso, ad esempio un revisore, può visualizzare i dati in tutti i database a cui l'utente può connettersi. Quando negata, impedisce l'accesso agli oggetti a meno che non siano nello schema sys.
Autorizzazioni
L'utente che concede le autorizzazioni (o l'entità specificata con l'opzione AS) deve disporre della relativa autorizzazione con GRANT OPTION oppure di un'autorizzazione di livello superiore che include l'autorizzazione che viene concessa. I membri del ruolo predefinito del server sysadmin possono concedere qualsiasi autorizzazione.
Esempi
A.Concessione di un'autorizzazione a un account di accesso
Nell'esempio seguente viene concessa l'autorizzazione CONTROL SERVER all'account di accesso di SQL Server TerryEminhizer.
USE master;
GRANT CONTROL SERVER TO TerryEminhizer;
GO
B.Concessione di un'autorizzazione che include l'autorizzazione GRANT
Nell'esempio seguente viene concessa l'autorizzazione ALTER ANY EVENT NOTIFICATION all'account di accesso di SQL Server JanethEsteves con il diritto di concedere tale autorizzazione a un altro account di accesso.
USE master;
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;
GO
C.Concessione di un'autorizzazione a un ruolo del server
Nell'esempio seguente vengono creati due ruoli del server denominati ITDevAdmin e ITDevelopers. Concede l'autorizzazione ALTER ANY DATABASE al ruolo del server definito dall'utente ITDevAdmin inclusa l'opzione WITH GRANT in modo che il ruolo del server ITDevAdmin possa riassegnare l'autorizzazione ALTER ANY DATABASE. Nell'esempio viene quindi concessa a ITDevelopers l'autorizzazione per l'utilizzo dell'autorizzazione ALTER ANY DATABASE del ruolo del server ITDevAdmin.
USE master;
CREATE SERVER ROLE ITDevAdmin ;
CREATE SERVER ROLE ITDevelopers ;
GRANT ALTER ANY DATABASE TO ITDevAdmin WITH GRANT OPTION ;
GRANT ALTER ANY DATABASE TO ITDevelopers AS ITDevAdmin ;
GO
Vedere anche
Riferimento
DENY - autorizzazioni per server (Transact-SQL)
REVOKE - autorizzazioni per server (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)