我已經編寫了一個PowerShell腳本,用於創建新的SQL Server數據庫和登錄名,然後將數據庫所有者設置爲新創建的用戶。這是成功的。但是,當嘗試在同一個腳本中登錄時,我會遇到登錄失敗的異常。如果我使用SQL Server Management Studio,則登錄工作。使用Powershell創建SQL Server用戶
這裏的腳本:
$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
,也無濟於事。
任何想法?
在異常中應該有更多的信息,而不僅僅是「登錄失敗」 - 你能添加異常的更多文本嗎? –
錯誤:Invoke-Sqlcmd:用戶'TestUser'的登錄失敗。 –
該腳本在我的本地開發實例上工作(對已命名的實例進行小調整)。你有權訪問SQL Server日誌嗎?如果您的服務器設置爲審覈失敗的登錄,則日誌將包含比返回給客戶端更詳細的信息。尋找錯誤18456等等。聽起來就像你有一個解決方法,但如果你仍然好奇,日誌可能會有所幫助。 – Matt