能否在表中保存和插入SQL查询消息?

能否在表中保存和插入SQL查询消息?,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我觉得这是一个非常新的问题,但很难找到答案,因为任何与日志有关的问题都会指向SQL错误和问题。如果不是这样,那么答案就是查询整个日志以进行筛选 当我通过TSQL将数据插入现有表时。如何保存或引用该特定语句的查询消息?这样,我就可以获取查询消息并将结果插入到一个日志表中,该表指定插入了多少条记录,可能需要多长时间等等 我使用的是SQLServer2008R2,这些SQL语句是插入数据和更新数据的存储过程。我希望确保记录流程的每个步骤,并将其插入到特定的日志表中,其中包含有关该流程步骤的详细信息 谢

我觉得这是一个非常新的问题,但很难找到答案,因为任何与日志有关的问题都会指向SQL错误和问题。如果不是这样,那么答案就是查询整个日志以进行筛选

当我通过TSQL将数据插入现有表时。如何保存或引用该特定语句的查询消息?这样,我就可以获取查询消息并将结果插入到一个日志表中,该表指定插入了多少条记录,可能需要多长时间等等

我使用的是SQLServer2008R2,这些SQL语句是插入数据和更新数据的存储过程。我希望确保记录流程的每个步骤,并将其插入到特定的日志表中,其中包含有关该流程步骤的详细信息

谢谢你在这个(我猜)新手问题上的帮助。我还在学习MSSQL

DECLARE @dt DATETIME2(7), @duration INT, @rowcount INT;

SET @dt = SYSDATETIME();

INSERT dbo.foo(bar) VALUES('x');

SELECT @rowcount = @@ROWCOUNT, @duration = DATEDIFF(MICROSECOND, @dt, SYSDATETIME());

INSERT dbo.LoggingTable(duration,row_count) SELECT @duration, @rowcount;
在2005年或更低的时候,你不可能得到那么精确的结果,例如

DECLARE @dt DATETIME, ...

SET @dt = GETDATE();

...

... , @duration = DATEDIFF(MILLISECOND, @dt, GETDATE());
在2005年或更低的时候,你不可能得到那么精确的结果,例如

DECLARE @dt DATETIME, ...

SET @dt = GETDATE();

...

... , @duration = DATEDIFF(MILLISECOND, @dt, GETDATE());

“查询消息”是指SQL Server Management Studio(SSMS)显示的类似“(1行受影响)”的内容吗?您可以发出
SELECT@@ROWCOUNT紧接在查询之后。请更正。我已将其附加到一封电子邮件,其中包含一个查询,其中显示了随查询时间插入的行。我假设您也可以通过在运行时插入日志来执行相同的操作?是否有任何存储过程使用PRINT来输出要捕获的消息?没有一个使用PRINT,但这正是我的目标。打印查询消息输出,以便插入到记录中。Aaron在下面给出了一个很好的建议,旨在取悦用户。通过查询消息,您是指SQL Server Management Studio(SSMS)显示的类似“(1行受影响)”的内容吗?您可以发出
SELECT@@ROWCOUNT紧接在查询之后。请更正。我已将其附加到一封电子邮件,其中包含一个查询,其中显示了随查询时间插入的行。我假设您也可以通过在运行时插入日志来执行相同的操作?是否有任何存储过程使用PRINT来输出要捕获的消息?没有一个使用PRINT,但这正是我的目标。打印查询消息输出,以便插入到记录中。Aaron在下面给出了一个很好的建议,旨在取悦用户。@HABO虽然是真的,但我怀疑由于底层操作系统导致的准确性差异是否会引起关注(毕竟,我们谈论的是微秒)。我也不认为文档中说明甚至暗示函数调用根本无法提取毫秒-我的解释是,它们可能会稍微偏离、舍入等,而不仅仅是丢弃。@Avarkx one并不是简单地进入datetimeresolution@HABO:请查查(并理解)datetime和datetime2值之间的精度差异(后者在SQL Server 2008中引入)。Datetime2精确到100ns,datetime精确到3 1/3ms。OP从未声明她/他需要比这些数据类型更高的精度,所以这一点没有意义。@HABO我不理解所有吹毛求疵的地方。OP询问如何获得他的查询的行数和持续时间。我提供了一个在SQL Server当前版本中尽可能精确的解决方案。我只提供了2005年的版本,因为最初我不知道用户使用的是哪个版本。所以,与其抱怨我的答案,不如告诉大家,如果你费心回答的话,你会使用什么时间单位?这是我引发的有趣的讨论。谢谢大家的意见!在您的帮助下,我开发了一个强大的日志系统。:)@哈博虽然是真的,但我怀疑由于底层操作系统导致的准确性差异是否会引起关注(毕竟,我们谈论的是微秒)。我也不认为文档中说明甚至暗示函数调用根本无法提取毫秒-我的解释是,它们可能会稍微偏离、舍入等,而不仅仅是丢弃。@Avarkx one并不是简单地进入datetimeresolution@HABO:请查查(并理解)datetime和datetime2值之间的精度差异(后者在SQL Server 2008中引入)。Datetime2精确到100ns,datetime精确到3 1/3ms。OP从未声明她/他需要比这些数据类型更高的精度,所以这一点没有意义。@HABO我不理解所有吹毛求疵的地方。OP询问如何获得他的查询的行数和持续时间。我提供了一个在SQL Server当前版本中尽可能精确的解决方案。我只提供了2005年的版本,因为最初我不知道用户使用的是哪个版本。所以,与其抱怨我的答案,不如告诉大家,如果你费心回答的话,你会使用什么时间单位?这是我引发的有趣的讨论。谢谢大家的意见!在您的帮助下,我开发了一个强大的日志系统。:)