feat(inputs.sqlserver): add data and log used space metrics for Azure SQL DB (#12126)
This commit is contained in:
parent
404c0475d0
commit
58d7dfc43f
|
|
@ -28,9 +28,9 @@ SELECT TOP(1)
|
||||||
,cast([max_worker_percent] as float) as [max_worker_percent]
|
,cast([max_worker_percent] as float) as [max_worker_percent]
|
||||||
,cast([max_session_percent] as float) as [max_session_percent]
|
,cast([max_session_percent] as float) as [max_session_percent]
|
||||||
,[dtu_limit]
|
,[dtu_limit]
|
||||||
,cast([avg_login_rate_percent] as float) as [avg_login_rate_percent]
|
,cast([avg_login_rate_percent] as float) as [avg_login_rate_percent]
|
||||||
,[end_time]
|
,[end_time]
|
||||||
,cast([avg_instance_memory_percent] as float) as [avg_instance_memory_percent]
|
,cast([avg_instance_memory_percent] as float) as [avg_instance_memory_percent]
|
||||||
,cast([avg_instance_cpu_percent] as float) as [avg_instance_cpu_percent]
|
,cast([avg_instance_cpu_percent] as float) as [avg_instance_cpu_percent]
|
||||||
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
||||||
FROM
|
FROM
|
||||||
|
|
@ -83,7 +83,7 @@ SELECT
|
||||||
,[volume_pfs_iops]
|
,[volume_pfs_iops]
|
||||||
,[volume_type_pfs_iops]
|
,[volume_type_pfs_iops]
|
||||||
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
||||||
FROM
|
FROM
|
||||||
sys.dm_user_db_resource_governance WITH (NOLOCK);
|
sys.dm_user_db_resource_governance WITH (NOLOCK);
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|
@ -178,39 +178,39 @@ SELECT
|
||||||
WHEN (vfs.[database_id] = 0) THEN 'RBPEX'
|
WHEN (vfs.[database_id] = 0) THEN 'RBPEX'
|
||||||
ELSE b.[physical_filename]
|
ELSE b.[physical_filename]
|
||||||
END as [physical_filename]
|
END as [physical_filename]
|
||||||
,CASE
|
,CASE
|
||||||
WHEN vfs.[file_id] = 2 THEN 'LOG'
|
WHEN vfs.[file_id] = 2 THEN 'LOG'
|
||||||
ELSE 'DATA'
|
ELSE 'DATA'
|
||||||
END AS [file_type]
|
END AS [file_type]
|
||||||
,ISNULL([size],0)/128 AS [current_size_mb]
|
,ISNULL([size],0)/128 AS [current_size_mb]
|
||||||
,ISNULL(FILEPROPERTY(b.[logical_filename],'SpaceUsed')/128,0) as [space_used_mb]
|
,ISNULL(FILEPROPERTY(b.[logical_filename],'SpaceUsed')/128,0) as [space_used_mb]
|
||||||
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
||||||
FROM
|
FROM
|
||||||
[sys].[dm_io_virtual_file_stats](NULL,NULL) AS vfs
|
[sys].[dm_io_virtual_file_stats](NULL,NULL) AS vfs
|
||||||
-- needed to get Tempdb file names on Azure SQL DB so you can join appropriately. Without this had a bug where join was only on file_id
|
-- needed to get Tempdb file names on Azure SQL DB so you can join appropriately. Without this had a bug where join was only on file_id
|
||||||
LEFT OUTER join (
|
LEFT OUTER join (
|
||||||
SELECT
|
SELECT
|
||||||
DB_ID() as [database_id]
|
DB_ID() as [database_id]
|
||||||
,[file_id]
|
,[file_id]
|
||||||
,[logical_filename]= [name] COLLATE SQL_Latin1_General_CP1_CI_AS
|
,[logical_filename]= [name] COLLATE SQL_Latin1_General_CP1_CI_AS
|
||||||
,[physical_filename] = [physical_name] COLLATE SQL_Latin1_General_CP1_CI_AS
|
,[physical_filename] = [physical_name] COLLATE SQL_Latin1_General_CP1_CI_AS
|
||||||
,[size]
|
,[size]
|
||||||
FROM sys.database_files
|
FROM sys.database_files
|
||||||
WHERE
|
WHERE
|
||||||
[type] <> 2
|
[type] <> 2
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
2 as [database_id]
|
2 as [database_id]
|
||||||
,[file_id]
|
,[file_id]
|
||||||
,[logical_filename] = [name]
|
,[logical_filename] = [name]
|
||||||
,[physical_filename] = [physical_name]
|
,[physical_filename] = [physical_name]
|
||||||
,[size]
|
,[size]
|
||||||
FROM tempdb.sys.database_files
|
FROM tempdb.sys.database_files
|
||||||
) b
|
) b
|
||||||
ON
|
ON
|
||||||
b.[database_id] = vfs.[database_id]
|
b.[database_id] = vfs.[database_id]
|
||||||
AND b.[file_id] = vfs.[file_id]
|
AND b.[file_id] = vfs.[file_id]
|
||||||
WHERE
|
WHERE
|
||||||
vfs.[database_id] IN (DB_ID(),0,2)
|
vfs.[database_id] IN (DB_ID(),0,2)
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|
@ -221,7 +221,7 @@ IF SERVERPROPERTY('EngineEdition') <> 5 BEGIN /*not Azure SQL DB*/
|
||||||
RETURN
|
RETURN
|
||||||
END
|
END
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
'sqlserver_server_properties' AS [measurement]
|
'sqlserver_server_properties' AS [measurement]
|
||||||
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
||||||
,DB_NAME() as [database_name]
|
,DB_NAME() as [database_name]
|
||||||
|
|
@ -234,21 +234,24 @@ SELECT
|
||||||
WHEN slo.[edition] = 'Hyperscale' then NULL
|
WHEN slo.[edition] = 'Hyperscale' then NULL
|
||||||
ELSE CAST(DATABASEPROPERTYEX(DB_NAME(),'MaxSizeInBytes') as bigint)/(1024*1024)
|
ELSE CAST(DATABASEPROPERTYEX(DB_NAME(),'MaxSizeInBytes') as bigint)/(1024*1024)
|
||||||
END AS [total_storage_mb]
|
END AS [total_storage_mb]
|
||||||
|
,(SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT) / 128) FROM sys.database_files WHERE type_desc = 'ROWS') AS used_storage_mb
|
||||||
,CASE
|
,CASE
|
||||||
WHEN slo.[edition] = 'Hyperscale' then NULL
|
WHEN slo.[edition] = 'Hyperscale' then NULL
|
||||||
ELSE (
|
ELSE (
|
||||||
cast(DATABASEPROPERTYEX(DB_NAME(),'MaxSizeInBytes') as bigint)/(1024*1024) -
|
SELECT (CAST(DATABASEPROPERTYEX(DB_NAME(), 'MaxSizeInBytes') AS BIGINT) / (1024 * 1024) - SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT) / 128))
|
||||||
(select SUM([size]/128 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128) FROM sys.database_files)
|
FROM sys.database_files
|
||||||
|
WHERE type_desc = 'ROWS'
|
||||||
)
|
)
|
||||||
END AS [available_storage_mb]
|
END AS [available_storage_mb]
|
||||||
|
,(SELECT SUM(max_size) * 8 / (1024 * 1024) FROM sys.database_files WHERE type_desc = 'LOG') AS max_log_mb
|
||||||
,(select DATEDIFF(MINUTE,sqlserver_start_time,GETDATE()) from sys.dm_os_sys_info) as [uptime]
|
,(select DATEDIFF(MINUTE,sqlserver_start_time,GETDATE()) from sys.dm_os_sys_info) as [uptime]
|
||||||
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
,DATABASEPROPERTYEX(DB_NAME(), 'Updateability') as replica_updateability
|
||||||
FROM sys.[databases] AS d
|
FROM sys.[databases] AS d
|
||||||
-- sys.databases.database_id may not match current DB_ID on Azure SQL DB
|
-- sys.databases.database_id may not match current DB_ID on Azure SQL DB
|
||||||
CROSS JOIN sys.[database_service_objectives] AS slo
|
CROSS JOIN sys.[database_service_objectives] AS slo
|
||||||
WHERE
|
WHERE
|
||||||
d.[name] = DB_NAME()
|
d.[name] = DB_NAME()
|
||||||
AND slo.[database_id] = DB_ID();
|
AND slo.[database_id] = DB_ID();
|
||||||
`
|
`
|
||||||
|
|
||||||
const sqlAzureDBOsWaitStats = `
|
const sqlAzureDBOsWaitStats = `
|
||||||
|
|
@ -268,7 +271,7 @@ SELECT
|
||||||
,[signal_wait_time_ms]
|
,[signal_wait_time_ms]
|
||||||
,[max_wait_time_ms]
|
,[max_wait_time_ms]
|
||||||
,[waiting_tasks_count]
|
,[waiting_tasks_count]
|
||||||
,CASE
|
,CASE
|
||||||
WHEN ws.[wait_type] LIKE 'SOS_SCHEDULER_YIELD' then 'CPU'
|
WHEN ws.[wait_type] LIKE 'SOS_SCHEDULER_YIELD' then 'CPU'
|
||||||
WHEN ws.[wait_type] = 'THREADPOOL' THEN 'Worker Thread'
|
WHEN ws.[wait_type] = 'THREADPOOL' THEN 'Worker Thread'
|
||||||
WHEN ws.[wait_type] LIKE 'LCK[_]%' THEN 'Lock'
|
WHEN ws.[wait_type] LIKE 'LCK[_]%' THEN 'Lock'
|
||||||
|
|
@ -278,7 +281,7 @@ SELECT
|
||||||
WHEN ws.[wait_type] LIKE 'RESOURCE_SEMAPHORE_QUERY_COMPILE%' THEN 'Compilation'
|
WHEN ws.[wait_type] LIKE 'RESOURCE_SEMAPHORE_QUERY_COMPILE%' THEN 'Compilation'
|
||||||
WHEN ws.[wait_type] LIKE 'CLR[_]%' or ws.[wait_type] like 'SQLCLR%' THEN 'SQL CLR'
|
WHEN ws.[wait_type] LIKE 'CLR[_]%' or ws.[wait_type] like 'SQLCLR%' THEN 'SQL CLR'
|
||||||
WHEN ws.[wait_type] LIKE 'DBMIRROR_%' THEN 'Mirroring'
|
WHEN ws.[wait_type] LIKE 'DBMIRROR_%' THEN 'Mirroring'
|
||||||
WHEN ws.[wait_type] LIKE 'DTC[_]%' or ws.[wait_type] LIKE 'DTCNEW%' or ws.[wait_type] LIKE 'TRAN_%'
|
WHEN ws.[wait_type] LIKE 'DTC[_]%' or ws.[wait_type] LIKE 'DTCNEW%' or ws.[wait_type] LIKE 'TRAN_%'
|
||||||
or ws.[wait_type] LIKE 'XACT%' or ws.[wait_type] like 'MSQL_XACT%' THEN 'Transaction'
|
or ws.[wait_type] LIKE 'XACT%' or ws.[wait_type] like 'MSQL_XACT%' THEN 'Transaction'
|
||||||
WHEN ws.[wait_type] LIKE 'SLEEP[_]%'
|
WHEN ws.[wait_type] LIKE 'SLEEP[_]%'
|
||||||
or ws.[wait_type] IN (
|
or ws.[wait_type] IN (
|
||||||
|
|
@ -295,7 +298,7 @@ SELECT
|
||||||
'WRITELOG','LOGBUFFER','LOGMGR_RESERVE_APPEND',
|
'WRITELOG','LOGBUFFER','LOGMGR_RESERVE_APPEND',
|
||||||
'LOGMGR_FLUSH', 'LOGMGR_PMM_LOG') THEN 'Tran Log IO'
|
'LOGMGR_FLUSH', 'LOGMGR_PMM_LOG') THEN 'Tran Log IO'
|
||||||
WHEN ws.[wait_type] LIKE 'LOG_RATE%' then 'Log Rate Governor'
|
WHEN ws.[wait_type] LIKE 'LOG_RATE%' then 'Log Rate Governor'
|
||||||
WHEN ws.[wait_type] LIKE 'HADR_THROTTLE[_]%'
|
WHEN ws.[wait_type] LIKE 'HADR_THROTTLE[_]%'
|
||||||
or ws.[wait_type] = 'THROTTLE_LOG_RATE_LOG_STORAGE' THEN 'HADR Log Rate Governor'
|
or ws.[wait_type] = 'THROTTLE_LOG_RATE_LOG_STORAGE' THEN 'HADR Log Rate Governor'
|
||||||
WHEN ws.[wait_type] LIKE 'RBIO_RG%' or ws.[wait_type] like 'WAIT_RBIO_RG%' then 'VLDB Log Rate Governor'
|
WHEN ws.[wait_type] LIKE 'RBIO_RG%' or ws.[wait_type] like 'WAIT_RBIO_RG%' then 'VLDB Log Rate Governor'
|
||||||
WHEN ws.[wait_type] LIKE 'RBIO[_]%' or ws.[wait_type] like 'WAIT_RBIO[_]%' then 'VLDB RBIO'
|
WHEN ws.[wait_type] LIKE 'RBIO[_]%' or ws.[wait_type] like 'WAIT_RBIO[_]%' then 'VLDB RBIO'
|
||||||
|
|
@ -311,16 +314,16 @@ SELECT
|
||||||
'RESERVED_MEMORY_ALLOCATION_EXT', 'MEMORY_GRANT_UPDATE') THEN 'Memory'
|
'RESERVED_MEMORY_ALLOCATION_EXT', 'MEMORY_GRANT_UPDATE') THEN 'Memory'
|
||||||
WHEN ws.[wait_type] IN ('WAITFOR','WAIT_FOR_RESULTS') THEN 'User Wait'
|
WHEN ws.[wait_type] IN ('WAITFOR','WAIT_FOR_RESULTS') THEN 'User Wait'
|
||||||
WHEN ws.[wait_type] LIKE 'HADR[_]%' or ws.[wait_type] LIKE 'PWAIT_HADR%'
|
WHEN ws.[wait_type] LIKE 'HADR[_]%' or ws.[wait_type] LIKE 'PWAIT_HADR%'
|
||||||
or ws.[wait_type] LIKE 'REPLICA[_]%' or ws.[wait_type] LIKE 'REPL_%'
|
or ws.[wait_type] LIKE 'REPLICA[_]%' or ws.[wait_type] LIKE 'REPL_%'
|
||||||
or ws.[wait_type] LIKE 'SE_REPL[_]%'
|
or ws.[wait_type] LIKE 'SE_REPL[_]%'
|
||||||
or ws.[wait_type] LIKE 'FCB_REPLICA%' THEN 'Replication'
|
or ws.[wait_type] LIKE 'FCB_REPLICA%' THEN 'Replication'
|
||||||
WHEN ws.[wait_type] LIKE 'SQLTRACE[_]%'
|
WHEN ws.[wait_type] LIKE 'SQLTRACE[_]%'
|
||||||
or ws.[wait_type] IN (
|
or ws.[wait_type] IN (
|
||||||
'TRACEWRITE', 'SQLTRACE_LOCK', 'SQLTRACE_FILE_BUFFER', 'SQLTRACE_FILE_WRITE_IO_COMPLETION',
|
'TRACEWRITE', 'SQLTRACE_LOCK', 'SQLTRACE_FILE_BUFFER', 'SQLTRACE_FILE_WRITE_IO_COMPLETION',
|
||||||
'SQLTRACE_FILE_READ_IO_COMPLETION', 'SQLTRACE_PENDING_BUFFER_WRITERS', 'SQLTRACE_SHUTDOWN',
|
'SQLTRACE_FILE_READ_IO_COMPLETION', 'SQLTRACE_PENDING_BUFFER_WRITERS', 'SQLTRACE_SHUTDOWN',
|
||||||
'QUERY_TRACEOUT', 'TRACE_EVTNOTIF') THEN 'Tracing'
|
'QUERY_TRACEOUT', 'TRACE_EVTNOTIF') THEN 'Tracing'
|
||||||
WHEN ws.[wait_type] IN (
|
WHEN ws.[wait_type] IN (
|
||||||
'FT_RESTART_CRAWL', 'FULLTEXT GATHERER', 'MSSEARCH', 'FT_METADATA_MUTEX',
|
'FT_RESTART_CRAWL', 'FULLTEXT GATHERER', 'MSSEARCH', 'FT_METADATA_MUTEX',
|
||||||
'FT_IFTSHC_MUTEX', 'FT_IFTSISM_MUTEX', 'FT_IFTS_RWLOCK', 'FT_COMPROWSET_RWLOCK',
|
'FT_IFTSHC_MUTEX', 'FT_IFTSISM_MUTEX', 'FT_IFTS_RWLOCK', 'FT_COMPROWSET_RWLOCK',
|
||||||
'FT_MASTER_MERGE', 'FT_PROPERTYLIST_CACHE', 'FT_MASTER_MERGE_COORDINATOR',
|
'FT_MASTER_MERGE', 'FT_PROPERTYLIST_CACHE', 'FT_MASTER_MERGE_COORDINATOR',
|
||||||
'PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNC') THEN 'Full Text Search'
|
'PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNC') THEN 'Full Text Search'
|
||||||
|
|
@ -385,7 +388,7 @@ SELECT
|
||||||
FROM sys.[dm_os_memory_clerks] AS mc WITH (NOLOCK)
|
FROM sys.[dm_os_memory_clerks] AS mc WITH (NOLOCK)
|
||||||
GROUP BY
|
GROUP BY
|
||||||
mc.[type]
|
mc.[type]
|
||||||
HAVING
|
HAVING
|
||||||
SUM(mc.[pages_kb]) >= 1024
|
SUM(mc.[pages_kb]) >= 1024
|
||||||
OPTION(RECOMPILE);
|
OPTION(RECOMPILE);
|
||||||
`
|
`
|
||||||
|
|
@ -421,7 +424,7 @@ WITH PerfCounters AS (
|
||||||
OR RTRIM(spi.[object_name]) LIKE '%:Advanced Analytics')
|
OR RTRIM(spi.[object_name]) LIKE '%:Advanced Analytics')
|
||||||
AND TRY_CONVERT([uniqueidentifier], spi.[instance_name]) IS NOT NULL -- for cloud only
|
AND TRY_CONVERT([uniqueidentifier], spi.[instance_name]) IS NOT NULL -- for cloud only
|
||||||
THEN ISNULL(d.[name],RTRIM(spi.instance_name)) -- Elastic Pools counters exist for all databases but sys.databases only has current DB value
|
THEN ISNULL(d.[name],RTRIM(spi.instance_name)) -- Elastic Pools counters exist for all databases but sys.databases only has current DB value
|
||||||
WHEN
|
WHEN
|
||||||
RTRIM([object_name]) LIKE '%:Availability Replica'
|
RTRIM([object_name]) LIKE '%:Availability Replica'
|
||||||
AND TRY_CONVERT([uniqueidentifier], spi.[instance_name]) IS NOT NULL -- for cloud only
|
AND TRY_CONVERT([uniqueidentifier], spi.[instance_name]) IS NOT NULL -- for cloud only
|
||||||
THEN ISNULL(d.[name],RTRIM(spi.[instance_name])) + RTRIM(SUBSTRING(spi.[instance_name], 37, LEN(spi.[instance_name])))
|
THEN ISNULL(d.[name],RTRIM(spi.[instance_name])) + RTRIM(SUBSTRING(spi.[instance_name], 37, LEN(spi.[instance_name])))
|
||||||
|
|
@ -429,7 +432,7 @@ WITH PerfCounters AS (
|
||||||
END AS [instance_name]
|
END AS [instance_name]
|
||||||
,CAST(spi.[cntr_value] AS BIGINT) AS [cntr_value]
|
,CAST(spi.[cntr_value] AS BIGINT) AS [cntr_value]
|
||||||
,spi.[cntr_type]
|
,spi.[cntr_type]
|
||||||
FROM sys.dm_os_performance_counters AS spi
|
FROM sys.dm_os_performance_counters AS spi
|
||||||
LEFT JOIN sys.databases AS d
|
LEFT JOIN sys.databases AS d
|
||||||
ON LEFT(spi.[instance_name], 36) -- some instance_name values have an additional identifier appended after the GUID
|
ON LEFT(spi.[instance_name], 36) -- some instance_name values have an additional identifier appended after the GUID
|
||||||
= CASE
|
= CASE
|
||||||
|
|
@ -550,15 +553,15 @@ WITH PerfCounters AS (
|
||||||
|
|
||||||
INSERT INTO @PCounters select * from PerfCounters
|
INSERT INTO @PCounters select * from PerfCounters
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
'sqlserver_performance' AS [measurement]
|
'sqlserver_performance' AS [measurement]
|
||||||
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
||||||
,DB_NAME() as [database_name]
|
,DB_NAME() as [database_name]
|
||||||
,pc.[object_name] AS [object]
|
,pc.[object_name] AS [object]
|
||||||
,pc.[counter_name] AS [counter]
|
,pc.[counter_name] AS [counter]
|
||||||
,CASE pc.[instance_name]
|
,CASE pc.[instance_name]
|
||||||
WHEN '_Total' THEN 'Total'
|
WHEN '_Total' THEN 'Total'
|
||||||
ELSE ISNULL(pc.[instance_name],'')
|
ELSE ISNULL(pc.[instance_name],'')
|
||||||
END AS [instance]
|
END AS [instance]
|
||||||
,CAST(CASE WHEN pc.[cntr_type] = 537003264 AND pc1.[cntr_value] > 0 THEN (pc.[cntr_value] * 1.0) / (pc1.[cntr_value] * 1.0) * 100 ELSE pc.[cntr_value] END AS float(10)) AS [value]
|
,CAST(CASE WHEN pc.[cntr_type] = 537003264 AND pc1.[cntr_value] > 0 THEN (pc.[cntr_value] * 1.0) / (pc1.[cntr_value] * 1.0) * 100 ELSE pc.[cntr_value] END AS float(10)) AS [value]
|
||||||
,cast(pc.[cntr_type] as varchar(25)) as [counter_type]
|
,cast(pc.[cntr_type] as varchar(25)) as [counter_type]
|
||||||
|
|
@ -600,7 +603,7 @@ SELECT
|
||||||
,replica_updateability
|
,replica_updateability
|
||||||
,[session_db_name],[open_transaction]
|
,[session_db_name],[open_transaction]
|
||||||
FROM (
|
FROM (
|
||||||
SELECT
|
SELECT
|
||||||
'sqlserver_requests' AS [measurement]
|
'sqlserver_requests' AS [measurement]
|
||||||
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
,REPLACE(@@SERVERNAME,'\',':') AS [sql_instance]
|
||||||
,DB_NAME() as [database_name]
|
,DB_NAME() as [database_name]
|
||||||
|
|
@ -623,18 +626,18 @@ FROM (
|
||||||
,s.[login_name]
|
,s.[login_name]
|
||||||
,COALESCE(r.[open_transaction_count], s.[open_transaction_count]) AS [open_transaction]
|
,COALESCE(r.[open_transaction_count], s.[open_transaction_count]) AS [open_transaction]
|
||||||
,LEFT (CASE COALESCE(r.[transaction_isolation_level], s.[transaction_isolation_level])
|
,LEFT (CASE COALESCE(r.[transaction_isolation_level], s.[transaction_isolation_level])
|
||||||
WHEN 0 THEN '0-Read Committed'
|
WHEN 0 THEN '0-Read Committed'
|
||||||
WHEN 1 THEN '1-Read Uncommitted (NOLOCK)'
|
WHEN 1 THEN '1-Read Uncommitted (NOLOCK)'
|
||||||
WHEN 2 THEN '2-Read Committed'
|
WHEN 2 THEN '2-Read Committed'
|
||||||
WHEN 3 THEN '3-Repeatable Read'
|
WHEN 3 THEN '3-Repeatable Read'
|
||||||
WHEN 4 THEN '4-Serializable'
|
WHEN 4 THEN '4-Serializable'
|
||||||
WHEN 5 THEN '5-Snapshot'
|
WHEN 5 THEN '5-Snapshot'
|
||||||
ELSE CONVERT (varchar(30), r.[transaction_isolation_level]) + '-UNKNOWN'
|
ELSE CONVERT (varchar(30), r.[transaction_isolation_level]) + '-UNKNOWN'
|
||||||
END, 30) AS [transaction_isolation_level]
|
END, 30) AS [transaction_isolation_level]
|
||||||
,r.[granted_query_memory] AS [granted_query_memory_pages]
|
,r.[granted_query_memory] AS [granted_query_memory_pages]
|
||||||
,r.[percent_complete]
|
,r.[percent_complete]
|
||||||
,SUBSTRING(
|
,SUBSTRING(
|
||||||
qt.[text],
|
qt.[text],
|
||||||
r.[statement_start_offset] / 2 + 1,
|
r.[statement_start_offset] / 2 + 1,
|
||||||
(CASE WHEN r.[statement_end_offset] = -1
|
(CASE WHEN r.[statement_end_offset] = -1
|
||||||
THEN DATALENGTH(qt.[text])
|
THEN DATALENGTH(qt.[text])
|
||||||
|
|
@ -650,7 +653,7 @@ FROM (
|
||||||
,s.[is_user_process]
|
,s.[is_user_process]
|
||||||
,[blocking_or_blocked] = COUNT(*) OVER(PARTITION BY ISNULL(NULLIF(r.[blocking_session_id], 0),s.[session_id]))
|
,[blocking_or_blocked] = COUNT(*) OVER(PARTITION BY ISNULL(NULLIF(r.[blocking_session_id], 0),s.[session_id]))
|
||||||
FROM sys.dm_exec_sessions AS s
|
FROM sys.dm_exec_sessions AS s
|
||||||
LEFT OUTER JOIN sys.dm_exec_requests AS r
|
LEFT OUTER JOIN sys.dm_exec_requests AS r
|
||||||
ON s.[session_id] = r.[session_id]
|
ON s.[session_id] = r.[session_id]
|
||||||
OUTER APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
|
OUTER APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
|
||||||
) AS data
|
) AS data
|
||||||
|
|
@ -662,8 +665,8 @@ WHERE
|
||||||
[is_user_process] = 1
|
[is_user_process] = 1
|
||||||
OR [status] COLLATE Latin1_General_BIN NOT IN ('background', 'sleeping')
|
OR [status] COLLATE Latin1_General_BIN NOT IN ('background', 'sleeping')
|
||||||
)
|
)
|
||||||
AND [session_id] <> @@SPID
|
AND [session_id] <> @@SPID
|
||||||
)
|
)
|
||||||
OPTION(MAXDOP 1);
|
OPTION(MAXDOP 1);
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue