Octroi, révocation et refus d'autorisations
L'objet ServerPermission est utilisé pour attribuer un jeu d'autorisations ou une autorisation de serveur individuelle à l'objet ServerPermissionSet. Pour les autorisations de niveau serveur, le bénéficiaire fait référence à une ouverture de session. Les ouvertures de session authentifiées par Windows sont répertoriées comme noms d'utilisateur Windows. Lorsque cet exemple de code est exécuté, il révoque l'autorisation du bénéficiaire et vérifie qu'il a été supprimé avec la méthode EnumServerPermissions.
Les autorisations relatives à la base de données et les autorisations relatives aux objets de base de données peuvent être attribuées de la même façon en utilisant l'objet DatabasePermissionSet et l'objet ObjectPermissionSet.
Exemple
Pour utiliser un exemple de code fourni, vous devez sélectionner l'environnement, le modèle et le langage de programmation à utiliser pour créer votre application. Pour plus d'informations, consultez Procédure : créer un projet SMO Visual Basic dans Visual Studio .NET ou Procédure : créer un projet SMO Visual C# dans Visual Studio .NET.
Octroi d'autorisations de serveur en Visual Basic
Cet exemple de code octroie les autorisations Create Endpoint et Alter Any Endpoint à la connexion spécifiée, puis énumère et affiche les autorisations. L'une des autorisations est révoquée, puis les autorisations sont à nouveau énumérées. Cet exemple suppose que la connexion spécifiée dispose des autorisations de démarrage requises.
'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("")
Octroi d'autorisations de serveur en Visual C#
Cet exemple de code octroie les autorisations Create Endpoint et Alter Any Endpoint à la connexion spécifiée, puis énumère et affiche les autorisations. L'une des autorisations est révoquée, puis les autorisations sont à nouveau énumérées. Cet exemple suppose que la connexion spécifiée dispose des autorisations de démarrage requises.
//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("");
}