共用方式為


管理使用者、角色和登入

在 SMO 中,登入是由 Login 物件表示。當登入存在於 SQL Server 時,可以加入至伺服器角色。伺服器角色是由 ServerRole 物件表示,資料庫角色是由 DatabaseRole 物件表示,應用程式角色則是由 ApplicationRole 物件表示。

與伺服器層級相關聯的權限會列為 ServerPermission 物件的屬性。伺服器層級權限可授與個別的登入帳戶,也可從這些帳戶拒絕或撤銷。

每個 Database 物件都具有 UserCollection 物件,可指定資料庫中的所有使用者。每個使用者都與一個登入相關聯。單一的登入可以與一個以上資料庫中的使用者產生關聯。Login 物件的 EnumDatabaseMappings 方法可用於列出每個資料庫中與該登入相關聯的所有使用者;或者,User 物件的 Login 屬性也可指定與該使用者相關的登入。

SQL Server 資料庫也具有指定資料庫層級權限集的角色,這些權限可以讓使用者執行特定的工作。與伺服器角色不同的是,資料庫角色不是固定的。這些角色可以建立、修改和移除。若要進行大量管理,可以為資料庫角色指派權限和使用者。

範例

在下列的程式碼範例中,您必須選取用於建立應用程式的程式設計環境、程式設計範本和程式設計語言。如需詳細資訊,請參閱<如何:在 Visual Studio .NET 中建立 Visual Basic SMO 專案>和<如何:在 Visual Studio .NET 中建立 Visual C# SMO 專案>。

在 Visual Basic 中列舉登入和關聯的使用者

資料庫中的每個使用者都與一個登入相關聯。此登入可以與一個以上資料庫中的使用者產生關聯。此程式碼範例示範如何呼叫 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# 中列舉登入和關聯的使用者

資料庫中的每個使用者都與一個登入相關聯。此登入可以與一個以上資料庫中的使用者產生關聯。此程式碼範例示範如何呼叫 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(" "); 
   } 
} 
}