Condividi tramite


Concessione, revoca e negazione delle autorizzazioni

L'oggetto ServerPermission viene utilizzato per assegnare un set di autorizzazioni o una singola autorizzazione del server all'oggetto ServerPermissionSet. Per le autorizzazioni al livello del server, l'utente autorizzato fa riferimento a un account di accesso. Gli account di accesso autenticati da Windows sono elencati come nomi utente di Windows. Quando viene eseguito questo esempio di codice, l'autorizzazione viene revocata all'utente autorizzato e ne viene verificata la rimozione con il metodo EnumServerPermissions.

Le autorizzazioni per i database e gli oggetti di database possono essere assegnate analogamente tramite l'oggetto DatabasePermissionSet e l'oggetto ObjectPermissionSet.

Esempio

Per utilizzare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente, il modello e il linguaggio di programmazione per la creazione dell'applicazione. Per ulteriori informazioni, vedere Procedura: Creazione di un progetto Visual Basic SMO in Visual Studio .NET o Procedura: Creazione di un progetto Visual C# SMO in Visual Studio .NET.

Concessione delle autorizzazioni del server in Visual Basic

In questo esempio di codice vengono concesse le autorizzazioni Create Endpoint e Alter Any Endpoint all'account di accesso specificato, quindi le autorizzazioni vengono enumerate e visualizzate. Una delle autorizzazioni viene revocata e successivamente le autorizzazioni vengono nuovamente enumerate. In questo esempio si presuppone che l'account di accesso specificato disponga delle autorizzazioni specificate con cui iniziare.

'Connect to the local, default instance of SQL Server.
Dim svr As Server
svr = New Server()
'Define a ServerPermissionSet that contains permission to Create Endpoint and Alter Any Endpoint.
Dim sps As ServerPermissionSet
sps = New ServerPermissionSet(ServerPermission.CreateEndpoint)
sps.Add(ServerPermission.AlterAnyEndpoint)
'This sample assumes that the grantee already has permission to Create Endpoints. 
'Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable.
Dim spis As ServerPermissionInfo()
spis = svr.EnumServerPermissions(vGrantee, sps)
Dim spi As ServerPermissionInfo
Console.WriteLine("=================Before revoke===========================")
For Each spi In spis
    Console.WriteLine(spi.Grantee & " has " & spi.PermissionType.ToString & " permission.")
Next
Console.WriteLine(" ")
'Remove a permission from the set.
sps.Remove(ServerPermission.CreateEndpoint)
'Revoke the create endpoint permission from the grantee.
svr.Revoke(sps, vGrantee)
'Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable.
spis = svr.EnumServerPermissions(vGrantee, sps)
Console.WriteLine("=================After revoke============================")
For Each spi In spis
    Console.WriteLine(spi.Grantee & " has " & spi.PermissionType.ToString & " permission.")
Next
Console.WriteLine(" ")
'Grant the Create Endpoint permission to the grantee.
svr.Grant(sps, vGrantee)
'Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable.
spis = svr.EnumServerPermissions(vGrantee, sps)
Console.WriteLine("=================After grant=============================")
For Each spi In spis
    Console.WriteLine(spi.Grantee & " has " & spi.PermissionType.ToString & " permission.")
Next
Console.WriteLine("")

Concessione delle autorizzazioni del server in Visual C#

In questo esempio di codice vengono concesse le autorizzazioni Create Endpoint e Alter Any Endpoint all'account di accesso specificato, quindi le autorizzazioni vengono enumerate e visualizzate. Una delle autorizzazioni viene revocata e successivamente le autorizzazioni vengono nuovamente enumerate. In questo esempio si presuppone che l'account di accesso specificato disponga delle autorizzazioni specificate con cui iniziare.

//Connect to the local, default instance of SQL Server. 
{ 
Server svr = default(Server); 
svr = new Server(); 
//Define a ServerPermissionSet that contains permission to Create Endpoint and Alter Any Endpoint. 
ServerPermissionSet sps = default(ServerPermissionSet); 
sps = new ServerPermissionSet(ServerPermission.CreateEndpoint); 
sps.Add(ServerPermission.AlterAnyEndpoint); 
//This sample assumes that the grantee already has permission to Create Endpoints. 
//Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable. 
ServerPermissionInfo[] spis = null; 
spis = svr.EnumServerPermissions(vGrantee, sps); 
ServerPermissionInfo spi = default(ServerPermissionInfo); 
Console.WriteLine("===========Before revoke=================="); 
foreach ( spi in spis) { 
    Console.WriteLine(spi.Grantee + " has " + spi.PermissionType.ToString + " permission."); 
} 
Console.WriteLine(" "); 
//Remove a permission from the set. 
sps.Remove(ServerPermission.CreateEndpoint); 
//Revoke the create endpoint permission from the grantee. 
svr.Revoke(sps, vGrantee); 
//Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable. 
spis = svr.EnumServerPermissions(vGrantee, sps); 
Console.WriteLine("=========After revoke================"); 
foreach ( spi in spis) { 
    Console.WriteLine(spi.Grantee + " has " + spi.PermissionType.ToString + " permission."); 
} 
Console.WriteLine(" "); 
//Grant the Create Endpoint permission to the grantee. 
svr.Grant(sps, vGrantee); 
//Enumerate and display the server permissions in the set for the grantee specified in the vGrantee string variable. 
spis = svr.EnumServerPermissions(vGrantee, sps); 
Console.WriteLine("=========After grant==============="); 
foreach ( spi in spis) { 
    Console.WriteLine(spi.Grantee + " has " + spi.PermissionType.ToString + " permission."); 
} 
Console.WriteLine(""); 
}