Поделиться через


Управление пользователями, ролями и именами входа

В 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