SQL Serverジョブを使用して、テーブルにwmiobjectの詳細を取得しています。 このコードはデフォルトインストールで実行されますが、名前付きインスタンスで実行すると失敗します。これまでのところ、SQLエージェントは名前の一部として「$」を持つユーザー名(つまりNT Service\SQLAgent$instance
)を使用している名前付きインスタンスに対して、1つの接続の違いしか見ていません。
これを克服することはできますか?エージェントアカウントの変更は、ほとんどのサーバーがこのアカウントで実行され、コードがすべてのアカウントで動作する必要があるため、オプションではありません。ユーザーとして実行
$conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=$SqlSvr;Initial Catalog=$Database; Integrated Security=SSPI")
$conn.Open()
:NTサービス\にSQLAgent $インスタンス。ジョブステップは、 、PowerShellスクリプトの21行目でエラーが発生しました。対応する行は '$ conn.Open()' ... PowerShell によって返されたエラー情報は次のとおりです。「0」引数を使用して「開く」例外を呼び出す例外:「 ユーザー(DOMAIN) (COMPUTER)$ '」と表示されます。 'プロセス終了コード-1。
「identity impersonate = true」で試しましたが、コマンドを受け入れませんでした。
アイデア?あなたは、これがSQLエージェントジョブであると言う
。それはなぜ?SQL PowerShellのか、オペレーティングシステム(のCmdExec)を実行していますプロキシアカウントを作成せずにJob \ Step \ RunAsで使用しますか? – Woody