0

以下では、c#.net Windows フォームから 1 つのストアド プロシージャを呼び出しています。

ストアド プロシージャには、次のものが含まれます。

 exec master..xp_cmdshell ''bcp "select ''''Column1'''',''''Column2'''',''''Column3'''',''''Column4'''',''''Column4'''',''''Column5'''',''''Column6'''',''''Column7'''',''''Column8''''" queryout "' + @Parent_Folder + @Transformed_Tbl + '.csv" -c -t, -T -Slocalhost'''

    exec master..xp_cmdshell ''bcp Databasename..' + @database table+ ' out "' + @serverfolder+ 'temp_' + @user specified file name + '.csv" -c -t, -T -Slocalhost'''

    exec master..xp_cmdshell ''copy /b "' + @serverfolder+ @user specified file name + '.csv" + "' + @serverfolder+ 'temp_' + @user specified file name + '.csv" "' + @serverfolder + @user specified file name+ '.csv"'''

完璧に動いている、

ただし、ユーザーがこのプロセスをキャンセルしたい場合があります。ユーザーがキャンセル ボタンを押したときに、この実行中の bcp プロセスをキャンセルするにはどうすればよいですか。これが私のローカルシステムのアプリケーションで、別のSQLサーバーシステムからデータベースにアクセスし、同じSQLサーバーシステムにファイルを保存しています。

この問題についてのアイデアを教えてください。

4

2 に答える 2

1

「xp_cmdshell」を使用すると、外部実行可能ファイルの実行など、OS レベルのすべての操作が可能になるため、安全ではありません。「xp_cmdshell」を使用しないことをお勧めします。

xp_cmdshell- の代替品を探す必要があります。

http://www.mssqltips.com/sqlservertip/2014/replace-xpcmdshell-command-line-use-with-sql-server-agent/

于 2012-08-13T12:35:25.100 に答える
0

xp_cmdshellT-SQL コマンドを使用して SQL Server からキャンセルすることはできません。「キャンセル」してアプリケーションからエクスポートする機能を削除する必要があります。これは実際には可能ではないためです。キャンセル可能なエクスポートが必要な場合は、xp_cmdshell を使用せずに独自にロールする必要があります。

生成された bcp プロセスを強制終了することを推奨する人もいるかもしれませんが、これには多くの問題があり (適切なプロセスを発見するのが最も簡単です)、プロセスを不用意に強制終了すると、部分的に完成した破損したエクスポート ファイルがアップストリーム消費ワークフロー。

于 2012-08-13T11:24:45.690 に答える