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; 

Azure sql database 监控存储过程的传参情况
背景
测试环境
实现过程
注意

先执行该存储过程,通过查询sys.sysprocess 的spid 来查看存储过程脚本

Azure sql database 监控存储过程的传参情况
背景
测试环境
实现过程
注意 执行监控语句
 
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;
Azure sql database 监控存储过程的传参情况
背景
测试环境
实现过程
注意 基本上解决监控查看存储过程传参的问题。
如遇到sys.sysprocess无法查询到需监控的存储过程,可以试着调整需监控的存储过程如下:
Azure sql database 监控存储过程的传参情况
背景
测试环境
实现过程
注意 再执行上述监控语句。
 

注意

需有执行上述监控语句的权限。