Я пытаюсь добавить пользователя Windows на SQL Server. Это прекрасно работает. Однако, если пользователь уже существует, я не хочу получать сообщение об ошибке. Если это уже есть, все в порядке. Так я думал, я бы просто проверить, прежде чем создавать его:Почему свойство Logins null?
$AccountName = $args[0]
$ComputerName = $args[1]
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$sqlSrv = New-Object 'Microsoft.SqlServer.Management.Smo.Server' ($ComputerName)
$sqlSrv.Refresh() # TRIED DIFFERENT THINGS HERE, REFRESH, INITIALIZE...
$login = $sqlSvr.Logins[$AccountName] # HERE .Logins IS NULL
if ($login -eq $null) {
$login = New-Object 'Microsoft.SqlServer.Management.Smo.Login' ($sqlSrv, $AccountName)
$login.Name = $AccountName
$login.LoginType = 'WindowsUser'
$login.PasswordPolicyEnforced = $false
$login.Create()
}
Я не знаю, почему Logins
свойство класса SQL Server является нулевым. Я вижу существующие логины в SQL Management Studio.
Может кто-нибудь сказать мне, как правильно проверить, существует ли логин до его создания? С помощью ролей и баз данных свойства сервера, похоже, заполнены.
Я использую Sql Server Express версии 11.0.5058.0 (я думаю, что это 2012) и версия Powershell 5.0.10586.117.
Какой версии SQL Server вы используете? –
@ChrisAlbert Обновлено сообщение с версиями. – nvoigt
Если вы пытаетесь сделать $ login = $ sqlSrv.logins без параметра фильтрации, он ничего не возвращает? –