PowerShell を使用して、既存のローカル ユーザーを sysadmin として SQL Server に追加したいと考えています。いくつかの調査の後、これまでのところ次のスクリプトがあります。
$Username = "JohnDoe"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$SqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "localhost"
$SqlUser = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $SqlServer, "$Username"
$SqlUser.LoginType = 'WindowsUser'
$SqlUser.Create()
$SqlUser.AddToRole('sysadmin')
ユーザーは localhost に存在し、Users および Administrators グループのメンバーです。次のエラー メッセージが表示されました。
「0」個の引数で「Create」を呼び出し中に例外が発生しました: 「ログイン 'JohnDoe' の作成に失敗しました。」 C:\Users\LocalAdmin\Desktop\try.ps1:7 で char:16 + $SqlUser.Create <<< < () + CategoryInfo : NotSpecified: (:) []、MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
「1」個の引数を指定して「AddToRole」を呼び出し中に例外が発生しました: 「ログイン 'JohnDoe' のロールへの追加に失敗しました。」 C:\Users\LocalAdmin\Desktop\try.ps1:8 char:23 + $SqlUser.AddToRole < <<< ('sysadmin') + CategoryInfo : NotSpecified: (:) []、MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
Windows Server 2008 R2 と SQL Server 2008 R2 何が間違っているのか、何が欠けているのでしょうか?
編集: CB と mortb からの提案に基づいてスクリプトを更新しましたが、まだ機能していません。上記のスクリプトを現在の状態に更新し、そのエラーメッセージを現在取得しているものに更新しました。