0

私は現在、手動の SQL スクリプト内からプログラムでテーブルをエクスポートする機能が非常に役立つ環境で作業しています。

スクリプトからエクスポートを実行することは、ストアド プロシージャ内からプロセス全体を実行するための最初のステップになるため、SQL からエクスポートを開始できる必要があります。

組織は現在、ほとんどのサーバーで次の構成を持っています -

  • SQL Server 2005 または 2008
  • xp_cmdshell -無効
  • CLR -有効

最終的には、次のパラメーターを渡すプロシージャーを呼び出して、エクスポートを実行できるようにしたいと考えています。

  • テーブル名
  • ファイル パス/名前 (ネットワーク共有上)
  • ファイル形式

現在、BCP は機能面で完璧なオプションのように思えますが、xp_cmdshell が無効になっているため、コマンド ラインから呼び出すことができません。

組織は非常に小さく、安全なソリューションに向けて喜んで取り組んでおり、これまでのところ、セキュリティを適切なレベルで管理しているとの印象を受けました. 彼らは xp_cmdshell を無効にするという包括的な決定を下しましたが、使用を許可する安全な方法を提示できれば、彼らはかなり受け入れてくれると思います。

私の研究では、「EXECUTE AS」機能と証明書を使用した署名手順の両方に出くわしましたが、どちらのアプローチも私が望むものを達成するのに役立つかどうかはまだわかりません.

また、同じ最終結果を達成できる別の解決策があれば、私はすべて耳にします!

4

1 に答える 1

0

Aaron Bertrand が指摘したように、問題は xp_cmdshell が無効になっていることです。

考えられるオプションは 2 つあります。

  1. BULK INSERTを使用します。INSERT および ADMINISTER BULK OPERATIONS 権限が必要です

  2. タイプが「オペレーティング システム (CmdExec)」の SQL エージェント ジョブを作成して、BCP を実行します。パラメータを渡すためにジョブを作成/更新するためのコードが必要になる場合があります。

于 2012-10-29T18:39:57.047 に答える