0

私は興味深い問題に直面しており、それが可能かどうかさえわかりません:

SQL Server 2008 で、実行時に次の処理を行うストアド プロシージャを作成する必要があります。

  1. バッチ ファイルを実行します - SQL Server 上にあります (例: C:\Mybatchfile.bat) - このバッチ ファイルは単一のテキスト ファイルを SQL Server 上のディレクトリ (例: C:\Output\BatchFileOutput1.txt) に出力します。

  2. テキスト ファイルの内容をデータベース内のテーブルに一括挿入します。

  3. サーバーからテキスト ファイルを削除します。

これを達成する方法を実際に掘り下げる前に、これは可能ですか?

前もって感謝します

4

2 に答える 2

2

これらすべてを1つの手順にまとめることができるはずです。

1)バッチファイルを実行するには、xp_cmdshell(Transact-SQL)を使用します。ただし、多くの人がこれをセキュリティリスクと見なしており、データベース内でアクセスが有効になっていない可能性があります。CLRを使用してバッチファイルを実行すると、より安全になります。

2)bcpユーティリティを使用して、行をテーブルにコピーできます。

3)#1の方法を使用してファイルを削除します。xp_cmdshellからdeleteコマンドを発行します。これは、セキュリティ上のリスクです。または、ファイル名を渡してファイルを削除するCLRを作成します。パスを渡すことは許可しません。ハードコードするため、「特別な」ディレクトリ内のファイルのみを削除でき、C:\などは削除できません。

于 2010-03-10T16:16:42.780 に答える
0

または、SSISパッケージでこれを実行してから、ストアドプロシージャで実行するのではなく、パッケージを実行するジョブを実行することもできます。または、procにSSISパッケージを実行するためのコードを含めることもできます。

于 2010-03-10T18:43:36.483 に答える