sync
This commit is contained in:
94
DWH - indexes to change 26.9.25.sql
Normal file
94
DWH - indexes to change 26.9.25.sql
Normal file
@@ -0,0 +1,94 @@
|
||||
USE bi_dm
|
||||
GO
|
||||
/* Add missing include columns */
|
||||
-- NCIX_DM_Sale_Sale_pharmacy_SAL_doc_number
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Sale'), 'NCIX_DM_Sale_Sale_pharmacy_SAL_doc_number' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.DM_Sale.NCIX_DM_Sale_Sale_pharmacy_SAL_doc_number;
|
||||
--END;
|
||||
-- GO
|
||||
-- IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Sale'), 'NCIX_DM_Sale_Sale_pharmacy_SAL_doc_number' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX NCIX_DM_Sale_Sale_pharmacy_SAL_doc_number ON dbo.DM_Sale(Sale_pharmacy, SAL_doc_number)
|
||||
-- INCLUDE(
|
||||
-- Sale_ID, SAL_value_date, SAL_pharmacode, SAL_quantity, SAL_amount_VAT, SAL_discount, SAL_prescription,
|
||||
-- SAL_prescription_number, SAL_original_prescription_number, SAL_prescriber_CAMS_code, SAL_insurance,
|
||||
-- SAL_posology, SAL_turnover_type, SAL_correction_ID,
|
||||
-- [SAL_text], [SAL_linked_sale_id], [SAL_original_date], [SAL_prescription_pharmacy]
|
||||
-- );
|
||||
-- END;
|
||||
-- GO
|
||||
|
||||
|
||||
/* create missing index */
|
||||
-- NCIX_DM_Prescriber_CAMS_code
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Prescriber'), 'NCIX_DM_Prescriber_CAMS_code' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.DM_Prescriber.NCIX_DM_Prescriber_CAMS_code;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Prescriber'), 'NCIX_DM_Prescriber_CAMS_code' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX NCIX_DM_Prescriber_CAMS_code ON dbo.DM_Prescriber(PRESC_CAMS_code)
|
||||
-- INCLUDE(PRESC_name);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
/* Create missing index */
|
||||
-- -- NCIX_DM_Sale_COL_Sale_pharmacy_Sale_id
|
||||
-- IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Sale'), 'NCIX_DM_Sale_COL_Sale_pharmacy_Sale_id' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.DM_Sale.NCIX_DM_Sale_COL_Sale_pharmacy_Sale_id;
|
||||
-- END;
|
||||
-- GO
|
||||
-- IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Sale'), 'NCIX_DM_Sale_COL_Sale_pharmacy_Sale_id' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX NCIX_DM_Sale_COL_Sale_pharmacy_Sale_id ON dbo.DM_Sale(Sale_pharmacy, Sale_ID) INCLUDE(SAL_operation_code,SAL_correction_id);
|
||||
-- END;
|
||||
-- GO
|
||||
|
||||
|
||||
/* Create missing index */
|
||||
-- NCIX_DM_item_Phcode_tarif_type
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Item'), 'NCIX_DM_item_Phcode_tarif_type' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.DM_Item.NCIX_DM_item_Phcode_tarif_type;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.DM_Item'), 'NCIX_DM_item_Phcode_tarif_type' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX NCIX_DM_item_Phcode_tarif_type ON dbo.DM_Item(Item_pharmacode, IT_PH_tarif_type);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
|
||||
USE [BI_BAS]
|
||||
GO
|
||||
/* Create missing index */
|
||||
---- IDX_BAS_T1_ORGANIZATIONAL_UNIT_ORGANIZATIONAL_id_sub_code
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_ORGANIZATIONAL_UNIT'), 'IDX_BAS_T1_ORGANIZATIONAL_UNIT_ORGANIZATIONAL_id_sub_code' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.BAS_T1_ORGANIZATIONAL_UNIT.IDX_BAS_T1_ORGANIZATIONAL_UNIT_ORGANIZATIONAL_id_sub_code;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_ORGANIZATIONAL_UNIT'), 'IDX_BAS_T1_ORGANIZATIONAL_UNIT_ORGANIZATIONAL_id_sub_code' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX IDX_BAS_T1_ORGANIZATIONAL_UNIT_ORGANIZATIONAL_id_sub_code ON dbo.BAS_T1_ORGANIZATIONAL_UNIT(ORGANIZATIONAL_UNIT_SYSTEMINSTANCE_ID, OU_SUBSIDIARY) INCLUDE(OU_CODE);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
---- IDX_BAS_T1_DOCUMENT_TYPE_DTY_TYPE
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_DOCUMENT_TYPE'), 'IDX_BAS_T1_DOCUMENT_TYPE_covering' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.BAS_T1_DOCUMENT_TYPE.IDX_BAS_T1_DOCUMENT_TYPE_covering;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_DOCUMENT_TYPE'), 'IDX_BAS_T1_DOCUMENT_TYPE_covering' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX IDX_BAS_T1_DOCUMENT_TYPE_covering ON dbo.BAS_T1_DOCUMENT_TYPE(DTY_TYPE, [DOCUMENT_TYPE_ID], [DOCUMENT_TYPE_SYSTEMINSTANCE_ID])
|
||||
-- INCLUDE([DTY_DEBIT_CREDIT_CODE]);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
---- IDX_BAS_T1_PREDEFINED_ENTRY_PD_DOCUMENT_TYPE
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_PREDEFINED_ENTRY'), 'IDX_BAS_T1_PREDEFINED_ENTRY_PD_DOCUMENT_TYPE' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.BAS_T1_PREDEFINED_ENTRY.IDX_BAS_T1_PREDEFINED_ENTRY_PD_DOCUMENT_TYPE;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.BAS_T1_PREDEFINED_ENTRY'), 'IDX_BAS_T1_PREDEFINED_ENTRY_PD_DOCUMENT_TYPE' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX IDX_BAS_T1_PREDEFINED_ENTRY_PD_DOCUMENT_TYPE ON dbo.BAS_T1_PREDEFINED_ENTRY(PD_DOCUMENT_TYPE, [PREDEFINED_ENTRY_SYSTEMINSTANCE_ID])
|
||||
-- INCLUDE([PD_CODE]);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ SELECT *
|
||||
FROM #FileSize
|
||||
*/
|
||||
--the free space in MB that should be present in the files after shrinking
|
||||
DECLARE @limit INT = 512;
|
||||
DECLARE @limit INT = 1024;
|
||||
|
||||
SELECT
|
||||
d.[name] AS dbName
|
||||
|
||||
149
HCI - setup new PharmaceuticalSpecialties_Superset.sql
Normal file
149
HCI - setup new PharmaceuticalSpecialties_Superset.sql
Normal file
@@ -0,0 +1,149 @@
|
||||
/*
|
||||
PharmaceuticalSpecialties_Superset
|
||||
|
||||
Wire the database Users to these new AD groups
|
||||
|
||||
DEV L-CI-AP-SQL-D-HCI-PharmaceuticalSpecialties_Superset_R and L-CI-AP-SQL-D-HCI-PharmaceuticalSpecialties_Superset_RW
|
||||
INT L-CI-AP-SQL-I-HCI-PharmaceuticalSpecialties_Superset_R and L-CI-AP-SQL-I-HCI-PharmaceuticalSpecialties_Superset_RW
|
||||
PROD L-CI-AP-SQL-P-HCI-PharmaceuticalSpecialties_Superset_R and L-CI-AP-SQL-P-HCI-PharmaceuticalSpecialties_Superset_RW
|
||||
|
||||
01.10.2025, TSC
|
||||
*/
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @q NVARCHAR(MAX)='';
|
||||
DECLARE @db sysname='PharmaceuticalSpecialties_Superset';
|
||||
DECLARE @env VARCHAR(111);
|
||||
DECLARE @groups TABLE(env VARCHAR(111) NOT NULL, grp_name VARCHAR(111) NOT NULL);
|
||||
SELECT @env = CASE
|
||||
WHEN @@SERVERNAME='SWMDATASQLDEV01' THEN 'dev'
|
||||
WHEN @@SERVERNAME='SWMDATASQLINT01' THEN 'int'
|
||||
WHEN @@SERVERNAME='SWMDATASQLPRD01' THEN 'prod'
|
||||
WHEN @@SERVERNAME='SWSQLMDQAS05' THEN 'log'
|
||||
ELSE 'unknown'
|
||||
END;
|
||||
DECLARE @tplLogins NVARCHAR(MAX)='
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.server_principals
|
||||
WHERE name = ''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
SET @sql =
|
||||
N''CREATE LOGIN [@grp@] '' +
|
||||
N''FROM WINDOWS '' +
|
||||
N''WITH DEFAULT_DATABASE=[master];'';
|
||||
EXEC (@sql);
|
||||
|
||||
PRINT ''created login [@grp@]'';
|
||||
END
|
||||
|
||||
';
|
||||
DECLARE @tplUser NVARCHAR(MAX)='
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.database_principals
|
||||
WHERE name = N''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
CREATE USER [@grp@]
|
||||
FOR LOGIN [@grp@];
|
||||
PRINT ''Added user [@grp@]'';
|
||||
END
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.database_principals
|
||||
WHERE name = N''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
GRANT EXECUTE TO [@grp@];
|
||||
--PRINT ''Granted EXECUTE to [@grp@]'';
|
||||
|
||||
ALTER ROLE [db_datareader] ADD MEMBER [@grp@]
|
||||
--PRINT ''Granted db_datareader to [@grp@]'';
|
||||
|
||||
PRINT ''Granted read and execute permissions to [@grp@]'';
|
||||
IF ''@grp@'' like ''%[_]RW''
|
||||
BEGIN
|
||||
ALTER ROLE [db_datawriter] ADD MEMBER [@grp@];
|
||||
PRINT ''Granted db_datawriter to [@grp@]'';
|
||||
END
|
||||
|
||||
|
||||
END
|
||||
|
||||
'
|
||||
|
||||
INSERT INTO @groups ([env],[grp_name])
|
||||
VALUES('dev', 'CENTRALINFRA\L-CI-AP-SQL-D-HCI-PharmaceuticalSpecialties_Superset_R')
|
||||
,('dev', 'CENTRALINFRA\L-CI-AP-SQL-D-HCI-PharmaceuticalSpecialties_Superset_RW')
|
||||
,('int', 'CENTRALINFRA\L-CI-AP-SQL-I-HCI-PharmaceuticalSpecialties_Superset_R')
|
||||
,('int', 'CENTRALINFRA\L-CI-AP-SQL-I-HCI-PharmaceuticalSpecialties_Superset_RW')
|
||||
,('prod', 'CENTRALINFRA\L-CI-AP-SQL-P-HCI-PharmaceuticalSpecialties_Superset_R')
|
||||
,('prod', 'CENTRALINFRA\L-CI-AP-SQL-P-HCI-PharmaceuticalSpecialties_Superset_RW')
|
||||
|
||||
;
|
||||
SELECT @env
|
||||
IF @env IN ('dev','int','prod')
|
||||
BEGIN
|
||||
SET @q='use master
|
||||
go
|
||||
BEGIN TRANSACTION
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @sql nvarchar(MAX)='''';
|
||||
';
|
||||
|
||||
--#region login
|
||||
SELECT @q = @q + REPLACE(@tplLogins, '@grp@',g.[grp_name])
|
||||
FROM @groups g
|
||||
WHERE [g].[env] = @env
|
||||
AND g.[grp_name] LIKE '%\%';
|
||||
--#endregion login
|
||||
|
||||
--#region users
|
||||
SET @q = @q +'
|
||||
use '+@db+'
|
||||
GO
|
||||
';
|
||||
|
||||
SELECT @q = @q + REPLACE(@tplUser,'@grp@', g.[grp_name])
|
||||
FROM @groups g
|
||||
WHERE g.[env] = @env;
|
||||
--#endregion users
|
||||
|
||||
SET @q = @q +'
|
||||
ROLLBACK TRANSACTION '
|
||||
PRINT ''
|
||||
|
||||
--#region print whole dyn sql
|
||||
DECLARE @String NVARCHAR(MAX) = @q
|
||||
DECLARE @CurrentEnd BIGINT; /* track the length of the next substring */
|
||||
DECLARE @offset tinyint; /*tracks the amount of offset needed */
|
||||
set @string = replace( replace(@string, char(13) + char(10), char(10)) , char(13), char(10))
|
||||
|
||||
WHILE LEN(@String) > 1
|
||||
BEGIN
|
||||
IF CHARINDEX(CHAR(10), @String) between 1 AND 4000
|
||||
BEGIN
|
||||
SET @CurrentEnd = CHARINDEX(char(10), @String) -1
|
||||
set @offset = 2
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @CurrentEnd = 4000
|
||||
set @offset = 1
|
||||
END
|
||||
PRINT SUBSTRING(@String, 1, @CurrentEnd)
|
||||
set @string = SUBSTRING(@String, @CurrentEnd+@offset, LEN(@String))
|
||||
END /*End While loop*/
|
||||
--#endregion print whole dyn sql
|
||||
END
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
189
HCI - setup new partner_superset.sql
Normal file
189
HCI - setup new partner_superset.sql
Normal file
@@ -0,0 +1,189 @@
|
||||
/*
|
||||
partner_centralized_superset
|
||||
|
||||
Wire the database Users to these new AD groups
|
||||
|
||||
DEV L-CI-AP-SQL-D-HCI-Partner_Centralized_Superset_R and L-CI-AP-SQL-D-HCI-Partner_Centralized_Superset_RW
|
||||
|
||||
INT L-CI-AP-SQL-I-HCI-Partner_Centralized_Superset_R and L-CI-AP-SQL-I-HCI-Partner_Centralized_Superset_RW
|
||||
|
||||
Copy some other legacy groups/users/sql users from Partner_Superset on the new database partner_centralized_superset
|
||||
|
||||
DEV only yellow marked groups from Partner_Superset
|
||||
|
||||
25.09.2025, TSC
|
||||
*/
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @q NVARCHAR(MAX)='';
|
||||
DECLARE @db sysname='partner_centralized_superset';
|
||||
DECLARE @env VARCHAR(111);
|
||||
DECLARE @groups TABLE(env VARCHAR(111) NOT NULL, grp_name VARCHAR(111) NOT NULL);
|
||||
SELECT @env = CASE
|
||||
WHEN @@SERVERNAME='SWMDATASQLDEV01' THEN 'dev'
|
||||
WHEN @@SERVERNAME='SWMDATASQLINT01' THEN 'int'
|
||||
WHEN @@SERVERNAME='SWMDATASQLPRD01' THEN 'prod'
|
||||
WHEN @@SERVERNAME='SWSQLMDQAS05' THEN 'log'
|
||||
ELSE 'unknown'
|
||||
END;
|
||||
DECLARE @tplLogins NVARCHAR(MAX)='
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.server_principals
|
||||
WHERE name = ''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
SET @sql =
|
||||
N''CREATE LOGIN [@grp@] '' +
|
||||
N''FROM WINDOWS '' +
|
||||
N''WITH DEFAULT_DATABASE=[master];'';
|
||||
EXEC (@sql);
|
||||
|
||||
PRINT ''created login [@grp@]'';
|
||||
END
|
||||
|
||||
';
|
||||
DECLARE @tplUser NVARCHAR(MAX)='
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.database_principals
|
||||
WHERE name = N''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
CREATE USER [@grp@]
|
||||
FOR LOGIN [@grp@];
|
||||
PRINT ''Added user [@grp@]'';
|
||||
END
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.database_principals
|
||||
WHERE name = N''@grp@''
|
||||
)
|
||||
BEGIN
|
||||
GRANT EXECUTE TO [@grp@];
|
||||
--PRINT ''Granted EXECUTE to [@grp@]'';
|
||||
|
||||
ALTER ROLE [db_datareader] ADD MEMBER [@grp@]
|
||||
--PRINT ''Granted db_datareader to [@grp@]'';
|
||||
|
||||
PRINT ''Granted read and execute permissions to [@grp@]'';
|
||||
IF ''@grp@'' like ''%[_]RW''
|
||||
BEGIN
|
||||
ALTER ROLE [db_datawriter] ADD MEMBER [@grp@];
|
||||
PRINT ''Granted db_datawriter to [@grp@]'';
|
||||
END
|
||||
|
||||
|
||||
END
|
||||
|
||||
'
|
||||
|
||||
INSERT INTO @groups ([env],[grp_name])
|
||||
VALUES('dev', 'CENTRALINFRA\L-CI-AP-SQL-D-HCI-Partner_Centralized_Superset_R')
|
||||
,('dev', 'CENTRALINFRA\L-CI-AP-SQL-D-HCI-Partner_Centralized_Superset_RW')
|
||||
,('int', 'CENTRALINFRA\L-CI-AP-SQL-I-HCI-Partner_Centralized_Superset_R')
|
||||
,('int', 'CENTRALINFRA\L-CI-AP-SQL-I-HCI-Partner_Centralized_Superset_RW')
|
||||
,('prod', 'CENTRALINFRA\L-CI-AP-SQL-P-HCI-Partner_Centralized_Superset_R')
|
||||
,('prod', 'CENTRALINFRA\L-CI-AP-SQL-P-HCI-Partner_Centralized_Superset_RW')
|
||||
|
||||
--specific groups to add on dev
|
||||
,('dev','CENTRALINFRA\L-CI-AP-SQL-DEV_MED_Team')
|
||||
,('dev','CENTRALINFRA\msa-IIS-EMedipI$')
|
||||
,('dev','CENTRALINFRA\svc-DoMe-Dev')
|
||||
,('dev','E-MEDIAT\au_cp2_int')
|
||||
,('dev','E-MEDIAT\au_documedis')
|
||||
,('dev','E-MEDIAT\au_MyProduct_int')
|
||||
,('dev','E-MEDIAT\au_ws_getpartner')
|
||||
,('dev','medicalData-importer-dev')
|
||||
,('dev','newrelic')
|
||||
|
||||
--specific groups to add on int
|
||||
,('int','centralinfra\L-CI-AP-SQL-INT_MED_Team')
|
||||
,('int','CENTRALINFRA\msa-IIS-EMedipI$')
|
||||
,('int','CENTRALINFRA\svc-DoMe-Int')
|
||||
,('int','E-MEDIAT\au_cp2_int')
|
||||
,('int','E-MEDIAT\au_documedis')
|
||||
,('int','E-MEDIAT\au_MyProduct_int')
|
||||
,('int','E-MEDIAT\dbgrp_EMEVDB22_PARTNER_SUPERSET_R')
|
||||
,('int','medicalData-importer-int')
|
||||
,('int','newrelic')
|
||||
|
||||
--specific groups to add on prod
|
||||
,('prod','CENTRALINFRA\L-CI-AP-SQL-PROD_MED_Team')
|
||||
,('prod','CENTRALINFRA\msa-IIS-EMedipP$')
|
||||
,('prod','CENTRALINFRA\svc-DoMe-Int')
|
||||
,('prod','E-MEDIAT\dbgrp_EMEVDB32_ ODB_Superset_R')
|
||||
,('prod','E-MEDIAT\au_documedis')
|
||||
,('prod','E-MEDIAT\au_MyProduct_Prod')
|
||||
,('prod','E-MEDIAT\au_ws_getpartner')
|
||||
,('prod','E-MEDIAT\dbgrp_EMEVDB32_MyProducts_RW')
|
||||
,('prod','E-MEDIAT\dbgrp_EMEVDB32_PARTNER_SUPERSET_R')
|
||||
,('prod','E-MEDIAT\L-EM-AP-SQL-EMEVDB32_Partner_Superset_R')
|
||||
,('prod','medicalData-importer-prod')
|
||||
,('prod','newrelic')
|
||||
|
||||
;
|
||||
SELECT @env
|
||||
IF @env IN ('dev','int','prod')
|
||||
BEGIN
|
||||
SET @q='use master
|
||||
go
|
||||
BEGIN TRANSACTION
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @sql nvarchar(MAX)='''';
|
||||
';
|
||||
|
||||
--#region login
|
||||
SELECT @q = @q + REPLACE(@tplLogins, '@grp@',g.[grp_name])
|
||||
FROM @groups g
|
||||
WHERE [g].[env] = @env
|
||||
AND g.[grp_name] LIKE '%\%';
|
||||
--#endregion login
|
||||
|
||||
--#region users
|
||||
SET @q = @q +'
|
||||
use '+@db+'
|
||||
GO
|
||||
';
|
||||
|
||||
SELECT @q = @q + REPLACE(@tplUser,'@grp@', g.[grp_name])
|
||||
FROM @groups g
|
||||
WHERE g.[env] = @env;
|
||||
--#endregion users
|
||||
|
||||
SET @q = @q +'
|
||||
ROLLBACK TRANSACTION '
|
||||
PRINT ''
|
||||
|
||||
--#region print whole dyn sql
|
||||
DECLARE @String NVARCHAR(MAX) = @q
|
||||
DECLARE @CurrentEnd BIGINT; /* track the length of the next substring */
|
||||
DECLARE @offset tinyint; /*tracks the amount of offset needed */
|
||||
set @string = replace( replace(@string, char(13) + char(10), char(10)) , char(13), char(10))
|
||||
|
||||
WHILE LEN(@String) > 1
|
||||
BEGIN
|
||||
IF CHARINDEX(CHAR(10), @String) between 1 AND 4000
|
||||
BEGIN
|
||||
SET @CurrentEnd = CHARINDEX(char(10), @String) -1
|
||||
set @offset = 2
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @CurrentEnd = 4000
|
||||
set @offset = 1
|
||||
END
|
||||
PRINT SUBSTRING(@String, 1, @CurrentEnd)
|
||||
set @string = SUBSTRING(@String, @CurrentEnd+@offset, LEN(@String))
|
||||
END /*End While loop*/
|
||||
--#endregion print whole dyn sql
|
||||
END
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
@@ -0,0 +1,120 @@
|
||||
-- Last updated October 1, 2021
|
||||
WITH [Waits] AS
|
||||
(SELECT
|
||||
[wait_type],
|
||||
[wait_time_ms] / 1000.0 AS [WaitS],
|
||||
([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS],
|
||||
[signal_wait_time_ms] / 1000.0 AS [SignalS],
|
||||
[waiting_tasks_count] AS [WaitCount],
|
||||
100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage],
|
||||
ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum]
|
||||
FROM sys.dm_os_wait_stats
|
||||
WHERE [wait_type] NOT IN (
|
||||
-- These wait types are almost 100% never a problem and so they are
|
||||
-- filtered out to avoid them skewing the results. Click on the URL
|
||||
-- for more information.
|
||||
N'BROKER_EVENTHANDLER', -- https://www.sqlskills.com/help/waits/BROKER_EVENTHANDLER
|
||||
N'BROKER_RECEIVE_WAITFOR', -- https://www.sqlskills.com/help/waits/BROKER_RECEIVE_WAITFOR
|
||||
N'BROKER_TASK_STOP', -- https://www.sqlskills.com/help/waits/BROKER_TASK_STOP
|
||||
N'BROKER_TO_FLUSH', -- https://www.sqlskills.com/help/waits/BROKER_TO_FLUSH
|
||||
N'BROKER_TRANSMITTER', -- https://www.sqlskills.com/help/waits/BROKER_TRANSMITTER
|
||||
N'CHECKPOINT_QUEUE', -- https://www.sqlskills.com/help/waits/CHECKPOINT_QUEUE
|
||||
N'CHKPT', -- https://www.sqlskills.com/help/waits/CHKPT
|
||||
N'CLR_AUTO_EVENT', -- https://www.sqlskills.com/help/waits/CLR_AUTO_EVENT
|
||||
N'CLR_MANUAL_EVENT', -- https://www.sqlskills.com/help/waits/CLR_MANUAL_EVENT
|
||||
N'CLR_SEMAPHORE', -- https://www.sqlskills.com/help/waits/CLR_SEMAPHORE
|
||||
|
||||
-- Maybe comment this out if you have parallelism issues
|
||||
N'CXCONSUMER', -- https://www.sqlskills.com/help/waits/CXCONSUMER
|
||||
|
||||
-- Maybe comment these four out if you have mirroring issues
|
||||
N'DBMIRROR_DBM_EVENT', -- https://www.sqlskills.com/help/waits/DBMIRROR_DBM_EVENT
|
||||
N'DBMIRROR_EVENTS_QUEUE', -- https://www.sqlskills.com/help/waits/DBMIRROR_EVENTS_QUEUE
|
||||
N'DBMIRROR_WORKER_QUEUE', -- https://www.sqlskills.com/help/waits/DBMIRROR_WORKER_QUEUE
|
||||
N'DBMIRRORING_CMD', -- https://www.sqlskills.com/help/waits/DBMIRRORING_CMD
|
||||
N'DIRTY_PAGE_POLL', -- https://www.sqlskills.com/help/waits/DIRTY_PAGE_POLL
|
||||
N'DISPATCHER_QUEUE_SEMAPHORE', -- https://www.sqlskills.com/help/waits/DISPATCHER_QUEUE_SEMAPHORE
|
||||
N'EXECSYNC', -- https://www.sqlskills.com/help/waits/EXECSYNC
|
||||
N'FSAGENT', -- https://www.sqlskills.com/help/waits/FSAGENT
|
||||
N'FT_IFTS_SCHEDULER_IDLE_WAIT', -- https://www.sqlskills.com/help/waits/FT_IFTS_SCHEDULER_IDLE_WAIT
|
||||
N'FT_IFTSHC_MUTEX', -- https://www.sqlskills.com/help/waits/FT_IFTSHC_MUTEX
|
||||
|
||||
-- Maybe comment these six out if you have AG issues
|
||||
N'HADR_CLUSAPI_CALL', -- https://www.sqlskills.com/help/waits/HADR_CLUSAPI_CALL
|
||||
N'HADR_FILESTREAM_IOMGR_IOCOMPLETION', -- https://www.sqlskills.com/help/waits/HADR_FILESTREAM_IOMGR_IOCOMPLETION
|
||||
N'HADR_LOGCAPTURE_WAIT', -- https://www.sqlskills.com/help/waits/HADR_LOGCAPTURE_WAIT
|
||||
N'HADR_NOTIFICATION_DEQUEUE', -- https://www.sqlskills.com/help/waits/HADR_NOTIFICATION_DEQUEUE
|
||||
N'HADR_TIMER_TASK', -- https://www.sqlskills.com/help/waits/HADR_TIMER_TASK
|
||||
N'HADR_WORK_QUEUE', -- https://www.sqlskills.com/help/waits/HADR_WORK_QUEUE
|
||||
|
||||
N'KSOURCE_WAKEUP', -- https://www.sqlskills.com/help/waits/KSOURCE_WAKEUP
|
||||
N'LAZYWRITER_SLEEP', -- https://www.sqlskills.com/help/waits/LAZYWRITER_SLEEP
|
||||
N'LOGMGR_QUEUE', -- https://www.sqlskills.com/help/waits/LOGMGR_QUEUE
|
||||
N'MEMORY_ALLOCATION_EXT', -- https://www.sqlskills.com/help/waits/MEMORY_ALLOCATION_EXT
|
||||
N'ONDEMAND_TASK_QUEUE', -- https://www.sqlskills.com/help/waits/ONDEMAND_TASK_QUEUE
|
||||
N'PARALLEL_REDO_DRAIN_WORKER', -- https://www.sqlskills.com/help/waits/PARALLEL_REDO_DRAIN_WORKER
|
||||
N'PARALLEL_REDO_LOG_CACHE', -- https://www.sqlskills.com/help/waits/PARALLEL_REDO_LOG_CACHE
|
||||
N'PARALLEL_REDO_TRAN_LIST', -- https://www.sqlskills.com/help/waits/PARALLEL_REDO_TRAN_LIST
|
||||
N'PARALLEL_REDO_WORKER_SYNC', -- https://www.sqlskills.com/help/waits/PARALLEL_REDO_WORKER_SYNC
|
||||
N'PARALLEL_REDO_WORKER_WAIT_WORK', -- https://www.sqlskills.com/help/waits/PARALLEL_REDO_WORKER_WAIT_WORK
|
||||
N'PREEMPTIVE_OS_FLUSHFILEBUFFERS', -- https://www.sqlskills.com/help/waits/PREEMPTIVE_OS_FLUSHFILEBUFFERS
|
||||
N'PREEMPTIVE_XE_GETTARGETSTATE', -- https://www.sqlskills.com/help/waits/PREEMPTIVE_XE_GETTARGETSTATE
|
||||
N'PVS_PREALLOCATE', -- https://www.sqlskills.com/help/waits/PVS_PREALLOCATE
|
||||
N'PWAIT_ALL_COMPONENTS_INITIALIZED', -- https://www.sqlskills.com/help/waits/PWAIT_ALL_COMPONENTS_INITIALIZED
|
||||
N'PWAIT_DIRECTLOGCONSUMER_GETNEXT', -- https://www.sqlskills.com/help/waits/PWAIT_DIRECTLOGCONSUMER_GETNEXT
|
||||
N'PWAIT_EXTENSIBILITY_CLEANUP_TASK', -- https://www.sqlskills.com/help/waits/PWAIT_EXTENSIBILITY_CLEANUP_TASK
|
||||
N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP', -- https://www.sqlskills.com/help/waits/QDS_PERSIST_TASK_MAIN_LOOP_SLEEP
|
||||
N'QDS_ASYNC_QUEUE', -- https://www.sqlskills.com/help/waits/QDS_ASYNC_QUEUE
|
||||
N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
|
||||
-- https://www.sqlskills.com/help/waits/QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP
|
||||
N'QDS_SHUTDOWN_QUEUE', -- https://www.sqlskills.com/help/waits/QDS_SHUTDOWN_QUEUE
|
||||
N'REDO_THREAD_PENDING_WORK', -- https://www.sqlskills.com/help/waits/REDO_THREAD_PENDING_WORK
|
||||
N'REQUEST_FOR_DEADLOCK_SEARCH', -- https://www.sqlskills.com/help/waits/REQUEST_FOR_DEADLOCK_SEARCH
|
||||
N'RESOURCE_QUEUE', -- https://www.sqlskills.com/help/waits/RESOURCE_QUEUE
|
||||
N'SERVER_IDLE_CHECK', -- https://www.sqlskills.com/help/waits/SERVER_IDLE_CHECK
|
||||
N'SLEEP_BPOOL_FLUSH', -- https://www.sqlskills.com/help/waits/SLEEP_BPOOL_FLUSH
|
||||
N'SLEEP_DBSTARTUP', -- https://www.sqlskills.com/help/waits/SLEEP_DBSTARTUP
|
||||
N'SLEEP_DCOMSTARTUP', -- https://www.sqlskills.com/help/waits/SLEEP_DCOMSTARTUP
|
||||
N'SLEEP_MASTERDBREADY', -- https://www.sqlskills.com/help/waits/SLEEP_MASTERDBREADY
|
||||
N'SLEEP_MASTERMDREADY', -- https://www.sqlskills.com/help/waits/SLEEP_MASTERMDREADY
|
||||
N'SLEEP_MASTERUPGRADED', -- https://www.sqlskills.com/help/waits/SLEEP_MASTERUPGRADED
|
||||
N'SLEEP_MSDBSTARTUP', -- https://www.sqlskills.com/help/waits/SLEEP_MSDBSTARTUP
|
||||
N'SLEEP_SYSTEMTASK', -- https://www.sqlskills.com/help/waits/SLEEP_SYSTEMTASK
|
||||
N'SLEEP_TASK', -- https://www.sqlskills.com/help/waits/SLEEP_TASK
|
||||
N'SLEEP_TEMPDBSTARTUP', -- https://www.sqlskills.com/help/waits/SLEEP_TEMPDBSTARTUP
|
||||
N'SNI_HTTP_ACCEPT', -- https://www.sqlskills.com/help/waits/SNI_HTTP_ACCEPT
|
||||
N'SOS_WORK_DISPATCHER', -- https://www.sqlskills.com/help/waits/SOS_WORK_DISPATCHER
|
||||
N'SP_SERVER_DIAGNOSTICS_SLEEP', -- https://www.sqlskills.com/help/waits/SP_SERVER_DIAGNOSTICS_SLEEP
|
||||
N'SQLTRACE_BUFFER_FLUSH', -- https://www.sqlskills.com/help/waits/SQLTRACE_BUFFER_FLUSH
|
||||
N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', -- https://www.sqlskills.com/help/waits/SQLTRACE_INCREMENTAL_FLUSH_SLEEP
|
||||
N'SQLTRACE_WAIT_ENTRIES', -- https://www.sqlskills.com/help/waits/SQLTRACE_WAIT_ENTRIES
|
||||
N'VDI_CLIENT_OTHER', -- https://www.sqlskills.com/help/waits/VDI_CLIENT_OTHER
|
||||
N'WAIT_FOR_RESULTS', -- https://www.sqlskills.com/help/waits/WAIT_FOR_RESULTS
|
||||
N'WAITFOR', -- https://www.sqlskills.com/help/waits/WAITFOR
|
||||
N'WAITFOR_TASKSHUTDOWN', -- https://www.sqlskills.com/help/waits/WAITFOR_TASKSHUTDOWN
|
||||
N'WAIT_XTP_RECOVERY', -- https://www.sqlskills.com/help/waits/WAIT_XTP_RECOVERY
|
||||
N'WAIT_XTP_HOST_WAIT', -- https://www.sqlskills.com/help/waits/WAIT_XTP_HOST_WAIT
|
||||
N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG', -- https://www.sqlskills.com/help/waits/WAIT_XTP_OFFLINE_CKPT_NEW_LOG
|
||||
N'WAIT_XTP_CKPT_CLOSE', -- https://www.sqlskills.com/help/waits/WAIT_XTP_CKPT_CLOSE
|
||||
N'XE_DISPATCHER_JOIN', -- https://www.sqlskills.com/help/waits/XE_DISPATCHER_JOIN
|
||||
N'XE_DISPATCHER_WAIT', -- https://www.sqlskills.com/help/waits/XE_DISPATCHER_WAIT
|
||||
N'XE_TIMER_EVENT' -- https://www.sqlskills.com/help/waits/XE_TIMER_EVENT
|
||||
)
|
||||
AND [waiting_tasks_count] > 0
|
||||
)
|
||||
SELECT
|
||||
MAX ([W1].[wait_type]) AS [WaitType],
|
||||
CAST (MAX ([W1].[WaitS]) AS DECIMAL (16,2)) AS [Wait_S],
|
||||
CAST (MAX ([W1].[ResourceS]) AS DECIMAL (16,2)) AS [Resource_S],
|
||||
CAST (MAX ([W1].[SignalS]) AS DECIMAL (16,2)) AS [Signal_S],
|
||||
MAX ([W1].[WaitCount]) AS [WaitCount],
|
||||
CAST (MAX ([W1].[Percentage]) AS DECIMAL (5,2)) AS [Percentage],
|
||||
CAST ((MAX ([W1].[WaitS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgWait_S],
|
||||
CAST ((MAX ([W1].[ResourceS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgRes_S],
|
||||
CAST ((MAX ([W1].[SignalS]) / MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgSig_S],
|
||||
CAST ('https://www.sqlskills.com/help/waits/' + MAX ([W1].[wait_type]) as XML) AS [Help/Info URL]
|
||||
FROM [Waits] AS [W1]
|
||||
INNER JOIN [Waits] AS [W2] ON [W2].[RowNum] <= [W1].[RowNum]
|
||||
GROUP BY [W1].[RowNum]
|
||||
HAVING SUM ([W2].[Percentage]) - MAX( [W1].[Percentage] ) < 95; -- percentage threshold
|
||||
GO
|
||||
59
WaitingTasks.sql
Normal file
59
WaitingTasks.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
/*============================================================================
|
||||
File: WaitingTasks.sql
|
||||
|
||||
Summary: Snapshot of waiting tasks
|
||||
|
||||
SQL Server Versions: 2005 onwards
|
||||
------------------------------------------------------------------------------
|
||||
Written by Paul S. Randal, SQLskills.com
|
||||
|
||||
(c) 2016, SQLskills.com. All rights reserved.
|
||||
|
||||
For more scripts and sample code, check out
|
||||
http://www.SQLskills.com
|
||||
|
||||
You may alter this code for your own *non-commercial* purposes. You may
|
||||
republish altered code as long as you include this copyright and give due
|
||||
credit, but you must obtain prior permission before blogging this code.
|
||||
|
||||
THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
||||
PARTICULAR PURPOSE.
|
||||
============================================================================*/
|
||||
SELECT
|
||||
[owt].[session_id] AS [SPID],
|
||||
[owt].[exec_context_id] AS [Thread],
|
||||
[ot].[scheduler_id] AS [Scheduler],
|
||||
[owt].[wait_duration_ms] AS [wait_ms],
|
||||
[owt].[wait_type],
|
||||
[owt].[blocking_session_id] AS [Blocking SPID],
|
||||
[owt].[resource_description],
|
||||
CASE [owt].[wait_type]
|
||||
WHEN N'CXPACKET' THEN
|
||||
RIGHT ([owt].[resource_description],
|
||||
CHARINDEX (N'=', REVERSE ([owt].[resource_description])) - 1)
|
||||
ELSE NULL
|
||||
END AS [Node ID],
|
||||
[eqmg].[dop] AS [DOP],
|
||||
[er].[database_id] AS [DBID],
|
||||
CAST ('https://www.sqlskills.com/help/waits/' + [owt].[wait_type] as XML) AS [Help/Info URL],
|
||||
[eqp].[query_plan],
|
||||
[est].text
|
||||
FROM sys.dm_os_waiting_tasks [owt]
|
||||
INNER JOIN sys.dm_os_tasks [ot] ON
|
||||
[owt].[waiting_task_address] = [ot].[task_address]
|
||||
INNER JOIN sys.dm_exec_sessions [es] ON
|
||||
[owt].[session_id] = [es].[session_id]
|
||||
INNER JOIN sys.dm_exec_requests [er] ON
|
||||
[es].[session_id] = [er].[session_id]
|
||||
FULL JOIN sys.dm_exec_query_memory_grants [eqmg] ON
|
||||
[owt].[session_id] = [eqmg].[session_id]
|
||||
OUTER APPLY sys.dm_exec_sql_text ([er].[sql_handle]) [est]
|
||||
OUTER APPLY sys.dm_exec_query_plan ([er].[plan_handle]) [eqp]
|
||||
WHERE
|
||||
[es].[is_user_process] = 1
|
||||
ORDER BY
|
||||
[owt].[session_id],
|
||||
[owt].[exec_context_id];
|
||||
GO
|
||||
Reference in New Issue
Block a user