2017-06-09 14 views
1

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エージェントジョブであると言う

+0

。それはなぜ?SQL PowerShellのか、オペレーティングシステム(のCmdExec)を実行していますプロキシアカウントを作成せずにJob \ Step \ RunAsで使用しますか? – Woody

答えて

0

イーサ使用 "の代わりに"またはエスケープチャーを使用し `またはcharを使用する(36)

"blahblah`$blahblah" 

'blahblah$blahblah' 

"blahblah$([char](36))blahblah" 
+0

問題は、コードには表示されません。内部でアカウントの詳細が送信されています – user3245595

+0

この問題は解決されました。別の理由で、別の変数を使って値を送信していましたが、バグのためにリテラル文字列として取得しました。 – user3245595

+0

#user3245595とはどんな「バグ」ですか? – Woody

関連する問題