May 17, 2026, 11:40 PM

This commit is contained in:
Paweł Domański
2026-05-18 06:40:19 +00:00
commit 64944cf004
896 changed files with 310709 additions and 0 deletions
View File
@@ -0,0 +1,119 @@
USE msdb;
GO
WITH BackupData AS (
SELECT
database_name,
CAST(backup_start_date AS DATE) AS backup_date,
DAY(backup_start_date) AS backup_day,
CASE type
WHEN 'D' THEN 'Full Backup'
WHEN 'I' THEN 'Differential Backup'
WHEN 'L' THEN 'Transaction Log Backup'
END AS backup_type,
DATEDIFF(MINUTE, backup_start_date, backup_finish_date) AS duration_minutes,
cast((compressed_backup_size / 1024 / 1024/1024) as numeric(18,2)) AS size_gb
FROM dbo.backupset
WHERE
backup_start_date >= '2025-06-01'
AND backup_start_date < '2025-07-01'
)
SELECT
database_name,
backup_type,
COUNT(CASE WHEN backup_day = 1 THEN 1 END) AS [Day 1],
SUM(CASE WHEN backup_day = 1 THEN duration_minutes ELSE 0 END) AS [Duration 1],
SUM(CASE WHEN backup_day = 1 THEN size_gb ELSE 0 END) AS [Size GB 1],
COUNT(CASE WHEN backup_day = 2 THEN 1 END) AS [Day 2],
SUM(CASE WHEN backup_day = 2 THEN duration_minutes ELSE 0 END) AS [Duration 2],
SUM(CASE WHEN backup_day = 2 THEN size_gb ELSE 0 END) AS [Size GB 2],
COUNT(CASE WHEN backup_day = 3 THEN 1 END) AS [Day 3],
SUM(CASE WHEN backup_day = 3 THEN duration_minutes ELSE 0 END) AS [Duration 3],
SUM(CASE WHEN backup_day = 3 THEN size_gb ELSE 0 END) AS [Size GB 3],
COUNT(CASE WHEN backup_day = 4 THEN 1 END) AS [Day 4],
SUM(CASE WHEN backup_day = 4 THEN duration_minutes ELSE 0 END) AS [Duration 4],
SUM(CASE WHEN backup_day = 4 THEN size_gb ELSE 0 END) AS [Size GB 4],
COUNT(CASE WHEN backup_day = 5 THEN 1 END) AS [Day 5],
SUM(CASE WHEN backup_day = 5 THEN duration_minutes ELSE 0 END) AS [Duration 5],
SUM(CASE WHEN backup_day = 5 THEN size_gb ELSE 0 END) AS [Size GB 5],
COUNT(CASE WHEN backup_day = 6 THEN 1 END) AS [Day 6],
SUM(CASE WHEN backup_day = 6 THEN duration_minutes ELSE 0 END) AS [Duration 6],
SUM(CASE WHEN backup_day = 6 THEN size_gb ELSE 0 END) AS [Size GB 6],
COUNT(CASE WHEN backup_day = 7 THEN 1 END) AS [Day 7],
SUM(CASE WHEN backup_day = 7 THEN duration_minutes ELSE 0 END) AS [Duration 7],
SUM(CASE WHEN backup_day = 7 THEN size_gb ELSE 0 END) AS [Size GB 7],
COUNT(CASE WHEN backup_day = 8 THEN 1 END) AS [Day 8],
SUM(CASE WHEN backup_day = 8 THEN duration_minutes ELSE 0 END) AS [Duration 8],
SUM(CASE WHEN backup_day = 8 THEN size_gb ELSE 0 END) AS [Size GB 8],
COUNT(CASE WHEN backup_day = 9 THEN 1 END) AS [Day 9],
SUM(CASE WHEN backup_day = 9 THEN duration_minutes ELSE 0 END) AS [Duration 9],
SUM(CASE WHEN backup_day = 9 THEN size_gb ELSE 0 END) AS [Size GB 9],
COUNT(CASE WHEN backup_day = 10 THEN 1 END) AS [Day 10],
SUM(CASE WHEN backup_day = 10 THEN duration_minutes ELSE 0 END) AS [Duration 10],
SUM(CASE WHEN backup_day = 10 THEN size_gb ELSE 0 END) AS [Size GB 10],
COUNT(CASE WHEN backup_day = 11 THEN 1 END) AS [Day 11],
SUM(CASE WHEN backup_day = 11 THEN duration_minutes ELSE 0 END) AS [Duration 11],
SUM(CASE WHEN backup_day = 11 THEN size_gb ELSE 0 END) AS [Size GB 11],
COUNT(CASE WHEN backup_day = 12 THEN 1 END) AS [Day 12],
SUM(CASE WHEN backup_day = 12 THEN duration_minutes ELSE 0 END) AS [Duration 12],
SUM(CASE WHEN backup_day = 12 THEN size_gb ELSE 0 END) AS [Size GB 12],
COUNT(CASE WHEN backup_day = 13 THEN 1 END) AS [Day 13],
SUM(CASE WHEN backup_day = 13 THEN duration_minutes ELSE 0 END) AS [Duration 13],
SUM(CASE WHEN backup_day = 13 THEN size_gb ELSE 0 END) AS [Size GB 13],
COUNT(CASE WHEN backup_day = 14 THEN 1 END) AS [Day 14],
SUM(CASE WHEN backup_day = 14 THEN duration_minutes ELSE 0 END) AS [Duration 14],
SUM(CASE WHEN backup_day = 14 THEN size_gb ELSE 0 END) AS [Size GB 14],
COUNT(CASE WHEN backup_day = 15 THEN 1 END) AS [Day 15],
SUM(CASE WHEN backup_day = 15 THEN duration_minutes ELSE 0 END) AS [Duration 15],
SUM(CASE WHEN backup_day = 15 THEN size_gb ELSE 0 END) AS [Size GB 15],
COUNT(CASE WHEN backup_day = 16 THEN 1 END) AS [Day 16],
SUM(CASE WHEN backup_day = 16 THEN duration_minutes ELSE 0 END) AS [Duration 16],
SUM(CASE WHEN backup_day = 16 THEN size_gb ELSE 0 END) AS [Size GB 16],
COUNT(CASE WHEN backup_day = 17 THEN 1 END) AS [Day 17],
SUM(CASE WHEN backup_day = 17 THEN duration_minutes ELSE 0 END) AS [Duration 17],
SUM(CASE WHEN backup_day = 17 THEN size_gb ELSE 0 END) AS [Size GB 17],
COUNT(CASE WHEN backup_day = 18 THEN 1 END) AS [Day 18],
SUM(CASE WHEN backup_day = 18 THEN duration_minutes ELSE 0 END) AS [Duration 18],
SUM(CASE WHEN backup_day = 18 THEN size_gb ELSE 0 END) AS [Size GB 18],
COUNT(CASE WHEN backup_day = 19 THEN 1 END) AS [Day 19],
SUM(CASE WHEN backup_day = 19 THEN duration_minutes ELSE 0 END) AS [Duration 19],
SUM(CASE WHEN backup_day = 19 THEN size_gb ELSE 0 END) AS [Size GB 19],
COUNT(CASE WHEN backup_day = 20 THEN 1 END) AS [Day 20],
SUM(CASE WHEN backup_day = 20 THEN duration_minutes ELSE 0 END) AS [Duration 20],
SUM(CASE WHEN backup_day = 20 THEN size_gb ELSE 0 END) AS [Size GB 20],
COUNT(CASE WHEN backup_day = 21 THEN 1 END) AS [Day 21],
SUM(CASE WHEN backup_day = 21 THEN duration_minutes ELSE 0 END) AS [Duration 21],
SUM(CASE WHEN backup_day = 21 THEN size_gb ELSE 0 END) AS [Size GB 21],
COUNT(CASE WHEN backup_day = 22 THEN 1 END) AS [Day 22],
SUM(CASE WHEN backup_day = 22 THEN duration_minutes ELSE 0 END) AS [Duration 22],
SUM(CASE WHEN backup_day = 22 THEN size_gb ELSE 0 END) AS [Size GB 22],
COUNT(CASE WHEN backup_day = 23 THEN 1 END) AS [Day 23],
SUM(CASE WHEN backup_day = 23 THEN duration_minutes ELSE 0 END) AS [Duration 23],
SUM(CASE WHEN backup_day = 23 THEN size_gb ELSE 0 END) AS [Size GB 23],
COUNT(CASE WHEN backup_day = 24 THEN 1 END) AS [Day 24],
SUM(CASE WHEN backup_day = 24 THEN duration_minutes ELSE 0 END) AS [Duration 24],
SUM(CASE WHEN backup_day = 24 THEN size_gb ELSE 0 END) AS [Size GB 24],
COUNT(CASE WHEN backup_day = 25 THEN 1 END) AS [Day 25],
SUM(CASE WHEN backup_day = 25 THEN duration_minutes ELSE 0 END) AS [Duration 25],
SUM(CASE WHEN backup_day = 25 THEN size_gb ELSE 0 END) AS [Size GB 25],
COUNT(CASE WHEN backup_day = 26 THEN 1 END) AS [Day 26],
SUM(CASE WHEN backup_day = 26 THEN duration_minutes ELSE 0 END) AS [Duration 26],
SUM(CASE WHEN backup_day = 26 THEN size_gb ELSE 0 END) AS [Size GB 26],
COUNT(CASE WHEN backup_day = 27 THEN 1 END) AS [Day 27],
SUM(CASE WHEN backup_day = 27 THEN duration_minutes ELSE 0 END) AS [Duration 27],
SUM(CASE WHEN backup_day = 27 THEN size_gb ELSE 0 END) AS [Size GB 27],
COUNT(CASE WHEN backup_day = 28 THEN 1 END) AS [Day 28],
SUM(CASE WHEN backup_day = 28 THEN duration_minutes ELSE 0 END) AS [Duration 28],
SUM(CASE WHEN backup_day = 28 THEN size_gb ELSE 0 END) AS [Size GB 28],
COUNT(CASE WHEN backup_day = 29 THEN 1 END) AS [Day 29],
SUM(CASE WHEN backup_day = 29 THEN duration_minutes ELSE 0 END) AS [Duration 29],
SUM(CASE WHEN backup_day = 29 THEN size_gb ELSE 0 END) AS [Size GB 29],
COUNT(CASE WHEN backup_day = 30 THEN 1 END) AS [Day 30],
SUM(CASE WHEN backup_day = 30 THEN duration_minutes ELSE 0 END) AS [Duration 30],
SUM(CASE WHEN backup_day = 30 THEN size_gb ELSE 0 END) AS [Size GB 30],
COUNT(CASE WHEN backup_day = 31 THEN 1 END) AS [Day 31],
SUM(CASE WHEN backup_day = 31 THEN duration_minutes ELSE 0 END) AS [Duration 31],
SUM(CASE WHEN backup_day = 31 THEN size_gb ELSE 0 END) AS [Size GB 31]
FROM BackupData
GROUP BY database_name, backup_type
ORDER BY database_name, backup_type;
+1
View File
@@ -0,0 +1 @@
W tym miejscu będziw wszystko co może dotyczyć przestrzeni temporarnej
@@ -0,0 +1,28 @@
--Tempdb session File usage
--sys.dm_db_session_space_usage : Returns the number of pages allocated and deallocated by each session for the database.
--sys.dm_exec_sessions: Gives details about the sessions.
SELECT
sys.dm_exec_sessions.session_id AS [SESSION ID],
db_name(sys.dm_db_session_space_usage.database_id) AS [DATABASE Name],
HOST_NAME AS [System Name],
program_name AS [Program Name],
login_name AS [USER Name],
status,
cpu_time AS [CPU TIME (in milisec)],
total_scheduled_time AS [Total Scheduled TIME (in milisec)],
total_elapsed_time AS [Elapsed TIME (in milisec)],
(memory_usage * 8) AS [Memory USAGE (in KB)],
(user_objects_alloc_page_count * 8) AS [SPACE Allocated FOR USER Objects (in KB)],
(user_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR USER Objects (in KB)],
(internal_objects_alloc_page_count * 8) AS [SPACE Allocated FOR Internal Objects (in KB)],
(internal_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR Internal Objects (in KB)],
CASE is_user_process
WHEN 1 THEN 'user session'
WHEN 0 THEN 'system session'
END AS [SESSION Type], row_count AS [ROW COUNT]
FROM sys.dm_db_session_space_usage
INNER join
sys.dm_exec_sessions
ON sys.dm_db_session_space_usage.session_id = sys.dm_exec_sessions.session_id
@@ -0,0 +1,25 @@
--A long running transaction may prevent cleanup of transaction log thus eating up all log space available resulting space crisis for all other applications.
SELECT
transaction_id AS [Transacton ID],
[name] AS [TRANSACTION Name],
transaction_begin_time AS [TRANSACTION BEGIN TIME],
DATEDIFF(mi, transaction_begin_time, GETDATE()) AS [Elapsed TIME (in MIN)],
CASE transaction_type
WHEN 1 THEN 'Read/write'
WHEN 2 THEN 'Read-only'
WHEN 3 THEN 'System'
WHEN 4 THEN 'Distributed'
END AS [TRANSACTION Type],
CASE transaction_state
WHEN 0 THEN 'The transaction has not been completely initialized yet.'
WHEN 1 THEN 'The transaction has been initialized but has not started.'
WHEN 2 THEN 'The transaction is active.'
WHEN 3 THEN 'The transaction has ended. This is used for read-only transactions.'
WHEN 4 THEN 'The commit process has been initiated on the distributed transaction. This is for distributed transactions only. The distributed transaction is still active but further processing cannot take place.'
WHEN 5 THEN 'The transaction is in a prepared state and waiting resolution.'
WHEN 6 THEN 'The transaction has been committed.'
WHEN 7 THEN 'The transaction is being rolled back.'
WHEN 8 THEN 'The transaction has been rolled back.'
END AS [TRANSACTION Description]
FROM sys.dm_tran_active_transactions
@@ -0,0 +1,30 @@
--Long running Queries
-- sys.dm_exec_requests : Returns information regarding the requests made to the database server.
SELECT
HOST_NAME AS [System Name],
program_name AS [Application Name],
DB_NAME(sys.dm_exec_sessions.database_id) AS [DATABASE Name],
USER_NAME(USER_ID) AS [USER Name],
connection_id AS [CONNECTION ID],
sys.dm_exec_requests.session_id AS [CURRENT SESSION ID],
blocking_session_id AS [Blocking SESSION ID],
start_time AS [Request START TIME],
sys.dm_exec_requests.status AS [Status],
command AS [Command Type],
(SELECT TEXT FROM sys.dm_exec_sql_text(sql_handle)) AS [Query TEXT],
wait_type AS [Waiting Type],
wait_time AS [Waiting Duration],
wait_resource AS [Waiting FOR Resource],
sys.dm_exec_requests.transaction_id AS [TRANSACTION ID],
percent_complete AS [PERCENT Completed],
estimated_completion_time AS [Estimated COMPLETION TIME (in mili sec)],
sys.dm_exec_requests.cpu_time AS [CPU TIME used (in mili sec)],
(memory_usage * 8) AS [Memory USAGE (in KB)],
sys.dm_exec_requests.total_elapsed_time AS [Elapsed TIME (in mili sec)]
FROM sys.dm_exec_requests
INNER join
sys.dm_exec_sessions
ON sys.dm_exec_requests.session_id = sys.dm_exec_sessions.session_id
WHERE DB_NAME(sys.dm_exec_sessions.database_id) = 'tempdb'
@@ -0,0 +1,38 @@
-- Determining the Amount of Free Space in tempdb
SELECT SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount Space Used by the Version Store
SELECT SUM(version_store_reserved_page_count) AS [version store pages used],
(SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by Internal Objects
SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],
(SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by User Objects
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;
-- Obtaining the space consumed by internal objects in all currently running tasks in each session
SELECT session_id,
SUM(internal_objects_alloc_page_count) AS task_internal_objects_alloc_page_count,
SUM(internal_objects_dealloc_page_count) AS task_internal_objects_dealloc_page_count
FROM sys.dm_db_task_space_usage
GROUP BY session_id;
-- Obtaining the space consumed by internal objects in the current session for both running and completed tasks
SELECT R2.session_id,
R1.internal_objects_alloc_page_count
+ SUM(R2.internal_objects_alloc_page_count) AS session_internal_objects_alloc_page_count,
R1.internal_objects_dealloc_page_count
+ SUM(R2.internal_objects_dealloc_page_count) AS session_internal_objects_dealloc_page_count
FROM sys.dm_db_session_space_usage AS R1
INNER JOIN sys.dm_db_task_space_usage AS R2 ON R1.session_id = R2.session_id
GROUP BY R2.session_id, R1.internal_objects_alloc_page_count,
R1.internal_objects_dealloc_page_count;;
@@ -0,0 +1,19 @@
-- To check current tempdb size and growth parameters, use the following query:
SELECT name AS FileName,
size*1.0/128 AS FileSizeinMB,
CASE max_size
WHEN 0 THEN 'Autogrowth is off.'
WHEN -1 THEN 'Autogrowth is on.'
ELSE 'Log file grows to a maximum size of 2 TB.'
END,
growth AS 'GrowthValue',
'GrowthIncrement' =
CASE
WHEN growth = 0 THEN 'Size is fixed.'
WHEN growth > 0 AND is_percent_growth = 0
THEN 'Growth value is in 8-KB pages.'
ELSE 'Growth value is a percentage.'
END
FROM tempdb.sys.database_files;
GO