diff --git a/ALL - check jobs.sql b/ALL - check jobs.sql index 4f3bfa3..0ffdf35 100644 --- a/ALL - check jobs.sql +++ b/ALL - check jobs.sql @@ -14,6 +14,8 @@ Creation : 30.12.2022 / TSC Modifications: =============================================================================*/ + +--If @allJobs is set to 0, then only a subset of jobs are checked (see insert into @jobs) DECLARE @allJobs BIT = 0; DECLARE @jobs TABLE ( [name] sysname NOT NULL @@ -32,13 +34,13 @@ BEGIN FROM [msdb].[dbo].[sysjobs] [s] WHERE [s].[name] IN ( 'zz_tsc OCTPDBA-440 supra' - ,'__D70010 - After APSSynchroLoad' - ,'_D73031 - SYNC - H Synchronize items and addresses - Central' - ,'_D73061 - ITEM - 000 - Manage data before H synchronization - Central' - ,'_D73071 - ITEM - Manage data after H synchronization - Central' - ,'_D73110 - SYNC - V Synchronization extraction - Central' - ,'D73130 - VESTA - SYNC - Interbase 2.0' - ,'__D03011 - After working hours - Central' + --,'__D70010 - After APSSynchroLoad' + --,'_D73031 - SYNC - H Synchronize items and addresses - Central' + --,'_D73061 - ITEM - 000 - Manage data before H synchronization - Central' + --,'_D73071 - ITEM - Manage data after H synchronization - Central' + --,'_D73110 - SYNC - V Synchronization extraction - Central' + --,'D73130 - VESTA - SYNC - Interbase 2.0' + --,'__D03011 - After working hours - Central' ); END ELSE diff --git a/DBG - read trace file.sql b/DBG - read trace file.sql new file mode 100644 index 0000000..25bb39b --- /dev/null +++ b/DBG - read trace file.sql @@ -0,0 +1,7 @@ +SELECT + * +FROM fn_trace_gettable('D:\dbJobs\facturation.trc', DEFAULT) +WHERE CONVERT(TIME,[EndTime]-[StartTime]) IS NOT NULL +AND CONVERT(TIME,[EndTime]-[StartTime]) < '23:59:59.99' +AND [TextData] IS NOT NULL +ORDER BY [Duration] DESC diff --git a/DEV - read a extended event file from ssms.sql b/DEV - read a extended event file from ssms.sql new file mode 100644 index 0000000..7c84326 --- /dev/null +++ b/DEV - read a extended event file from ssms.sql @@ -0,0 +1,22 @@ +SELECT + --CAST(event_data as XML) as event_data, + n.value('(@name)[1]', 'varchar(50)') as event_name, + n.value('(@package)[1]', 'varchar(50)') AS package_name, + n.value('(@timestamp)[1]', 'datetime2') AS [utc_timestamp], + n.value('(action[@name="client_app_name"]/value)[1]', 'nvarchar(max)') as client_app_name, + n.value('(action[@name="event_sequence"]/value)[1]', 'bigint') AS event_sequence, + n.value('(data[@name="duration"]/value)[1]', 'int') as duration, + n.value('(data[@name="cpu_time"]/value)[1]', 'int') as cpu, + n.value('(data[@name="physical_reads"]/value)[1]', 'int') as physical_reads, + n.value('(data[@name="logical_reads"]/value)[1]', 'int') as logical_reads, + n.value('(data[@name="writes"]/value)[1]', 'int') as writes, + n.value('(data[@name="row_count"]/value)[1]', 'int') as row_count, + n.value('(data[@name="last_row_count"]/value)[1]', 'int') as last_row_count, + n.value('(data[@name="statement"]/value)[1]', 'nvarchar(max)') as statement, + n.value('(data[@name="sql_text"]/value)[1]', 'nvarchar(max)') as sql_text +from (select cast(event_data as XML) as event_data +from sys.fn_xe_file_target_read_file('D:\SSMS projects\OCTPDBA-444 - Disable CASH Synchronization in Centrals\sunCent\octpdba-443_azcash_0_133171837677290000.xel', null, null, null)) ed +cross apply ed.event_data.nodes('event') as q(n) +WHERE n.value('(action[@name="client_app_name"]/value)[1]', 'nvarchar(max)') = 'APS® TriaOne-Cash' +AND n.value('(data[@name="duration"]/value)[1]', 'int') IS NOT NULL +ORDER BY n.value('(action[@name="event_sequence"]/value)[1]', 'bigint') ASC diff --git a/OCTPDBA-443 - Disable CASH Synchronization in Pharmacies/.gitignore b/OCTPDBA-443 - Disable CASH Synchronization in Pharmacies/.gitignore new file mode 100644 index 0000000..4dc4e03 --- /dev/null +++ b/OCTPDBA-443 - Disable CASH Synchronization in Pharmacies/.gitignore @@ -0,0 +1 @@ +*.xel diff --git a/OCTPDBA-444 - Disable CASH Synchronization in Centrals/.gitignore b/OCTPDBA-444 - Disable CASH Synchronization in Centrals/.gitignore new file mode 100644 index 0000000..4dc4e03 --- /dev/null +++ b/OCTPDBA-444 - Disable CASH Synchronization in Centrals/.gitignore @@ -0,0 +1 @@ +*.xel diff --git a/analyse query cache.sql b/analyse query cache.sql new file mode 100644 index 0000000..8b718fc --- /dev/null +++ b/analyse query cache.sql @@ -0,0 +1,62 @@ +/* +Attention, toutes les colonnes sont en microseconde. Pour obtenir 1 seconde, diviser par 1'000'000 ; +pour obtenir 1 minute, diviser par 60'000'000 +*/ + +/********************************************************************** + + Extraction des requêtes SQL peu performantes sur l'instance SQL. + + Renseigner l'"ORDER BY ... DESC" au préalable. + + Attention, toutes les colonnes sont en microseconde. + Pour obtenir 1 seconde, diviser par 1'000'000 ; + pour obtenir 1 minute, diviser par 60'000'000. + + **********************************************************************/ + +SELECT TOP 100 + GETDATE() AS [Collection Date] + ,[qs].[execution_count] AS [Execution Count] + ,SUBSTRING( + [qt].[text] + ,[qs].[statement_start_offset] / 2 + 1 + ,(CASE + WHEN [qs].[statement_end_offset] = -1 THEN LEN(CONVERT(NVARCHAR(MAX), [qt].[text])) * 2 + ELSE [qs].[statement_end_offset] + END - [qs].[statement_start_offset] + ) / 2 + ) AS [Query Text] + ,DB_NAME([qt].[dbid]) AS [DB Name] + ,[qs].[total_worker_time] AS [Total CPU Time] + ,[qs].[total_worker_time] / [qs].[execution_count] AS [Avg CPU Time (ms)] + ,[qs].[total_physical_reads] AS [Total Physical Reads] + ,[qs].[total_physical_reads] / [qs].[execution_count] AS [Avg Physical Reads] + ,[qs].[total_logical_reads] AS [Total Logical Reads] + ,[qs].[total_logical_reads] / [qs].[execution_count] AS [Avg Logical Reads] + ,[qs].[total_logical_writes] AS [Total Logical Writes] + ,[qs].[total_logical_writes] / [qs].[execution_count] AS [Avg Logical Writes] + ,[qs].[total_elapsed_time] AS [Total Duration] + ,[qs].[total_elapsed_time] / 1000000.0 AS [Total Duration seconds] + ,[qs].[total_elapsed_time] / [qs].[execution_count] / 1000000.0 AS [Avg Duration seconds] + ,[qp].[query_plan] AS [Plan] + ,[qs].[creation_time] + ,[qs].[last_execution_time] + FROM [sys].[dm_exec_query_stats] AS [qs] + CROSS APPLY [sys].dm_exec_sql_text([qs].[sql_handle]) AS [qt] + CROSS APPLY [sys].dm_exec_query_plan([qs].[plan_handle]) AS [qp] + WHERE + -- [qs].[execution_count] > 50 + --OR [qs].[total_worker_time] / [qs].[execution_count] > 100 --[Avg CPU Time (ms)] + --OR [qs].[total_physical_reads] / [qs].[execution_count] > 1000 --[Avg Physical Reads] + [qs].[total_logical_reads] / [qs].[execution_count] > 1000 --[Avg Logical Reads] + --OR [qs].[total_logical_writes] / [qs].[execution_count] > 1000 --[Avg Logical Writes] + --OR [qs].[total_elapsed_time] / [qs].[execution_count] > 1000 --[Avg Duration (ms)] + ORDER BY + [Avg Logical Reads] DESC + -- [qs].[execution_count] DESC + --,[qs].[total_elapsed_time] / [qs].[execution_count] DESC + --,[qs].[total_worker_time] / [qs].[execution_count] DESC + --,[qs].[total_physical_reads] / [qs].[execution_count] DESC + --,[qs].[total_logical_reads] / [qs].[execution_count] DESC + --,[qs].[total_logical_writes] / [qs].[execution_count] DESC; \ No newline at end of file diff --git a/get autogrowth events.sql b/get autogrowth events.sql new file mode 100644 index 0000000..a62456a --- /dev/null +++ b/get autogrowth events.sql @@ -0,0 +1,54 @@ +DECLARE @filename NVARCHAR(1000); +DECLARE @bc INT; +DECLARE @ec INT; +DECLARE @bfn VARCHAR(1000); +DECLARE @efn VARCHAR(10); + + +-- Get the name of the current default trace /* A REMPLACER PAR "select path from sys.traces" */ +SELECT @filename = CAST(value AS NVARCHAR(1000)) + FROM ::fn_trace_getinfo(DEFAULT) +WHERE traceid = 1 AND property = 2; + +-- rip apart file name into pieces +SET @filename = REVERSE(@filename); +SET @bc = CHARINDEX('.',@filename); +SET @ec = CHARINDEX('_',@filename)+1; +SET @efn = REVERSE(SUBSTRING(@filename,1,@bc)); +SET @bfn = REVERSE(SUBSTRING(@filename,@ec,LEN(@filename))); + +-- set filename without rollover number +SET @filename = @bfn + @efn + +-- process all trace files +SELECT te.name AS EventName, + DB_NAME(ftg.databaseid) AS DatabaseName, + ftg.Filename, + ftg.StartTime, + ftg.EndTime, + (ftg.IntegerData*8)/1024.0 AS GrowthMB, + (ftg.duration/1000)AS DurationMS, + ftg.ApplicationName, + j.name AS JobName, + ftg.HostName, + ftg.NTDomainName, + ftg.LoginName + FROM ::fn_trace_gettable(@filename, DEFAULT) AS ftg + JOIN sys.trace_events AS te + ON ftg.EventClass = te.trace_event_id + LEFT OUTER JOIN msdb.dbo.sysjobs j + ON ftg.ApplicationName LIKE 'SQLAgent%' + AND CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY, j.job_id), 1) = SUBSTRING(ftg.ApplicationName, + CHARINDEX('0x', ftg.ApplicationName), + CHARINDEX(' ', + ftg.ApplicationName, + CHARINDEX('0x', ftg.ApplicationName) + )-CHARINDEX('0x', ftg.ApplicationName) + ) +WHERE ( ftg.EventClass = 92 -- Date File Auto-grow + OR ftg.EventClass = 93 -- Log File Auto-grow + OR ftg.EventClass = 94 -- Data File Auto Shrink + OR ftg.EventClass = 95) -- Log File Auto Shrink + --AND DB_NAME(ftg.databaseid) IN( 'arizona','tempdb') +ORDER BY ftg.StartTime + diff --git a/list databases sizes.sql b/list databases sizes.sql index 696efb3..8347dcf 100644 --- a/list databases sizes.sql +++ b/list databases sizes.sql @@ -3,7 +3,7 @@ IF OBJECT_ID('tempdb..#dbs')IS NOT NULL BEGIN; DROP TABLE #dbs; END; -CREATE TABLE #dbs ( [database_name] nvarchar(128), [log_size_mb] decimal(18,2), [row_size_mb] decimal(18,2), [total_size_mb] decimal(18,2) ) +CREATE TABLE #dbs ( [database_name] NVARCHAR(128), [log_size_mb] DECIMAL(18,2), [row_size_mb] DECIMAL(18,2), [total_size_mb] DECIMAL(18,2) ) INSERT INTO [#dbs] ([database_name], [log_size_mb], [row_size_mb], [total_size_mb]) SELECT @@ -28,18 +28,26 @@ DBCC SHRINKFILE (N'''+f.[name]+''' , 0, TRUNCATEONLY); GO ' AS shrinkData +,'USE '+d.name+'; +DBCC SHRINKFILE (N'''+f.[name]+''' , 1024); +GO + +' AS reorganizeData FROM sys.master_files F JOIN sys.databases d ON d.[database_id] = f.[database_id] JOIN [#dbs] [d2] ON d2.[database_name] = d.[name] -WHERE f.type_desc = 'ROWS' --mdf -AND d.[is_read_only] = 0 -AND d.[is_auto_shrink_on] = 0 -AND d.name NOT IN ( - 'master' - ,'tempdb' - ,'model' - ,'msdb' +WHERE f.type_desc IN ( + 'ROWS' --mdf + --'LOG' ) +--AND d.[is_read_only] = 0 +--AND d.[is_auto_shrink_on] = 0 +--AND d.name NOT IN ( +-- 'master' +-- ,'tempdb' +-- ,'model' +-- ,'msdb' +--) ORDER BY [d2].[row_size_mb] DESC, d.name DESC, f.name ASC ; --free disk space @@ -50,6 +58,8 @@ convert(varchar(512), b.volume_mount_point) as [volume_mount_point] , convert(bigint, round(((b.available_bytes / 1024.0)/1024.0),0)) as [free_mb] , convert(bigint, round(((b.total_bytes / 1024.0)/1024.0),0)) as [total_mb] , convert(bigint, round((((b.total_bytes - b.available_bytes) / 1024.0)/1024.0),0)) as [used_mb] +, CURRENT_TIMESTAMP AS now +,REPLACE(@@SERVERNAME ,'\apssql','')AS srvName from sys.master_files as [a] CROSS APPLY sys.dm_os_volume_stats(a.database_id, a.[file_id]) as [b] ORDER BY [percent_free] ASC diff --git a/list failed jobs in the last 2 days.sql b/list failed jobs in the last 2 days.sql index e08c55f..6c708a3 100644 --- a/list failed jobs in the last 2 days.sql +++ b/list failed jobs in the last 2 days.sql @@ -5,7 +5,6 @@ DECLARE @MonthPre VARCHAR(2) DECLARE @Day VARCHAR(2) DECLARE @DayPre VARCHAR(2) DECLARE @FinalDate INT - -- Initialize Variables SET @PreviousDate = DATEADD(dd, -2, GETDATE()) -- Last 2 days SET @Year = DATEPART(yyyy, @PreviousDate) @@ -14,7 +13,6 @@ SELECT @Month = RIGHT(CONVERT(VARCHAR, (@MonthPre + 1000000000)),2) SELECT @DayPre = CONVERT(VARCHAR(2), DATEPART(dd, @PreviousDate)) SELECT @Day = RIGHT(CONVERT(VARCHAR, (@DayPre + 1000000000)),2) SET @FinalDate = CAST(@Year + @Month + @Day AS INT) - -- Final Logic SELECT j.[name], s.step_name, diff --git a/xevent octpdba-443_azcash.sql b/xevent octpdba-443_azcash.sql index 8f80cc9..0908a53 100644 --- a/xevent octpdba-443_azcash.sql +++ b/xevent octpdba-443_azcash.sql @@ -8,7 +8,6 @@ BEGIN END GO - CREATE EVENT SESSION [octpdba-443_azcash] ON SERVER ADD EVENT sqlserver.attention( ACTION(package0.event_sequence,sqlserver.client_app_name,sqlserver.client_pid,sqlserver.nt_username,sqlserver.query_hash,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.sql_text) @@ -28,7 +27,7 @@ ADD EVENT sqlserver.sql_statement_completed( ADD EVENT sqlserver.sql_statement_starting( ACTION(sqlserver.client_app_name,sqlserver.sql_text) WHERE ([sqlserver].[database_name]=N'arizonaCash')) -ADD TARGET package0.event_file(SET filename=N'd:\octpdba-443_azcash',max_file_size=(100)) +ADD TARGET package0.event_file(SET filename=N'e:\octpdba-443_azcash',max_file_size=(100), max_rollover_files = 5) WITH (MAX_MEMORY=8192 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=ON,STARTUP_STATE=ON) GO