February 24, 2017 at 12:42 pm
I have SQL Diagnostic Manager telling me that a database is experiencing 4-6 minutes of blocking that involves the below UPDATE statement blocking the SELECT. This is a third party app so I didn't write this and can't change it on my own so no need to pick it apart. My question is this. How can I figure out what stored proc is called that contains these statements?
update AGENTSTATUS set LASTRUNGMT = @P0 , MAIL = 0, VERSION_BUILD = @P1 , MACHINE_NAME = @P2 , SERVERGROUP_IDX = @P3 , LASTRUN_DATA = @P4 where IDX = CONVERT(CHAR(32), @P5 ) and LASTRUNGMT < @P6
SELECT IDX, LASTRUNGMT from AGENTSTATUS WHERE AGENTTYPE = @P0 AND AGENTNAME = @P1
If I run the below then I get no results.
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%SELECT IDX, LastRunGMT%'
SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition
FROM sys.sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
WHERE o.type = 'P' AND sm.definition LIKE '%UPDATE AGENTSTATUS%'
ORDER BY o.type;
GO
'
Can I assume these statements are not from a stored procedure since the above returns no results? I assumed they were because they show up in Profiler from EventClass SP:StmtStarting and SP:StmtCompleted. The objectId returned in Profiler for the UPDATE statement is 550483026. For the SELECT the ObjectID is 496926629. Can I leverage that at all?
February 24, 2017 at 1:17 pm
That may be a safe assumption. Before accepting the assumption that it is not a proc, rerun your query against sys.all_sql_modules.
You could also query sys.objects for the objectid in question. You may need to query more than just the one database that is related to the application.
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events
February 24, 2017 at 1:43 pm
SQLRNNR - Friday, February 24, 2017 1:17 PMThat may be a safe assumption. Before accepting the assumption that it is not a proc, rerun your query against sys.all_sql_modules.You could also query sys.objects for the objectid in question. You may need to query more than just the one database that is related to the application.
So if I run the below I still get nothing. I can see if there are other databases used for this app. Perhaps the App Server is calling a proc from a different database that queries this one. I suppose these statements could just be inline SQL too.
SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition
FROM sys.all_sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
WHERE O.object_Id IN (
496926629,
550483026
)
--WHERE o.type = 'P' AND sm.definition LIKE '%UPDATE AGENTSTATUS%'
ORDER BY o.type;
GO
February 24, 2017 at 6:06 pm
lmarkum - Friday, February 24, 2017 12:42 PM[...]update AGENTSTATUS set LASTRUNGMT = @P0 , MAIL = 0, VERSION_BUILD = @P1 , MACHINE_NAME = @P2 , SERVERGROUP_IDX = @P3 , LASTRUN_DATA = @P4 where IDX = CONVERT(CHAR(32), @P5 ) and LASTRUNGMT < @P6
SELECT IDX, LASTRUNGMT from AGENTSTATUS WHERE AGENTTYPE = @P0 AND AGENTNAME = @P1
[...]
Can I assume these statements are not from a stored procedure since the above returns no results? I assumed they were because they show up in Profiler from EventClass SP:StmtStarting and SP:StmtCompleted. The objectId returned in Profiler for the UPDATE statement is 550483026. For the SELECT the ObjectID is 496926629. Can I leverage that at all?
The parameters @P0, @P1,@P2, @P3, and @P4 would indicate that the statement has been auto-parameterized. This only occurs on ad-hoc batches.
The object IDs can be used to get the procedures:USE MyDatabase; -- replace with your db name
GO
SELECT * FROM sys.objects WHERE object_id IN (550483026, 496926629);
-Eddie
Eddie Wuerch
MCM: SQL
Viewing 4 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy