次の方法で共有


ユーザー、ロール、およびログインの管理

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(" "); 
   } 
} 
}