ユーザー、ロール、およびログインの管理
SMO では、Login オブジェクトでログインが表現されます。ログオンが SQL Server に存在する場合、サーバー ロールに追加することができます。サーバー ロールは、ServerRole オブジェクトで表現されます。データベース ロールは DatabaseRole オブジェクトで表現され、アプリケーション ロールは ApplicationRole オブジェクトで表現されます。
サーバー レベルに関連付けられた権限は、ServerPermission オブジェクトのプロパティとしてリストされます。サーバー レベル権限は、個々のログオン アカウントに対して、許可、拒否、取り消しを行うことができます。
各 Database オブジェクトには、データベース内のすべてのユーザーを指定する UserCollection オブジェクトがあります。各ユーザーはログオンに関連付けられています。1 つのログオンを 2 つ以上のデータベース内のユーザーに関連付けることもできます。ログオンに関連付けられた各データベース内のすべてのユーザーをリストするには、Login オブジェクトの EnumDatabaseMappings メソッドを使用します。または、User オブジェクトの Login プロパティで、ユーザーに関連付けられたログオンを指定します。
SQL Server データベースには、ユーザーに対して特定のタスクの実行を許可するための、データベース レベル権限のセットを指定するロールもあります。サーバー ロールと異なり、データベース ロールは固定されていません。データベース ロールは、作成、変更、および削除を行うことができます。権限およびユーザーは、データベースに割り当てて、一括管理することができます。
例
次のコード例では、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。詳細については、「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。
Visual Basic でのログインおよび関連付けられたユーザーの列挙
データベース内の各ユーザーは、ログオンに関連付けられています。ログオンは 2 つ以上のデータベース内のユーザーに関連付けることもできます。コード例では、Login オブジェクトの EnumDatabaseMappings メソッドを呼び出して、ログオンに関連付けられているすべてのデータベース ユーザーをリストする方法を示します。この例では、AdventureWorks データベースのログオンおよびユーザーを作成して、列挙するマッピング情報の存在を確保します。
'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
Visual C# でのログインおよび関連付けられたユーザーの列挙
データベース内の各ユーザーは、ログオンに関連付けられています。ログオンは 2 つ以上のデータベース内のユーザーに関連付けることもできます。コード例では、Login オブジェクトの EnumDatabaseMappings メソッドを呼び出して、ログオンに関連付けられているすべてのデータベース ユーザーをリストする方法を示します。この例では、AdventureWorks データベースのログオンおよびユーザーを作成して、列挙するマッピング情報の存在を確保します。
//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(" ");
}
}
}