Как создать новый логин с помощью поставщика SQL Server PowerShell и/или SMO?

У меня есть сценарий PowerShell, который создает новую базу данных SQL Server. Это будет база данных контента для реализации SharePoint 2010.

После создания мне нужно установить DBO в качестве моей учетной записи фермы SharePoint, и мне нужно назначить разрешения для некоторых других учетных записей служб.

Кто-нибудь знает, как это сделать с помощью SMO и поставщика PowerShell для SQL Server?


person Charlie    schedule 11.01.2011    source источник


Ответы (1)


Установить владельца БД достаточно просто:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db = get-item .
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.SetOwner('sa')
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.alter()
#These two steps aren't necessary, but if you want to see the change
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Refresh()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Owner

Назначение разрешений немного сложно, и, конечно же, есть несколько способов назначить разрешения. Было бы полезно, если бы вы описали, какие разрешения вы хотите назначить (база данных, объект, встроенная роль, уровень сервера, схема и т. д.). Вот как вы создаете пользователя базы данных и назначаете разрешения объекта:

 $user = new-object ('Microsoft.SqlServer.Management.Smo.User') 'MyDatabase', 'MyUser'
 $user.Login = 'MyUser'
 $user.DefaultSchema = 'dbo'
 $user.Create()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase\tables> $tbl = get-childitem | where {$_.name -eq 'mytable'}
$tbl.Grant('SELECT','myUser')
person Chad Miller    schedule 11.01.2011
comment
Это действительно полезно. Учетной записи фермы потребуются привилегии DBO в базе данных контента. Я, вероятно, могу решить, что мне нужно сделать из вашего образца. - person Charlie; 14.01.2011