добавьте windows существующего пользователя на SQL в качестве системного администратора - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть скрипт Powershell для создания SQL вход в базу данных этот скрипт о SQL только вход в систему, я хочу добавить windows пользователь на SQL возможно ли добавить то же самое у меня есть изменение Тип входа windows но это не могло работать для меня

$instanceName = ".\SQLEXPRESS"
$loginName = "ShufflrrAdmin1"
$dbUserName = "ShufflrrAdmin"
$password = "Shufflrr@123"
$databasenames = "Shufflrr", "ShufflrrScheduler"
$roleName = "db_owner"

$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $instanceName

# drop login if it exists
if ($server.Logins.Contains($loginName ))  
{   
    Write-Host("Deleting the existing login $loginName.")
       $server.Logins[$loginName].Drop() }
$login = New-Object `
-TypeName Microsoft.SqlServer.Management.Smo.Login `
-ArgumentList $server, $loginName
$login.LoginType = [Microsoft.SqlServer.Management.Smo.LoginType]::SqlLogin
$login.PasswordExpirationEnabled = $false
$login.Create($password)
Write-Host("Login $loginName created successfully.")

foreach($databaseToMap in $databasenames)  
{ $database = $server.Databases[$databaseToMap]
    if ($database.Users[$dbUserName])
    {
        Write-Host("Dropping user $dbUserName on $database.")
        $database.Users[$dbUserName].Drop()}

    $dbUser = New-Object `
    -TypeName Microsoft.SqlServer.Management.Smo.User `
    -ArgumentList $database, $dbUserName
    $dbUser.Login = $loginName
    $dbUser.Create()
    Write-Host("User $dbUser created successfully.")

    #assign database role for a new user
    $dbrole = $database.Roles[$roleName]
    $dbrole.AddMember($dbUserName)
    $dbrole.Alter()
    Write-Host("User $dbUser successfully added to $roleName role.")
}

1 Ответ

0 голосов
/ 22 апреля 2020

Если вы открыты для использования дополнительного модуля PowerShell, это становится бесконечно проще. Я также собираюсь предположить, что вы не добавляете имя входа на сервер sysadmin, а вместо этого хотите добавить его к роли db_owner database , так как это что делает ваш существующий код.

Захватите dbatools и импортируйте его в свой сеанс PowerShell.

$instanceName = ".\SQLEXPRESS";
$databasenames = "Shufflrr", "ShufflrrScheduler";
$roleName = "db_owner";
New-DbaLogin -SqlInstance $instanceName -Login YOURDOMAIN\YOURUser -Force;
# -Force will drop & recreate the login for you. Both SqlInstance and Login take collections, so you can pass multiple instances and multiple Windows accounts and they'll all be taken care of without you writing a loop

Add-DbaDbRoleMember -SqlInstance $instanceName -Database $databasenames -Role $roleName;
# All parameters here take collections of objects, so you don't have to loop over them yourself.

Если вы делаете хотите добавить вход в систему с ролью сервера sysadmin, проверка Add-DbaServerRoleMember.

Вы также можете создавать и управлять SQL входами в систему с помощью этих функций, просто ознакомьтесь с документацией и примерами в Get-Help New-DbaLogin -Full

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...