2012-08-13 84 views
0

下面,我从c#.net窗体窗体调用一个存储过程。exec master..xp_cmdshell bcp select

存储过程包含以下内容:

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 Server系统访问数据库,然后将该文件保存在同一个SQL Server系统中。

请给我一个关于这个问题的想法。

+2

哇;人们离开xp_cmdshell启用? (不寒而栗) – 2012-08-13 11:21:12

+2

@DJKRAZE你不能打电话给xp_cmdshell交易 – 2012-08-13 11:22:26

+0

http://msdn.microsoft.com/en-us/library/ms175046%28v=sql.100%29.aspx – MethodMan 2012-08-13 11:27:55

回答

0

xp_cmdshell无法使用T-SQL命令从SQL Server中取消。您必须删除功能以“取消”并从您的应用程序导出,因为这不是真正可行的。如果你想要一个可取消的导出,你必须使用xp_cmdshell来滚动你自己的w/o。有些人可能会建议杀死生成的bcp进程,但是存在许多问题(发现正确的进程是最简单的进程),并且毫不客气地杀死一个进程可能会产生可预测的结果,如部分完成损坏的导出文件得到上游消费工作流程的支持。

+0

任何如何当用户点击取消按钮,我们正在使用另一个存储过程从系统中删除导出的文件。但这里的问题是我无法删除该文件,为什么,因为该文件与bcp process.how使用,我应该杀死这个特定的进程从后面的代码在c# – kishore 2012-08-14 05:19:11