Если вы открыты для использования дополнительного модуля 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