0

共有フォルダーに配置されるファイルに結果を与える sqlcmd コマンドがあります。

exec xp_cmdshell 'sqlcmd -s $dataSource -d $dbName -i $inputFilePath -o $outputFilePath'

ここで、共有ドライブが保護されていて、ユーザー名とパスワードが必要な場合はどうでしょうか。Sqlcmd で資格情報を指定して認証をバイパスする方法。

4

1 に答える 1

1

xp_cmdshell次の NT (Windows) 資格情報の下で実行されます。

  • Windows 資格情報を使用してログインした場合の偽装ログイン
  • SQL 資格情報を使用してログインし、明示的な資格情報オブジェクトが存在しない場合のサービス アカウント
  • 明示的な資格情報は、資格情報に関連付けられた SQL 資格情報を使用してログインされます (を参照)。CREATE CREDENTIAL

デフォルトのコンテキストを使用してリモート リソース (ファイル共有) にアクセスすることを主張する場合、リモート リソースへのなりすましアクセスは「ダブル ホップ」であり、少なくとも 1 つのケースで制約付きの委任が必要になるため、パドルなしでは上り坂になります( NT を使用してログイン)。

より良いオプションは、リモート共有\\server\shareをドライブとしてローカルに明示的にマップし、代わりにX:ドライブにアクセスすることです。ドライブをローカルにマッピングすると、保持された資格情報を保存できますが、サービス アカウントセッションX:でマッピングが表示されるように注意する必要があります。これは...基本的に不可能です。サービスで使用されるネットワークドライブをマップするを参照してください。

これを適切に行うことができない理由がわかったので、自分の髪を引っ張ることになりますが、その間、障害のトラブルシューティングを行うのが難しいと常に戦っていることから白くなり、立ち止まって別の角度から問題を見てください。xp_cmdshell電話するsqlcmdsqlcmdジョブ/プロセスから直接呼び出します。SQL エージェントは、これに必要なすべてのサポートを備えています。リモート共有と宛先の両方に接続するための適切な資格情報を持つプロキシ アカウントでジョブを実行するように設定するだけです$datasource

于 2013-10-08T09:17:39.933 に答える