mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
97 lines
2.3 KiB
Transact-SQL
97 lines
2.3 KiB
Transact-SQL
/*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
|
|
|
|
|