Gerenciando usuários, funções e logons

No SMO, os logons são representados pelo objeto Login. Quando houver logon no SQL Server, ele poderá ser adicionado a uma função de servidor. A função de servidor é representada pelo objeto ServerRole. A função de banco de dados é representada pelo objeto DatabaseRole e a função de aplicativo é representada pelo objeto ApplicationRole.

Privilégios associados ao nível de servidor são listados como propriedades do objeto ServerPermission. Os privilégios em nível de servidor podem ser concedidos a, negados a ou revogados de contas de logon individuais.

Cada objeto Database possui um objeto UserCollection que especifica todos os usuários do banco de dados. Cada usuário é associado a um logon. Um logon pode ser associado a usuários em mais de um banco de dados. O método EnumDatabaseMappings do objeto Login pode ser usado para listar todos os usuários em cada banco de dados associado ao logon. Alternativamente, a propriedade Login do objeto User especifica o logon que é associado ao usuário.

Bancos de dados do SQL Server também têm funções que especificam um conjunto de privilégios em nível de banco de dados que permitem a um usuário executar tarefas específicas. Diferente das funções de servidor, as funções de banco de dados não são fixas. Elas podem ser criadas, modificadas e removidas. Privilégios e usuários podem ser designados a uma função de banco de dados para administração em massa.

Exemplo

Para o exemplo de código a seguir, selecione o ambiente de programação, o modelo de programação e a linguagem de programação para criar seu aplicativo. Para obter mais informações, consulte Como criar um projeto SMO do Visual Basic no Visual Studio .NET e Como criar um projeto SMO do Visual C# no Visual Studio .NET.

Enumerando logons e usuários associados no Visual Basic

Cada usuário em um banco de dados é associado a um logon. O logon pode ser associado a usuários em mais de um banco de dados. O exemplo de código mostra como chamar o método EnumDatabaseMappings do objeto Login para listar todos os usuários de banco de dados associados ao logon. O exemplo cria um logon e um usuário no banco de dados AdventureWorks para verificar se há informações de mapeamento a serem enumeradas.

'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

Enumerando logons e usuários associados no Visual C#

Cada usuário em um banco de dados é associado a um logon. O logon pode ser associado a usuários em mais de um banco de dados. O exemplo de código mostra como chamar o método EnumDatabaseMappings do objeto Login para listar todos os usuários de banco de dados associados ao logon. O exemplo cria um logon e um usuário no banco de dados AdventureWorks para garantir a existência de informações de mapeamento a serem enumeradas.

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