Управление пользователями, ролями и именами входа
В SMO имена входа представлены объектом Login. Если имя входа существует в SQL Server, его можно добавить в роль сервера. Роль сервера представлена объектом ServerRole. Роль базы данных представлена объектом DatabaseRole, а роль приложения представлена объектом ApplicationRole.
Права доступа уровня сервера перечислены в виде свойств объекта ServerPermission. Права доступа уровня сервера можно предоставлять, запрещать или отзывать для отдельных учетных записей входа.
У каждого объекта Database есть объект UserCollection, в котором указываются все пользователи базы данных. С каждым пользователем связано имя входа. Одно имя входа может быть связано с пользователями в нескольких базах данных. Метод EnumDatabaseMappings объекта Login используется для перечисления всех пользователей во всех базах данных, связанных с именем входа. И наоборот, свойство Login объекта User содержит имя входа, связанное с пользователем.
В базах данных SQL Server также есть роли, которые определяют набор прав доступа уровня базы данных, позволяющих пользователям выполнять определенные задачи. В отличие от ролей сервера, роли базы данных не являются фиксированными. Их можно создавать, изменять и удалять. Права доступа и пользователей можно назначать роли базы данных для пакетного администрирования.
Примеры
В следующем примере кода для создания приложения необходимо выбрать среду программирования, шаблон программирования и язык программирования. Дополнительные сведения см. в образце кода Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET и разделе Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.
Перечисление имен входа и связанных пользователей в Visual Basic .NET
Каждый пользователь базы данных связан с именем входа. Имя входа может быть связано с пользователями в нескольких базах данных. В этом примере кода показан вызов метода EnumDatabaseMappings объекта Login для перечисления всех пользователей базы данных, связанных с именем входа. В примере создается имя входа и пользователь в базе данных 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