监控BCP进度

时间:2014-04-25 15:23:12

标签: c# sql sql-server sql-server-2008-r2 bcp

Heyo人, 只是在谷歌和这个网站上看了一下,而且信息很少。 给定一个"SELECT * FROM Table WHERE (various)"的查询,我就像这样放入一个BCP实用程序查询,从C#调用(.net 3.5,但可以引发)。

xp_cmdshell 'bcp "SELECT * FROM [DB].dbo.[table]  " queryout "\\networkpath\bla\file.csv" -N -S localhost -T -E -m0'

但是,当我在SQL Management Studio中运行此查询时,它有助于为我提供“已复制1000行”。消息。我想在我的C#应用​​程序中获取这些消息。

我尝试了几种C#方法,包括SqlDependency,SqlConnection.InfoMessage,BeginExecuteNonQuery()等;因此缺少C#代码。

这样做的最佳方法是什么?

干杯

2 个答案:

答案 0 :(得分:0)

BCP是通过xp_cmdshell在服务器上执行的命令行应用程序;所以bcp写入服务器上的stdout,捕获该输出在这里讨论Get Results from XP_CMDSHELL;这可能会给你你想要的东西。

答案 1 :(得分:0)

我理解您想要运行此bcp.exe命令并监视其进度的问题。使用Process.Startredirect console output to your application运行它。然后,你可以解析它。

如果使用xp_cmdshell运行它,InfoMessage事件将收到消息(或者它们可能会以行的形式输出,现在可以确定了。)