Zarządzanie użytkownikami, rolami i identyfikatorami logowania
Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed Instanceazure Synapse AnalyticsSQL Database w usłudze Microsoft Fabric
W środowisku SMO identyfikatory logowania są reprezentowane przez obiekt Login. Gdy logowanie istnieje w programie SQL Server, można go dodać do roli serwera. Rola serwera jest reprezentowana przez obiekt ServerRole. Rola bazy danych jest reprezentowana przez obiekt DatabaseRole, a rola aplikacji jest reprezentowana przez obiekt ApplicationRole.
Uprawnienia skojarzone z poziomem serwera są wyświetlane jako właściwości obiektu ServerPermission. Uprawnienia na poziomie serwera można przyznać, odmówić lub odwołać z poszczególnych kont logowania.
Każdy obiekt Database ma obiekt UserCollection, który określa wszystkich użytkowników w bazie danych. Każdy użytkownik jest skojarzony z logowaniem. Jedno logowanie może być skojarzone z użytkownikami w więcej niż jednej bazie danych. Metoda EnumDatabaseMappings obiektu Login może służyć do wyświetlania listy wszystkich użytkowników w każdej bazie danych skojarzonej z logowaniem. Alternatywnie właściwość Login obiektu User określa logowanie skojarzone z użytkownikiem.
Bazy danych programu SQL Server mają również role określające zestaw uprawnień na poziomie bazy danych, które umożliwiają użytkownikowi wykonywanie określonych zadań. W przeciwieństwie do ról serwera role bazy danych nie są stałe. Można je tworzyć, modyfikować i usuwać. Uprawnienia i użytkownicy mogą być przypisywani do roli bazy danych na potrzeby administracji zbiorczej.
Przykład
W poniższych przykładach kodu należy wybrać środowisko programowania, szablon programowania i język programowania, aby utworzyć aplikację. Aby uzyskać więcej informacji, zobacz Create a Visual C# SMO Project in Visual Studio .NET(Tworzenie projektu SMO w programie Visual Studio .NET).
Wyliczanie identyfikatorów logowania i skojarzonych użytkowników w programie Visual C#
Każdy użytkownik w bazie danych jest skojarzony z logowaniem. Logowanie może być skojarzone z użytkownikami w więcej niż jednej bazie danych. W przykładzie kodu pokazano, jak wywołać metodę EnumDatabaseMappings obiektu Login, aby wyświetlić listę wszystkich użytkowników bazy danych skojarzonych z logowaniem. W przykładzie utworzono logowanie i użytkownika w bazie danych AdventureWorks2022, aby upewnić się, że istnieją informacje o mapowaniu do wyliczenia.
{
Server srv = new Server();
//Iterate through each database and display.
foreach ( Database db in srv.Databases) {
Console.WriteLine("========");
Console.WriteLine("Login Mappings for the database: " + db.Name);
Console.WriteLine(" ");
//Run the EnumLoginMappings method and return details of database user-login mappings to a DataTable object variable.
DataTable d;
d = db.EnumLoginMappings();
//Display the mapping information.
foreach (DataRow r in d.Rows) {
foreach (DataColumn c in r.Table.Columns) {
Console.WriteLine(c.ColumnName + " = " + r[c]);
}
Console.WriteLine(" ");
}
}
}
Wyliczanie identyfikatorów logowania i skojarzonych użytkowników w programie PowerShell
Każdy użytkownik w bazie danych jest skojarzony z logowaniem. Logowanie może być skojarzone z użytkownikami w więcej niż jednej bazie danych. W przykładzie kodu pokazano, jak wywołać metodę EnumDatabaseMappings obiektu Login, aby wyświetlić listę wszystkich użytkowników bazy danych skojarzonych z logowaniem. W przykładzie utworzono logowanie i użytkownika w bazie danych AdventureWorks2022, aby upewnić się, że istnieją informacje o mapowaniu do wyliczenia.
# Set the path context to the local, default instance of SQL Server.
CD \sql\localhost\Default\Databases
#Iterate through all databases
foreach ($db in Get-ChildItem)
{
"====="
"Login Mappings for the database: "+ $db.Name
#get the datatable containing the mapping from the smo database object
$dt = $db.EnumLoginMappings()
#display the results
foreach($row in $dt.Rows)
{
foreach($col in $row.Table.Columns)
{
$col.ColumnName + "=" + $row[$col]
}
}
}
Zarządzanie rolami i użytkownikami
W tym przykładzie pokazano, jak zarządzać rolami i użytkownikami. Aby uruchomić ten przykład, należy odwołać się do następujących zestawów:
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.SqlEnum.dll
using Microsoft.SqlServer.Management.Smo;
using System;
public class A {
public static void Main() {
Server svr = new Server();
Database db = new Database(svr, "TESTDB");
db.Create();
// Creating Logins
Login login = new Login(svr, "Login1");
login.LoginType = LoginType.SqlLogin;
login.Create("password@1");
Login login2 = new Login(svr, "Login2");
login2.LoginType = LoginType.SqlLogin;
login2.Create("password@1");
// Creating Users in the database for the logins created
User user1 = new User(db, "User1");
user1.Login = "Login1";
user1.Create();
User user2 = new User(db, "User2");
user2.Login = "Login2";
user2.Create();
// Creating database permission Sets
DatabasePermissionSet dbPermSet = new DatabasePermissionSet(DatabasePermission.AlterAnySchema);
dbPermSet.Add(DatabasePermission.AlterAnyUser);
DatabasePermissionSet dbPermSet2 = new DatabasePermissionSet(DatabasePermission.CreateType);
dbPermSet2.Add(DatabasePermission.CreateSchema);
dbPermSet2.Add(DatabasePermission.CreateTable);
// Creating Database roles
DatabaseRole role1 = new DatabaseRole(db, "Role1");
role1.Create();
DatabaseRole role2 = new DatabaseRole(db, "Role2");
role2.Create();
// Granting Database Permission Sets to Roles
db.Grant(dbPermSet, role1.Name);
db.Grant(dbPermSet2, role2.Name);
// Adding members (Users / Roles) to Role
role1.AddMember("User1");
role2.AddMember("User2");
// Role1 becomes a member of Role2
role2.AddMember("Role1");
// Enumerating through explicit permissions granted to Role1
// enumerates all database permissions for the Grantee
DatabasePermissionInfo[] dbPermsRole1 = db.EnumDatabasePermissions("Role1");
foreach (DatabasePermissionInfo dbp in dbPermsRole1) {
Console.WriteLine(dbp.Grantee + " has " + dbp.PermissionType.ToString() + " permission.");
}
Console.WriteLine(" ");
}
}
Powiązana zawartość
- Przewodnik programowania obiektów zarządzania programem SQL Server (SMO)