Verwalten von Benutzern, Rollen und Anmeldungen
In SMO werden Anmeldungen durch das Login-Objekt dargestellt. Wenn die Anmeldung in SQL Server vorhanden ist, kann sie zu einer Serverrolle hinzugefügt werden. Die Serverrolle wird durch das ServerRole-Objekt dargestellt. Die Datenbankrolle wird durch das DatabaseRole-Objekt und die Anwendungsrolle durch das ApplicationRole-Objekt dargestellt.
Der Serverebene zugeordnete Berechtigungen werden als Eigenschaften des ServerPermission-Objekts aufgelistet. Berechtigungen können für einzelne Anmeldekonten gewährt, verweigert oder aufgehoben werden.
Jedes Database-Objekt verfügt über ein UserCollection-Objekt, das alle Benutzer in der Datenbank angibt. Jeder Benutzer wird einer Anmeldung zugeordnet. Eine Anmeldung kann Benutzern in mehr als einer Datenbank zugeordnet werden. Die EnumDatabaseMappings-Methode des Login-Objekts kann verwendet werden, um alle Benutzer in allen Datenbanken aufzulisten, die der Anmeldung zugeordnet sind. Alternativ legt die Login-Eigenschaft des User-Objekts die Anmeldung fest, die dem Benutzer zugeordnet ist.
SQL Server-Datenbanken verfügen darüber hinaus über Rollen, die eine Gruppe von Berechtigungen auf Datenbankebene festlegen, über die Benutzer bestimmte Tasks durchführen können. Im Gegensatz zu Serverrollen sind Datenbankrollen variabel. Sie können erstellt, geändert und gelöscht werden. Einer Datenbankrolle können für die Massenverwaltung Berechtigungen und Benutzer zugeordnet werden.
Beispiel
Für das folgende Codebeispiel müssen Sie die Programmierungsumgebung, die Programmiervorlage und die Programmiersprache auswählen, um Ihre Anwendung zu erstellen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines Visual Basic-SMO-Projekts in Visual Studio .NET und Vorgehensweise: Erstellen eines Visual C#-SMO-Projekts in Visual Studio .NET.
Auflisten von Anmeldungen und zugeordneten Benutzern in Visual Basic
Jeder Benutzer in einer Datenbank ist einer Anmeldung zugeordnet. Die Anmeldung kann Benutzern in mehreren Datenbanken zugeordnet werden. Das Codebeispiel zeigt, wie die EnumDatabaseMappings-Methode des Login-Objekts aufgerufen wird, um alle Datenbankbenutzer aufzulisten, die der Anmeldung zugeordnet sind. Im Beispiel werden eine Anmeldung und ein Benutzer in der AdventureWorks-Datenbank erstellt, um sicherzustellen, dass Zuordnungsinformationen vorliegen, die aufgelistet werden können.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Iterate through each database and display.
Dim db As Database
For Each 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.
Dim d As DataTable
d = db.EnumLoginMappings
'Display the mapping information.
Dim r As DataRow
Dim c As DataColumn
For Each r In d.Rows
For Each c In r.Table.Columns
Console.WriteLine(c.ColumnName + " = " + r(c))
Next
Console.WriteLine(" ")
Next
Next
Auflisten von Anmeldungen und zugeordneten Benutzern in Visual C#
Jeder Benutzer in einer Datenbank ist einer Anmeldung zugeordnet. Die Anmeldung kann Benutzern in mehreren Datenbanken zugeordnet werden. Das Codebeispiel zeigt, wie die EnumDatabaseMappings-Methode des Login-Objekts aufgerufen wird, um alle Datenbankbenutzer aufzulisten, die der Anmeldung zugeordnet sind. Im Beispiel werden eine Anmeldung und ein Benutzer in der AdventureWorks-Datenbank erstellt, um sicherzustellen, dass Zuordnungsinformationen vorliegen, die aufgelistet werden können.
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Iterate through each database and display.
Database db = default(Database);
foreach ( 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 = default(DataTable);
d = db.EnumLoginMappings;
//Display the mapping information.
DataRow r = default(DataRow);
DataColumn c = default(DataColumn);
foreach ( r in d.Rows) {
foreach ( c in r.Table.Columns) {
Console.WriteLine(c.ColumnName + " = " + r(c));
}
Console.WriteLine(" ");
}
}
}