如何将SQL消息选项卡输出插入到表中?

如何将SQL消息选项卡输出插入到表中?,sql,sql-server,Sql,Sql Server,如何将下面sql查询的消息选项卡结果插入表test2 CREATE TABLE TableTest2 (InsertOutput VARCHAR(100)) CREATE TABLE TestTable (ID INT, msg VARCHAR(50)) INSERT TestTable (ID, msg) VALUES (1, 'Message 1'), (2,'Message 2') DROP table TestTable 以下是运行上述查询的结果: (2 row(s)

如何将下面sql查询的消息选项卡结果插入
表test2

CREATE TABLE TableTest2 (InsertOutput VARCHAR(100))
CREATE TABLE TestTable (ID INT, msg VARCHAR(50))    
INSERT TestTable (ID, msg)
VALUES (1, 'Message 1'), (2,'Message 2')    
DROP table TestTable
以下是运行上述查询的结果:

(2 row(s) affected)
如何将上述结果插入SQL SERVER中的
表test2

返回受操作影响的行数。你可以这样做

CREATE TABLE TableTest2 (InsertOutput VARCHAR(100))
CREATE TABLE TestTable (ID INT, msg VARCHAR(50))    
INSERT TestTable (ID, msg)
VALUES (1, 'Message 1'), (2,'Message 2')    
DROP table TestTable
DECLARE @iRec int

INSERT TestTable (ID, msg)
VALUES (1, 'Message 1'), (2,'Message 2')    

SET @iRec = @@ROWCOUNT;

INSERT TableTest2(InsertOutput) 
VALUES (CAST(@iRec as VARCHAR(10)) + ' row(s) affected')

捕获实际输出的唯一方法是使用C#(或任何其他非sql语言)执行命令。这可以在CLR扩展中完成。tSQLt数据库单元测试框架包含过程tSQLt.CaptureOutput以捕获用于测试目的的输出。您可以看到它如何在executeCommand方法中使用OnInfo消息事件处理程序(从第64行开始):



如果您只想将其用于测试目的,请查看tSQLt.org。开源tSQLt单元测试框架有助于解决自动化测试中经常遇到的许多问题

只是行数,还是所有消息?如果所有消息都是通过TSQL发送的,除非您使用
DBCC OUTPUTBUFFER
做了一些疯狂的事情。在插入
@@ROWCOUNT
包含
2
之后,您可以立即通过
Connection.InfoMessage
在C#etc中访问它,您可以将其插入到适当的整数字段中。我想在“消息”选项卡上插入输出。在本案中:-(2行受影响)@MartinSmith我的知识非常有限。但是我可以通过脚本任务在SSIS上运行C#代码,您能给我提供一个示例代码吗?有,但我不确定它在SSIS中是否有用。根据,SSIS已为此提供内置功能。@@Rowcount返回插入记录的数目。但运行上述查询将返回消息选项卡上的:(2行受影响)。我想在“消息”选项卡上插入返回的内容。您的回答无法解决我的问题。插入到TableTest2中的消息将受到
2行的影响。
请根据需要添加打开/关闭的亲子关系@@ROWCOUNT将对SELECT、DELETE、UPDATE等执行相同的操作。我无法添加/关闭括号,因为如果查询在message选项卡上返回错误消息,那么我就完蛋了。我仍然想在“消息”选项卡上插入该错误消息@那就不一样了。在这种情况下,使用其他解决方案来捕获实际输出。但是,如果您需要在自己的代码中捕获SQL错误—您不需要走极端—它将被传播给您,以便您可以捕获并记录它。