Azure sql database 监控存储过程的传参情况
背景
实施开发的同事找到我,反馈说项目中使用Azure sql database 之后,无法使用Profiler来监控自己开发的存储过程的参数传参情况。确实profiler这些实例级别的工具在Azure sql database下是不支持的,那我们有没有办法,变相实现监控参数情况,特写一篇博客记录一下。
测试环境
Microsoft SQL Azure (RTM) - 12.0.2000.8
Mar 30 2017 01:30:03
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
实现过程
新建一个测试传参存储过程
1 CREATE PROCEDURE test_p_azure 2 ( 3 @name NVARCHAR(50) , 4 @flag INT 5 ) 6 /* 7 测试存储过程传参 8 */ 9 AS 10 BEGIN 11 SET NOCOUNT ON; 12 SELECT 1; 13 SET NOCOUNT OFF; 14 END;
先执行该存储过程,通过查询sys.sysprocess 的spid 来查看存储过程脚本
执行监控语句
1 SELECT a.spid , 2 b.text 3 FROM sys.sysprocesses a 4 CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b 5 WHERE a.spid > 50 6 AND spid <> @@SPID;
基本上解决监控查看存储过程传参的问题。
如遇到sys.sysprocess无法查询到需监控的存储过程,可以试着调整需监控的存储过程如下:
再执行上述监控语句。
注意
需有执行上述监控语句的权限。