Я написал сценарий powershell, который создает новую базу данных SQL Server и логин, а затем устанавливает владельца базы данных только что созданному пользователю. Это успешно. Однако при попытке входа в один и тот же скрипт я получаю ошибку с ошибкой входа в систему. Если я использую SQL Server Management Studio, логин работает.Создайте пользователя SQL Server с помощью Powershell
Вот сценарий:
$server = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database($server, 'TestDB')
$db.Create()
$login = new-object Microsoft.SqlServer.Management.Smo.Login("(local)", 'TestUser')
$login.LoginType = 'SqlLogin'
$login.PasswordPolicyEnforced = $false
$login.PasswordExpirationEnabled = $false
$login.Create('Password1')
$server = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database
$db = $server.Databases.Item('TestDB')
$db.SetOwner('TestUser', $TRUE)
$db.Alter()
Invoke-Sqlcmd -ServerInstance localhost -Database 'TestDB' -Username 'TestUser' -Password 'Password1' -Query "SELECT * FROM sysusers"
Я попытался добавление Start-Sleep
(до 5 мин) без толка, и я попытался Restart-Service mssqlserver -Force
, также безрезультатно.
Любые идеи?
Должно быть больше информации в порядке исключения, чем просто «login failed» - можете ли вы добавить больше текста из исключения? –
ОШИБКА: Invoke-Sqlcmd: Ошибка входа для пользователя 'TestUser'. –
Этот скрипт работал на моем локальном экземпляре dev (с небольшим изменением для именованного экземпляра). У вас есть доступ к журналам SQL Server? Если ваш сервер настроен на аудит неудачных входов в систему, журналы будут содержать более подробную информацию, чем возвращается клиенту. искать ошибку 18456 и т. д. Похоже, у вас есть обход, но журналы могут помочь, если вам все еще интересно. – Matt