Sql 如何判断有问题的存储过程的参数值?
我有一个导致SQL server数据库阻塞的存储过程。每当它阻塞超过X秒时,我们就会收到运行查询的通知,它看起来与下面的类似Sql 如何判断有问题的存储过程的参数值?,sql,sql-server,blocking,Sql,Sql Server,Blocking,我有一个导致SQL server数据库阻塞的存储过程。每当它阻塞超过X秒时,我们就会收到运行查询的通知,它看起来与下面的类似 CREATE PROC [dbo].[sp_problemprocedure] ( @orderid INT --procedure code 我如何知道@orderid的值是多少?我想知道这个值,因为这个过程一天会运行100多次,但只会导致少数几次阻塞,如果我们能在订单id之间找到某种模式,也许我能找到问题所在 如果有帮助,则从.NET应用程序调
CREATE PROC [dbo].[sp_problemprocedure] (
@orderid INT
--procedure code
我如何知道@orderid的值是多少?我想知道这个值,因为这个过程一天会运行100多次,但只会导致少数几次阻塞,如果我们能在订单id之间找到某种模式,也许我能找到问题所在
如果有帮助,则从.NET应用程序调用该过程。如果从.NET应用程序调用该过程,您可以轻松注销从.NET应用程序传递的参数,但如果您没有访问权限,也可以使用SQL Server评测。可以在命令类型上设置过滤器,即仅在proc上以及正在命中的数据库上设置过滤器,否则您将被配置文件可以生成的所有信息淹没
链接:如果从.NET应用程序调用,您可以轻松注销从.NET应用程序传递的参数,但如果您没有访问权限,也可以使用SQL Server评测。可以在命令类型上设置过滤器,即仅在proc上以及正在命中的数据库上设置过滤器,否则您将被配置文件可以生成的所有信息淹没 链接:
- 重命名该过程
- 创建日志记录表
- 创建一个新的(相同的签名/参数),它调用原始的,但首先记录参数和开始时间戳,并在调用完成结束时间戳后记录
- 使用原始进程的名称为此新进程创建同义词
- 重命名该过程
- 创建日志记录表
- 创建一个新的(相同的签名/参数),它调用原始的,但首先记录参数和开始时间戳,并在调用完成结束时间戳后记录
- 使用原始进程的名称为此新进程创建同义词
您可以随时取消/启用日志记录,只需重新定义同义词以指向日志记录包装器或原始…您是否尝试从过程内部打印它
您是否尝试过从程序内部打印它
最简单的方法是运行探查器跟踪。您需要捕获对存储过程的调用
但实际上,这只会告诉你故事的一部分。我个人会从代码开始。尝试将大型更新批处理为较小的批处理。如果没有必要,尽量避免长时间运行的显式事务。查看触发器(如果有)和级联外键,确保它们是有效的 最简单的方法是运行探查器跟踪。您需要捕获对存储过程的调用
但实际上,这只会告诉你故事的一部分。我个人会从代码开始。尝试将大型更新批处理为较小的批处理。如果没有必要,尽量避免长时间运行的显式事务。查看触发器(如果有)和级联外键,确保它们是有效的 最简单的方法是执行以下操作:
- 1) 在.NET中,在运行过程之前获取日期时间
- 2) 在.Net中,在过程完成后获取日期和时间
- 3) 在.NET中,进行一些日期时间计算,如果计算速度“慢”,则将开始和结束日期时间、用户信息、所有参数等写入文件(日志)
- 1) 在.NET中,在运行过程之前获取日期时间
- 2) 在.Net中,在过程完成后获取日期和时间
- 3) 在.NET中,进行一些日期时间计算,如果计算速度“慢”,则将开始和结束日期时间、用户信息、所有参数等写入文件(日志)