-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Expand file tree
/
Copy pathShowBasics.sql
More file actions
96 lines (71 loc) · 2.34 KB
/
ShowBasics.sql
File metadata and controls
96 lines (71 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*Clear Query Store and procedure cache*/
ALTER DATABASE AdventureWorks2016_EXT SET QUERY_STORE CLEAR;
ALTER DATABASE AdventureWorks2016_EXT SET QUERY_STORE = ON (QUERY_CAPTURE_MODE = ALL);
DBCC FREEPROCCACHE
GO
USE AdventureWorks2016_EXT;
GO
/*Run simple query - what data is collected and where does it go to?*/
SELECT * FROM Part;
SELECT * FROM sys.query_store_query_text;
SELECT * FROM sys.query_store_query;
SELECT * FROM sys.query_store_plan;
SELECT * FROM sys.query_store_runtime_stats;
/*
Combine all info
vw_QueryStoreCompileInfo is custom view (created for presentation)
*/
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*The same query from the proc*/
DROP PROCEDURE IF EXISTS sp_GetParts
GO
CREATE PROCEDURE sp_GetParts
AS
SELECT * FROM Part;
GO
EXEC sp_GetParts;
/*Again the same query, from sp_executesql*/
EXEC sp_executesql N'SELECT * FROM Part'
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*Finally trigger*/
DROP TRIGGER IF EXISTS dbo.OnPartInsert
GO
CREATE TRIGGER dbo.OnPartInsert
ON dbo.Part
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT * FROM Part;
END
GO
INSERT INTO Part VALUES (3000020, 'Part_300020');
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*What happens with parametrized query?*/
SELECT * FROM Part WHERE PartId = 5;
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part = 5'
/* Check sys.query_store_query_text */
SELECT * FROM sys.query_store_query_text;
/*Try sys.fn_stmt_sql_handle_from_sql_stmt this instead*/
SELECT * FROM sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL)
/*Changed searched criteria*/
SELECT V.* FROM vw_QueryStoreCompileInfo V
JOIN sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL) F
ON V.statement_sql_handle = F.statement_sql_handle
/*Get runtime info for the queries*/
SELECT * FROM vw_QueryStoreRuntimeInfo
WHERE query_sql_text = 'SELECT * FROM Part'
ORDER BY start_time DESC
SELECT * FROM vw_QueryStoreRuntimeInfo V
JOIN sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL) F
ON V.statement_sql_handle = F.statement_sql_handle
ORDER BY start_time DESC