如何从C#将SQL输出记录到客户端上的文本文件

时间:2010-05-12 18:36:43

标签: c# sql-server

我有一个大的审计存储过程,它打印值并运行一些SELECT语句。在SQL Management Studio中运行时,我们使用select来显示“Results to Text”,这样所有的SQL结果和print语句都会显示在一个地方。

现在我需要让一些C#代码在进程结束时调用此审计过程,并基本上将“结果到文本”窗口中的所有数据存储到.txt文件中。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以获得PRINT输出,但不能获得与结果集相同的方式。如果您的输出采用特定的PRINT和结果集数据序列,则这实际上是不可能的。

您可以通过回调/事件处理程序获取PRINT输出:

SqlConnection c ...
c.InfoMessage += new SqlInfoMessageEventHandler(cb_Msg);

...

void cb_Msg(object sender, SqlInfoMessageEventArgs e)
{
    // e.Message has a line of PRINT output
}

当您针对该SqlConnection执行某些操作时,它将为每行打印输出调用该回调。

答案 1 :(得分:1)

最好将输出参数添加到sp并将文本输出放入其中。然后,当您在代码中调用sp时,您可以单独获取结果集和文本,然后可以根据需要显示它们。