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