sync
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
USE [ArizonaREP];
|
||||
GO
|
||||
|
||||
--#region fn_StringSplit()
|
||||
CREATE OR ALTER FUNCTION [dbo].[fnSplitString] (
|
||||
@string NVARCHAR(MAX),
|
||||
@delimiter CHAR(1)
|
||||
)
|
||||
RETURNS @output TABLE (
|
||||
[value] NVARCHAR(MAX)
|
||||
)
|
||||
BEGIN
|
||||
DECLARE @start INT,
|
||||
@end INT;
|
||||
SELECT @start = 1,
|
||||
@end = CHARINDEX(@delimiter, @string);
|
||||
WHILE @start < LEN(@string) + 1
|
||||
BEGIN
|
||||
IF @end = 0
|
||||
SET @end = LEN(@string) + 1;
|
||||
|
||||
INSERT INTO @output (
|
||||
[value]
|
||||
)
|
||||
VALUES (
|
||||
SUBSTRING(@string, @start, @end - @start)
|
||||
);
|
||||
SET @start = @end + 1;
|
||||
SET @end = CHARINDEX(@delimiter, @string, @start);
|
||||
|
||||
END;
|
||||
RETURN;
|
||||
END;
|
||||
--#endregion fn_StringSplit()
|
||||
GO
|
||||
/*
|
||||
--generate test string with 100 guid
|
||||
SELECT
|
||||
STRING_AGG([x].[address_guid], ',') adr_guids
|
||||
FROM (
|
||||
SELECT TOP (100)
|
||||
CAST(ad.Address_GUID AS VARCHAR(MAX)) AS address_guid
|
||||
--ad.AD_master_address as t_ADH_master_address
|
||||
FROM [dbo].[Address] AS [ad]
|
||||
ORDER BY NEWID()
|
||||
)x
|
||||
*/
|
||||
DECLARE @input VARCHAR(MAX)
|
||||
= 'C73898FF-5503-4565-BF1B-0EB6B9C931C3,7827AE66-6A0A-4CC9-A285-EF9269FC720D,3568B542-C543-4392-A370-88C9CD64F8C8,665A9FF2-2C31-4CFF-B341-6B657AAAB801,1B839554-509A-4CFC-802A-24F3094615D7,A8F72DC3-3398-47FE-80FD-31B316B4963D,A40AAEB1-1EDB-445F-B5E6-34BBED9640D8,E51A1139-9B7A-422F-8B54-ECB505DDB8E3,5B59C63B-6F9F-4C27-B29E-FFE75E952249,36C6EB7C-9E6E-40BC-8F95-FAB7C24667A0,3F358729-17EA-46F5-89F8-3D479025B9F9,BDF0B7BA-B6AD-4C85-9D61-C0BCFAC583AA,51F2424E-F612-4C2B-8BC5-9CB4A99F5A46,2CF05930-C477-44F9-9595-4B78F696CFFD,04CDF0CC-0241-41EC-969F-FA0749794F46,72433873-0DC5-46D0-9C06-BD568D31C7AE,8EC41453-AB8D-4F16-859B-E2EDBD2DBB2F,C390DC70-26FC-46E7-9080-45C9BE1D6889,E0BD4EAF-4CC0-42D1-ADAB-4D7471A68283,B118BE7E-563D-4316-B7CC-1F01CEE3B039,C9B34504-166C-48C4-822D-617C51220748,F586CCCA-23A2-40A0-84B7-436779762DC4,2D0C6359-A098-428E-A6AE-DBBBABF043AE,9A619595-02B6-44A6-B82B-F679D8724874,DDDE8312-124C-4B58-904E-5048A04ED389,37EF5C4A-EA7D-4EBA-8953-95658CFF0BA5,BD035A75-BE42-43E7-A9AC-23F33A81A5C5,635B9C48-38B7-405F-89CF-09F1327D4071,C325545D-2B8C-4CB7-A41D-B0CB421EE844,09A57484-66B9-43CA-B9D3-3E4ED363C730,048DD6ED-1D33-4741-AF28-897B6FBE27ED,7E8488A5-A56F-47D8-B393-7A0B43776A68,5E2DA8D5-36DD-4F07-8C16-3DFF1D21F023,B5E69008-2989-4CFA-86D4-946E591170D8,DC613FD4-A0AA-4D17-ADDF-7D26F3EEAC4F,CA0B8803-EFE4-44C9-A664-5B4123EAE7EE,8CF9A86D-E257-4213-B82E-A6AFB42C5E0B,D76A5BC9-6F5C-4124-A3FF-055128763D43,72440A44-6567-4695-910F-3D0977E114E9,E78B77D9-9CC3-417B-8E79-FB35324EB2D6,F19D17F5-F5ED-4A12-BC03-3A319CA8B8E2,2B00E466-CEA3-4AC6-BF69-E46534E8CE52,798D1622-811E-436E-BDB5-38635507BDC0,029E540F-8143-49A5-A047-7E623B387730,4367A715-5BFB-4239-B64E-D14EA6206130,15AFCAB3-AB1A-44B8-8772-A70B117339CE,04FF167C-6FE9-41D7-9015-50AD4BE27FF4,7CB284A9-F767-41F6-9AEC-3FC94FAE1EB4,F94A54D5-7DF0-43EA-A060-470CA7F3EFAC,68D94F61-6F14-4961-9A6F-4B8DBAE59799,C64326DA-EDF8-4FF9-8CE0-F0E380A28A1C,697E54FB-8D7B-4555-AF4F-38443078A01D,198B8239-D9F0-4148-A33F-C472BD3791AF,C7747A95-0CB0-4507-A35E-3C90C4DCA928,CEE05E37-705E-4BEE-BD9D-64CA38B8CC41,58B7055E-446C-4418-8917-CE2F3F286977,1A45D7AF-5CB5-420B-97E2-65831FB0B1FE,E4347572-64D3-484F-85EE-903D7DA8E58B,1C5B9754-14CD-4C81-AE75-FD095F089564,7DDC7190-7B92-427A-87C4-8E4B47348236,5BC2E239-C984-4D93-BEDE-1AEA1AD75016,81CDA684-3B50-4B09-A982-84F7F9640B18,2BF35438-E23F-4288-B187-237E6B9A8557,0F3EA17E-F334-4A3B-A8D4-8DC0FF91BCE2,A89197EB-013D-4A2D-898F-AE79191799C7,0BBBCD77-3333-4FF8-B06E-2547D6EC1FAD,0B4E5C88-3AB3-4925-9551-89602C024E0E,4ADAA89F-0409-459E-AE07-0A675BE9426D,8C5340AC-4119-47C0-B06F-F03A52B1B6BF,6EC0ED06-AE8A-4144-A638-1D19CB796EC0,832DC701-F925-47D3-8E64-A068EE6C36AB,39904FFA-ACA7-4E30-A68B-06C4416D3888,6736CE51-FF16-4C23-ABCB-BB85096A08B7,E158BEAB-7D32-4242-BCC9-3EE3E357CF4F,1042E15B-9E87-4F92-AB31-54FA46643F2C,C1ADDF37-C581-473E-B757-37C7F6E85A77,2D93F824-FEE3-4175-9F40-02846EBCCA0E,FB1B5495-6E45-4D3B-8FAC-98CAD37718FF,D27F9EF5-5D45-4A16-82BC-99DA574286EA,B79AE10A-0CB5-4CBA-BB18-2DE32C43077B,3EB0947C-2CF7-4272-B46A-00CB35ECFF9D,069D4B6B-D356-47D3-9FF3-ECC53BD6CC62,D7E8F35B-A2E7-4562-9F4F-0119EB068FBD,D429C601-EE85-440F-AC66-11BAACC11F69,5F6978C3-C8F0-46AA-9222-74746E103458,09611BCB-26D6-4D9D-972E-08759AF0DA30,7CF6034E-E4E3-4E82-AA27-185972146F41,52DECBE0-78DC-4393-9C09-069FD324165F,052A31BB-2E57-480A-BF49-1524631114E6,8B03ADF6-BBC8-49E9-9B15-AAFD915ADD83,B7C190CA-12B1-4B7B-9EBF-D9D208CF364C,82855646-59C3-461E-8BBF-CEDBE0EA235C,94C980B9-FC43-4EC2-BF7C-77C00AD44CE1,51AB8015-B7BA-44DB-888B-F75D797B03EB,87696D53-AE00-40B6-897A-0B9E89119A97,4BEF71D1-BD1A-4F39-8C13-31DCC56FC51F,96DC1B07-ABA3-4560-B844-D76FFAD70DFB,EB435CF7-B5E3-4A5F-A348-B8F0E06FDC9D,D0A09608-F66C-43F9-AF8A-75AEEE27358A,9E9D0D81-4733-4E98-AE0D-B5D3D62ECE17,173DB54C-9615-418F-AC50-236733BF1A5E';
|
||||
|
||||
--SET @input = 'C73898FF-5503-4565-BF1B-0EB6B9C931C3'
|
||||
SET @input ='069D4B6B-D356-47D3-9FF3-ECC53BD6CC62'
|
||||
|
||||
--CREATE OR ALTER PROCEDURE dbo.aps_get_address_authorization_granted_bulk
|
||||
-- @addresse_guid_list varchar(max)
|
||||
-- AS BEGIN
|
||||
;WITH [cteValues] AS (
|
||||
--transform input values in a table
|
||||
SELECT [value] AS [address_guid]
|
||||
FROM [dbo].fnSplitString(@input, ',')
|
||||
),
|
||||
[cteMaster] AS (
|
||||
--resolve master address
|
||||
SELECT [cv].[address_guid] AS [t_ADH_address_GUID],
|
||||
COALESCE([a].[AD_top_master_address], [a].[Address_GUID]) AS [t_ADH_master_address]
|
||||
FROM [cteValues] AS [cv]
|
||||
JOIN [dbo].[Address] AS [a] ON [a].[Address_GUID] = [cv].[address_guid]
|
||||
),
|
||||
[cteChildren] AS (
|
||||
--fetch all addresses using the same master_address
|
||||
SELECT [v].[t_ADH_address_GUID] AS [requested_adr_guid], --keep the original guid given in input along with all the adr_guid of entries in the branch
|
||||
[ad].[Address_GUID] AS [t_ADH_address_GUID],
|
||||
[ad].[AD_master_address] AS [t_ADH_master_address]
|
||||
FROM [cteMaster] AS [v] (NOLOCK)
|
||||
JOIN [dbo].[Address] AS [ad] WITH (NOLOCK) ON [ad].[AD_top_master_address] = [v].[t_ADH_master_address]
|
||||
UNION
|
||||
SELECT [cv].[address_guid] AS [requested_adr_guid],
|
||||
[dbo].[aps_fn_Get_Master_Address]([cv].[address_guid]) AS [t_ADH_address_GUID],
|
||||
NULL AS [t_ADH_master_address]
|
||||
FROM [cteValues] AS [cv]
|
||||
),
|
||||
cteLastStatus AS (
|
||||
SELECT ROW_NUMBER()OVER(PARTITION BY ch.[t_ADH_address_GUID] ORDER BY [ash].[AUSH_value_date] DESC) AS rnk
|
||||
,[ash].[AUSH_status]
|
||||
,ch.[t_ADH_address_GUID]
|
||||
,ch.[requested_adr_guid]
|
||||
FROM [cteChildren] ch
|
||||
JOIN dbo.[Aps_authorization] AS [aa] ON aa.[APSAU_master_address] = ch.[t_ADH_address_GUID]
|
||||
JOIN [dbo].[Authorization_status_history] AS [ash] ON ash.[AUSH_APS_authorization] = aa.[Aps_authorization_GUID]
|
||||
)
|
||||
,
|
||||
[cteStatus] AS (
|
||||
--fetch current status for each master address
|
||||
SELECT COALESCE([dbo].[aps_fn_Get_Authorization_Last_Status]([apsau].[Aps_authorization_GUID], 1), 0) AS [lastStatus],
|
||||
[m].[t_ADH_master_address],
|
||||
[m].[t_ADH_address_GUID],
|
||||
[m].[requested_adr_guid]
|
||||
--FROM [cteMaster] AS [m]
|
||||
FROM [cteChildren] AS [m]
|
||||
LEFT JOIN [dbo].[Aps_authorization] AS [apsau] (NOLOCK) ON [apsau].[APSAU_master_address] = [m].[t_ADH_master_address]
|
||||
AND [apsau].[APSAU_type] = 1
|
||||
),
|
||||
[cteResult] AS (
|
||||
--filter the status following rules in aps_fn_Is_Address_Authorization_Granted
|
||||
SELECT [cs].[requested_adr_guid],
|
||||
CAST(CASE
|
||||
WHEN MIN(COALESCE([cs].[lastStatus], 0)) NOT IN ( 2, 3 ) THEN
|
||||
0
|
||||
ELSE
|
||||
1
|
||||
END AS BIT) AS [isGranted]
|
||||
, dbo.[aps_fn_Is_Address_Authorization_Granted](cs.[requested_adr_guid],1,null) AS isGranted_original
|
||||
FROM [cteStatus] AS [cs]
|
||||
WHERE [cs].[lastStatus] <> 1 --ignore pending requests
|
||||
GROUP BY [cs].[requested_adr_guid]
|
||||
)
|
||||
|
||||
--SELECT [cteResult].[t_ADH_address_GUID],
|
||||
-- [cteResult].[isGranted]
|
||||
--FROM [cteResult];
|
||||
--SELECT *
|
||||
--FROM [cteResult]
|
||||
--ORDER BY [cteResult].[requested_adr_guid];
|
||||
|
||||
|
||||
--SELECT
|
||||
-- v.[address_guid]
|
||||
-- , dbo.[aps_fn_Is_Address_Authorization_Granted](v.[address_guid],1,null) AS isGranted
|
||||
--FROM [cteValues] v
|
||||
|
||||
SELECT *
|
||||
FROM [cteChildren]
|
||||
30
ADR REPO - heap table rebuild.sql
Normal file
30
ADR REPO - heap table rebuild.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
USE [ArizonaRep]
|
||||
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - starting address. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
ALTER TABLE dbo.address
|
||||
REBUILD WITH(
|
||||
FILLFACTOR = 70
|
||||
)
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - done address . '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - starting Address_key. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
ALTER TABLE dbo.Address_key
|
||||
REBUILD WITH(
|
||||
FILLFACTOR = 70
|
||||
)
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - done Address_key. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - starting Address_OU_link. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
ALTER TABLE dbo.Address_OU_link
|
||||
REBUILD WITH(
|
||||
FILLFACTOR = 70
|
||||
)
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - done Address_OU_link. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - starting telecom. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
ALTER TABLE dbo.telecom
|
||||
REBUILD WITH(
|
||||
FILLFACTOR = 70
|
||||
)
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - done telecom. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
|
||||
123
ADR REPO - index changes.sql
Normal file
123
ADR REPO - index changes.sql
Normal file
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
Missing Index Details from SQLQuery61.sql - swamarepprd01.centralinfra.net.ArizonaREP (CENTRALINFRA\ua208700 (142))
|
||||
The Query Processor estimates that implementing the following index could improve the query cost by 22.4378%.
|
||||
*/
|
||||
|
||||
|
||||
USE [ArizonaREP]
|
||||
GO
|
||||
|
||||
return
|
||||
--EXEC sp_rename 'dbo.Address_update_history.NCIX_Addressupdatehistory_COL_AUHtargetupdatedate'
|
||||
--,'NCIX_Addressupdatehistory_COL_AUHtargetupdatedate_old'
|
||||
--,'index'
|
||||
|
||||
|
||||
--CREATE NONCLUSTERED INDEX [NCIX_Addressupdatehistory_COL_AUHtargetupdatedate]
|
||||
--ON [dbo].[Address_update_history] ([AUH_target_OU],[AUH_target_update_date])
|
||||
--INCLUDE ([AUH_address],[AUH_update_date])
|
||||
--GO
|
||||
|
||||
---- NCIX_Addressupdatehistory_COL_AUHtargetupdatedate_old
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Address_update_history'), 'NCIX_Addressupdatehistory_COL_AUHtargetupdatedate_old' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.Address_update_history.NCIX_Addressupdatehistory_COL_AUHtargetupdatedate_old;
|
||||
--END;
|
||||
--GO
|
||||
|
||||
|
||||
|
||||
|
||||
---- NCIX_Address_COL_ADtopmasteraddress
|
||||
--EXEC sp_rename 'dbo.Address.NCIX_Address_COL_ADtopmasteraddress','NCIX_Address_COL_ADtopmasteraddress_to_del','index'
|
||||
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Address'), 'NCIX_Address_COL_ADtopmasteraddress' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.Address.NCIX_Address_COL_ADtopmasteraddress;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Address'), 'NCIX_Address_COL_ADtopmasteraddress' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE INDEX NCIX_Address_COL_ADtopmasteraddress ON dbo.Address(AD_top_master_address)
|
||||
-- INCLUDE([Address_GUID], [AD_master_address]);
|
||||
--END;
|
||||
--GO
|
||||
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Address'), 'NCIX_Address_COL_ADtopmasteraddress_to_del' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.Address.NCIX_Address_COL_ADtopmasteraddress_to_del;
|
||||
--END;
|
||||
--GO
|
||||
|
||||
|
||||
|
||||
---- NCIX_Telecom_COL_TELType
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Telecom'), 'NCIX_Telecom_COL_TELType' , 'IndexID' ) IS NOT NULL BEGIN;
|
||||
-- DROP INDEX dbo.Telecom.NCIX_Telecom_COL_TELType;
|
||||
--END;
|
||||
--GO
|
||||
--IF INDEXPROPERTY(OBJECT_ID('dbo.Telecom'), 'NCIX_Telecom_COL_TELType' , 'IndexID' ) IS NULL BEGIN;
|
||||
-- CREATE NONCLUSTERED INDEX NCIX_Telecom_COL_TELType
|
||||
-- ON [dbo].[Telecom] ([TEL_type])
|
||||
-- INCLUDE ([Telecom_GUID],[TEL_address])
|
||||
--END;
|
||||
--GO
|
||||
|
||||
|
||||
|
||||
CREATE NONCLUSTERED INDEX [NCFIX_Address_COL_Status1_MasterAddressNull]
|
||||
ON [dbo].[Address] ([AD_last_name])
|
||||
INCLUDE (
|
||||
[AD_activity],
|
||||
[AD_APS_TS],
|
||||
[AD_area],
|
||||
[AD_can_be_subsidiary_updated],
|
||||
[AD_communication_channel],
|
||||
[AD_CUST_blocking],
|
||||
[AD_CUST_remark],
|
||||
[AD_customer_category_code],
|
||||
[AD_customer_group_code],
|
||||
[AD_employee],
|
||||
[AD_mailing_language_code],
|
||||
[AD_main_insurance_key],
|
||||
[AD_main_insurance_name],
|
||||
[AD_main_insurance_policy],
|
||||
[AD_merge_date],
|
||||
[AD_middle_name],
|
||||
[AD_name_supplement],
|
||||
[AD_OmniChannelUId],
|
||||
[AD_Omnichannel_UUID],
|
||||
[AD_remark],
|
||||
[AD_salutation_text],
|
||||
[AD_social_security_number],
|
||||
[AD_supplier],
|
||||
[AD_title_text],
|
||||
[AD_top_master_address],
|
||||
[AD_user_login],
|
||||
[AD_address_1],
|
||||
[AD_address_2],
|
||||
[AD_address_3],
|
||||
[AD_advertising],
|
||||
[AD_birth_year],
|
||||
[AD_city],
|
||||
[AD_country_code],
|
||||
[AD_country_text],
|
||||
[AD_creation_OU],
|
||||
[AD_CUST_remark_pharma],
|
||||
[AD_customer],
|
||||
[AD_date_of_birth],
|
||||
[AD_first_name],
|
||||
[AD_PH_height],
|
||||
[AD_language_code],
|
||||
[AD_mailing],
|
||||
[AD_main_insurance_GUID],
|
||||
[AD_memo],
|
||||
[AD_name],
|
||||
[AD_origin],
|
||||
[AD_postal_routing_address],
|
||||
[AD_sex],
|
||||
[AD_title_code],
|
||||
[AD_update_date],
|
||||
[AD_update_OU],
|
||||
[AD_PH_weight],
|
||||
[AD_zip_code]
|
||||
)
|
||||
WHERE [AD_status] = 1
|
||||
AND [AD_master_address] IS NULL
|
||||
WITH(FILLFACTOR=70);
|
||||
90
ADR REPO - script to integrate.sql
Normal file
90
ADR REPO - script to integrate.sql
Normal file
@@ -0,0 +1,90 @@
|
||||
USE [ArizonaREP];
|
||||
GO
|
||||
/*=============================================================================
|
||||
|
||||
Re-implementation of SQL Server STRING_SPLIT() for older versions of SQL Server
|
||||
|
||||
Parameters
|
||||
----------------------
|
||||
@string NVARCHAR(MAX) The string to split
|
||||
@delimiter NCHAR(1) The delimiter to split on
|
||||
|
||||
Returns a table with a single column "value" of type NVARCHAR(MAX)
|
||||
|
||||
Creation : 29.09.2025 / TSC
|
||||
Modifications:
|
||||
|
||||
=============================================================================*/
|
||||
|
||||
CREATE OR ALTER FUNCTION [dbo].[fnSplitString] (
|
||||
@string NVARCHAR(MAX),
|
||||
@delimiter NCHAR(1)
|
||||
)
|
||||
RETURNS @output TABLE (
|
||||
[value] NVARCHAR(MAX) NULL
|
||||
)
|
||||
BEGIN
|
||||
DECLARE @start INT,
|
||||
@end INT;
|
||||
SELECT @start = 1,
|
||||
@end = CHARINDEX(@delimiter, @string);
|
||||
WHILE @start < LEN(@string) + 1
|
||||
BEGIN
|
||||
IF @end = 0
|
||||
SET @end = LEN(@string) + 1;
|
||||
|
||||
INSERT INTO @output (
|
||||
[value]
|
||||
)
|
||||
VALUES (
|
||||
SUBSTRING(@string, @start, @end - @start)
|
||||
);
|
||||
SET @start = @end + 1;
|
||||
SET @end = CHARINDEX(@delimiter, @string, @start);
|
||||
|
||||
END;
|
||||
RETURN;
|
||||
END;
|
||||
GO
|
||||
--#endregion fn_StringSplit()
|
||||
|
||||
--#region aps_get_address_authorization_granted_bulk
|
||||
GO
|
||||
/*=============================================================================
|
||||
|
||||
Parse a list of comma separated addresses_guid and check for each of them
|
||||
if a charte has been approved.
|
||||
|
||||
Extension of the scalar function [aps_fn_Is_Address_Authorization_Granted] to allow
|
||||
more than 1 address to be validated at once
|
||||
|
||||
Parameters
|
||||
----------------------
|
||||
@addresse_guid_list VARCHAR(MAX) A comma delimited list of GUID to be checked for chart validation
|
||||
|
||||
Context
|
||||
----------------------
|
||||
Deployed and used in the adresse repositories
|
||||
|
||||
Creation : 25.09.2025 / TSC
|
||||
Modifications:
|
||||
|
||||
=============================================================================*/
|
||||
CREATE OR ALTER PROCEDURE dbo.aps_get_address_authorization_granted_bulk
|
||||
@addresse_guid_list VARCHAR(MAX)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
WITH [cteValues] AS (
|
||||
--transform input values in a table
|
||||
SELECT [value] AS [address_guid]
|
||||
FROM [dbo].fnSplitString(@addresse_guid_list, ',')
|
||||
)
|
||||
|
||||
SELECT
|
||||
v.[address_guid]
|
||||
, dbo.[aps_fn_Is_Address_Authorization_Granted](v.[address_guid],1,null) AS isGranted
|
||||
FROM [cteValues] v;
|
||||
END
|
||||
GO
|
||||
--#endregion aps_get_address_authorization_granted_bulk
|
||||
@@ -0,0 +1,49 @@
|
||||
USE [ArizonaREP];
|
||||
GO
|
||||
|
||||
--#region fn_StringSplit()
|
||||
CREATE OR ALTER FUNCTION [dbo].[fnSplitString] (
|
||||
@string NVARCHAR(MAX),
|
||||
@delimiter CHAR(1)
|
||||
)
|
||||
RETURNS @output TABLE (
|
||||
[value] NVARCHAR(MAX)
|
||||
)
|
||||
BEGIN
|
||||
DECLARE @start INT,
|
||||
@end INT;
|
||||
SELECT @start = 1,
|
||||
@end = CHARINDEX(@delimiter, @string);
|
||||
WHILE @start < LEN(@string) + 1
|
||||
BEGIN
|
||||
IF @end = 0
|
||||
SET @end = LEN(@string) + 1;
|
||||
|
||||
INSERT INTO @output (
|
||||
[value]
|
||||
)
|
||||
VALUES (
|
||||
SUBSTRING(@string, @start, @end - @start)
|
||||
);
|
||||
SET @start = @end + 1;
|
||||
SET @end = CHARINDEX(@delimiter, @string, @start);
|
||||
|
||||
END;
|
||||
RETURN;
|
||||
END;
|
||||
--#endregion fn_StringSplit()
|
||||
GO
|
||||
|
||||
DECLARE @input VARCHAR(MAX)
|
||||
= 'C73898FF-5503-4565-BF1B-0EB6B9C931C3,7827AE66-6A0A-4CC9-A285-EF9269FC720D,3568B542-C543-4392-A370-88C9CD64F8C8,665A9FF2-2C31-4CFF-B341-6B657AAAB801,1B839554-509A-4CFC-802A-24F3094615D7,A8F72DC3-3398-47FE-80FD-31B316B4963D,A40AAEB1-1EDB-445F-B5E6-34BBED9640D8,E51A1139-9B7A-422F-8B54-ECB505DDB8E3,5B59C63B-6F9F-4C27-B29E-FFE75E952249,36C6EB7C-9E6E-40BC-8F95-FAB7C24667A0,3F358729-17EA-46F5-89F8-3D479025B9F9,BDF0B7BA-B6AD-4C85-9D61-C0BCFAC583AA,51F2424E-F612-4C2B-8BC5-9CB4A99F5A46,2CF05930-C477-44F9-9595-4B78F696CFFD,04CDF0CC-0241-41EC-969F-FA0749794F46,72433873-0DC5-46D0-9C06-BD568D31C7AE,8EC41453-AB8D-4F16-859B-E2EDBD2DBB2F,C390DC70-26FC-46E7-9080-45C9BE1D6889,E0BD4EAF-4CC0-42D1-ADAB-4D7471A68283,B118BE7E-563D-4316-B7CC-1F01CEE3B039,C9B34504-166C-48C4-822D-617C51220748,F586CCCA-23A2-40A0-84B7-436779762DC4,2D0C6359-A098-428E-A6AE-DBBBABF043AE,9A619595-02B6-44A6-B82B-F679D8724874,DDDE8312-124C-4B58-904E-5048A04ED389,37EF5C4A-EA7D-4EBA-8953-95658CFF0BA5,BD035A75-BE42-43E7-A9AC-23F33A81A5C5,635B9C48-38B7-405F-89CF-09F1327D4071,C325545D-2B8C-4CB7-A41D-B0CB421EE844,09A57484-66B9-43CA-B9D3-3E4ED363C730,048DD6ED-1D33-4741-AF28-897B6FBE27ED,7E8488A5-A56F-47D8-B393-7A0B43776A68,5E2DA8D5-36DD-4F07-8C16-3DFF1D21F023,B5E69008-2989-4CFA-86D4-946E591170D8,DC613FD4-A0AA-4D17-ADDF-7D26F3EEAC4F,CA0B8803-EFE4-44C9-A664-5B4123EAE7EE,8CF9A86D-E257-4213-B82E-A6AFB42C5E0B,D76A5BC9-6F5C-4124-A3FF-055128763D43,72440A44-6567-4695-910F-3D0977E114E9,E78B77D9-9CC3-417B-8E79-FB35324EB2D6,F19D17F5-F5ED-4A12-BC03-3A319CA8B8E2,2B00E466-CEA3-4AC6-BF69-E46534E8CE52,798D1622-811E-436E-BDB5-38635507BDC0,029E540F-8143-49A5-A047-7E623B387730,4367A715-5BFB-4239-B64E-D14EA6206130,15AFCAB3-AB1A-44B8-8772-A70B117339CE,04FF167C-6FE9-41D7-9015-50AD4BE27FF4,7CB284A9-F767-41F6-9AEC-3FC94FAE1EB4,F94A54D5-7DF0-43EA-A060-470CA7F3EFAC,68D94F61-6F14-4961-9A6F-4B8DBAE59799,C64326DA-EDF8-4FF9-8CE0-F0E380A28A1C,697E54FB-8D7B-4555-AF4F-38443078A01D,198B8239-D9F0-4148-A33F-C472BD3791AF,C7747A95-0CB0-4507-A35E-3C90C4DCA928,CEE05E37-705E-4BEE-BD9D-64CA38B8CC41,58B7055E-446C-4418-8917-CE2F3F286977,1A45D7AF-5CB5-420B-97E2-65831FB0B1FE,E4347572-64D3-484F-85EE-903D7DA8E58B,1C5B9754-14CD-4C81-AE75-FD095F089564,7DDC7190-7B92-427A-87C4-8E4B47348236,5BC2E239-C984-4D93-BEDE-1AEA1AD75016,81CDA684-3B50-4B09-A982-84F7F9640B18,2BF35438-E23F-4288-B187-237E6B9A8557,0F3EA17E-F334-4A3B-A8D4-8DC0FF91BCE2,A89197EB-013D-4A2D-898F-AE79191799C7,0BBBCD77-3333-4FF8-B06E-2547D6EC1FAD,0B4E5C88-3AB3-4925-9551-89602C024E0E,4ADAA89F-0409-459E-AE07-0A675BE9426D,8C5340AC-4119-47C0-B06F-F03A52B1B6BF,6EC0ED06-AE8A-4144-A638-1D19CB796EC0,832DC701-F925-47D3-8E64-A068EE6C36AB,39904FFA-ACA7-4E30-A68B-06C4416D3888,6736CE51-FF16-4C23-ABCB-BB85096A08B7,E158BEAB-7D32-4242-BCC9-3EE3E357CF4F,1042E15B-9E87-4F92-AB31-54FA46643F2C,C1ADDF37-C581-473E-B757-37C7F6E85A77,2D93F824-FEE3-4175-9F40-02846EBCCA0E,FB1B5495-6E45-4D3B-8FAC-98CAD37718FF,D27F9EF5-5D45-4A16-82BC-99DA574286EA,B79AE10A-0CB5-4CBA-BB18-2DE32C43077B,3EB0947C-2CF7-4272-B46A-00CB35ECFF9D,069D4B6B-D356-47D3-9FF3-ECC53BD6CC62,D7E8F35B-A2E7-4562-9F4F-0119EB068FBD,D429C601-EE85-440F-AC66-11BAACC11F69,5F6978C3-C8F0-46AA-9222-74746E103458,09611BCB-26D6-4D9D-972E-08759AF0DA30,7CF6034E-E4E3-4E82-AA27-185972146F41,52DECBE0-78DC-4393-9C09-069FD324165F,052A31BB-2E57-480A-BF49-1524631114E6,8B03ADF6-BBC8-49E9-9B15-AAFD915ADD83,B7C190CA-12B1-4B7B-9EBF-D9D208CF364C,82855646-59C3-461E-8BBF-CEDBE0EA235C,94C980B9-FC43-4EC2-BF7C-77C00AD44CE1,51AB8015-B7BA-44DB-888B-F75D797B03EB,87696D53-AE00-40B6-897A-0B9E89119A97,4BEF71D1-BD1A-4F39-8C13-31DCC56FC51F,96DC1B07-ABA3-4560-B844-D76FFAD70DFB,EB435CF7-B5E3-4A5F-A348-B8F0E06FDC9D,D0A09608-F66C-43F9-AF8A-75AEEE27358A,9E9D0D81-4733-4E98-AE0D-B5D3D62ECE17,173DB54C-9615-418F-AC50-236733BF1A5E';
|
||||
|
||||
WITH [cteValues] AS (
|
||||
--transform input values in a table
|
||||
SELECT [value] AS [address_guid]
|
||||
FROM [dbo].fnSplitString(@input, ',')
|
||||
)
|
||||
|
||||
SELECT
|
||||
v.[address_guid]
|
||||
, dbo.[aps_fn_Is_Address_Authorization_Granted](v.[address_guid],1,null) AS isGranted
|
||||
FROM [cteValues] v
|
||||
61
CRS dev - bkp restore data with bcp.sql
Normal file
61
CRS dev - bkp restore data with bcp.sql
Normal file
@@ -0,0 +1,61 @@
|
||||
USE [distribution]
|
||||
|
||||
DECLARE @hyperscale NVARCHAR(500)='sql-triapharmamaprod-sqlserver01.database.windows.net';
|
||||
DECLARE @tpl_archive NVARCHAR(MAX)='bcp.exe @tbl@ out d:\tsc\@tbl_file@_@host@.bcp -S @fqdn@ -T -d arizona -n';
|
||||
DECLARE @tpl_rest NVARCHAR(MAX)='bcp.exe @dst@.@tbl@ in d:\tsc\@tbl_file@_@host@.bcp -S @hyperscale@ -T -d pharmacy -n';
|
||||
DECLARE @tbl_full NVARCHAR(500);
|
||||
DECLARE @tbl_only NVARCHAR(500);
|
||||
DECLARE @tbl_file NVARCHAR(500);
|
||||
DECLARE @dst_schema NVARCHAR(100);
|
||||
DECLARE @fqdn NVARCHAR(500);
|
||||
DECLARE @host NVARCHAR(255);
|
||||
DECLARE @cmd TABLE(
|
||||
id INT IDENTITY
|
||||
, fqdn NVARCHAR(500) NOT NULL
|
||||
, tbl_name NVARCHAR(500) NOT NULL
|
||||
, cmd_archive NVARCHAR(MAX) NULL
|
||||
, cmd_restore NVARCHAR(MAX) NULL
|
||||
);
|
||||
|
||||
SELECT
|
||||
@host = LOWER(SUBSTRING(name,0,CHARINDEX('\',name)))
|
||||
,@dst_schema = LOWER(CONCAT(SUBSTRING(name, 3, 6),'_dbo'))
|
||||
FROM sys.[servers] AS [s]
|
||||
WHERE [s].[server_id]=0;
|
||||
|
||||
SELECT @fqdn = CONCAT(@host,'.centralinfra.net,1433');
|
||||
|
||||
DECLARE csr_articles CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT CONCAT([ms].[source_owner],'.',[ms].[source_object]) AS tbl, [ms].[source_object] AS tbl_only
|
||||
FROM [dbo].[MSarticles] AS [ms]
|
||||
WHERE [ms].[publisher_db]='Arizona'
|
||||
|
||||
OPEN csr_articles
|
||||
|
||||
FETCH NEXT FROM csr_articles INTO @tbl_full, @tbl_only
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SET @tbl_file = REPLACE(@tbl_full,'.','_');
|
||||
INSERT INTO @cmd (
|
||||
[fqdn],
|
||||
[tbl_name],
|
||||
[cmd_archive],
|
||||
[cmd_restore]
|
||||
)
|
||||
SELECT
|
||||
@fqdn-- fqdn
|
||||
,@tbl_full-- tbl_name
|
||||
,REPLACE(REPLACE(REPLACE(REPLACE(@tpl_archive, '@tbl@', @tbl_full),'@tbl_file@',@tbl_file),'@host@',@host),'@fqdn@', @fqdn)
|
||||
,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@tpl_rest, '@tbl@', @tbl_only),'@tbl_file@',@tbl_file),'@host@',@host),'@hyperscale@', @hyperscale), '@dst@',@dst_schema)
|
||||
;
|
||||
|
||||
|
||||
FETCH NEXT FROM csr_articles INTO @tbl_full, @tbl_only
|
||||
END
|
||||
|
||||
CLOSE csr_articles
|
||||
DEALLOCATE csr_articles
|
||||
|
||||
SELECT *
|
||||
FROM @cmd AS [c]
|
||||
672
CRS dev - create needed structure in dbo.sql
Normal file
672
CRS dev - create needed structure in dbo.sql
Normal file
@@ -0,0 +1,672 @@
|
||||
-- Created by GitHub Copilot in SSMS - review carefully before executing
|
||||
DECLARE @tpl NVARCHAR(MAX)= '
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Entry'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Entry;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Entry'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Entry (
|
||||
Entry_ID int NOT NULL,
|
||||
ET_accounting_period int NOT NULL,
|
||||
ET_document_header int NOT NULL,
|
||||
ET_sales_tax_code int NULL,
|
||||
ET_currency int NOT NULL,
|
||||
ET_entry_type int NOT NULL,
|
||||
ET_account int NOT NULL,
|
||||
ET_predefined_entry int NULL,
|
||||
ET_entry_address int NULL,
|
||||
ET_batch_run int NULL,
|
||||
ET_value_date datetime NOT NULL,
|
||||
ET_original_date datetime NOT NULL,
|
||||
ET_input_date datetime NOT NULL,
|
||||
ET_debit_base_amount decimal(14,2) NULL,
|
||||
ET_credit_base_amount decimal(14,2) NULL,
|
||||
ET_debit_currency_amount decimal(14,2) NULL,
|
||||
ET_credit_currency_amount decimal(14,2) NULL,
|
||||
ET_exchange_rate float NOT NULL DEFAULT (1),
|
||||
ET_debit_quantity decimal(11,4) NULL,
|
||||
ET_credit_quantity decimal(11,4) NULL,
|
||||
ET_extourne_number int NULL,
|
||||
ET_official_number int NULL,
|
||||
ET_text varchar(60) NULL,
|
||||
ET_hide_code bit NOT NULL DEFAULT (0),
|
||||
ET_tax_reclaiming_rate decimal(5,2) NULL,
|
||||
ET_VAT_identifier varchar(60) NULL,
|
||||
ET_TS timestamp NOT NULL,
|
||||
ET_tax_base_currency_amount decimal(14,2) NULL,
|
||||
ET_interco_type smallint NULL,
|
||||
ET_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ET_master_ID varchar(60) NULL,
|
||||
ET_reconciliation_status smallint NULL,
|
||||
ET_reconciliation_base_amount decimal(14,2) NULL,
|
||||
ET_reconciliation_curr_amount decimal(14,2) NULL,
|
||||
ET_bmc_user_profile int NULL,
|
||||
ET_APS_TS datetime NULL DEFAULT (getdate()),
|
||||
ET_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ET_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Entry PRIMARY KEY NONCLUSTERED (Entry_ID),
|
||||
CONSTRAINT CK_ET_interco_type CHECK ([ET_interco_type] >= 1 and [ET_interco_type] <= 3),
|
||||
CONSTRAINT CK_ET_pharmacy_code CHECK ([ET_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Entry_reconciliation'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Entry_reconciliation;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Entry_reconciliation'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Entry_reconciliation (
|
||||
Entry_reconciliation_ID int NOT NULL,
|
||||
ETR_entry int NOT NULL,
|
||||
ETR_linked_entry int NOT NULL,
|
||||
ETR_base_amount decimal(14,2) NULL,
|
||||
ETR_currency_amount decimal(14,2) NULL,
|
||||
ETR_debit_base_amount decimal(14,2) NULL,
|
||||
ETR_credit_base_amount decimal(14,2) NULL,
|
||||
ETR_debit_currency_amount decimal(14,2) NULL,
|
||||
ETR_credit_currency_amount decimal(14,2) NULL,
|
||||
ETR_value_date datetime NULL,
|
||||
ETR_remark varchar(255) NULL,
|
||||
ETR_TS timestamp NOT NULL,
|
||||
ETR_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ETR_master_ID varchar(60) NULL,
|
||||
ETR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ETR_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Entry_reconciliation PRIMARY KEY NONCLUSTERED (Entry_reconciliation_ID),
|
||||
CONSTRAINT CK_ETR_pharmacy_code CHECK ([ETR_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Financial_relation_account'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Financial_relation_account;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Financial_relation_account'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Financial_relation_account (
|
||||
Financial_relation_account_ID int NOT NULL,
|
||||
FNRA_subsidiary int NOT NULL,
|
||||
FNRA_BVR_member int NULL,
|
||||
FNRA_source_financial_relation int NULL,
|
||||
FNRA_address int NOT NULL,
|
||||
FNRA_beneficiary_address int NULL,
|
||||
FNRA_document_predefined_entry int NULL,
|
||||
FNRA_payment_predefined_entry int NULL,
|
||||
FNRA_financial_institution int NOT NULL,
|
||||
FNRA_account int NULL,
|
||||
FNRA_supplier_DTA_structure uniqueidentifier NULL,
|
||||
FNRA_payroll_DTA_structure uniqueidentifier NULL,
|
||||
FNRA_sequence smallint NULL,
|
||||
FNRA_account_number varchar(30) NULL,
|
||||
FNRA_text varchar(60) NULL,
|
||||
FNRA_house_bank bit NOT NULL DEFAULT ((0)),
|
||||
FNRA_by_default bit NOT NULL DEFAULT ((0)),
|
||||
FNRA_by_default_payroll bit NOT NULL DEFAULT ((0)),
|
||||
FNRA_cust_ident varchar(15) NULL,
|
||||
FNRA_doc_number_pos smallint NOT NULL DEFAULT ((0)),
|
||||
FNRA_doc_number_length smallint NULL,
|
||||
FNRA_value_date_pos smallint NOT NULL DEFAULT ((0)),
|
||||
FNRA_value_date_length smallint NULL,
|
||||
FNRA_value_date_format varchar(15) NULL,
|
||||
FNRA_DTA_identifier varchar(15) NULL,
|
||||
FNRA_DTA_payroll_identifier varchar(15) NULL,
|
||||
FNRA_IBAN_identifier varchar(60) NULL,
|
||||
FNRA_bank_fees_settlement smallint NULL,
|
||||
FNRA_active bit NOT NULL DEFAULT ((1)),
|
||||
FNRA_EAS_process bit NOT NULL DEFAULT ((0)),
|
||||
FNRA_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
FNRA_master_ID varchar(60) NULL,
|
||||
FNRA_TS timestamp NOT NULL,
|
||||
FNRA_QR_IBAN_identifier varchar(60) NULL,
|
||||
FNRA_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
FNRA_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Financial_relation_account PRIMARY KEY NONCLUSTERED (Financial_relation_account_ID),
|
||||
CONSTRAINT CK_FNRA_bank_fees_settlement CHECK ([FNRA_bank_fees_settlement]>=(1) AND [FNRA_bank_fees_settlement]<=(3)),
|
||||
CONSTRAINT CK_FNRA_pharmacy_code CHECK ([FNRA_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Address;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Address (
|
||||
Address_ID int NOT NULL,
|
||||
AD_title int NULL,
|
||||
AD_language int NOT NULL,
|
||||
AD_mailing_language int NULL,
|
||||
AD_country int NOT NULL,
|
||||
AD_bmc_user_profile int NULL,
|
||||
AD_name varchar(60) NULL,
|
||||
AD_name_supplement varchar(255) NULL,
|
||||
AD_first_name varchar(30) NULL,
|
||||
AD_middle_name varchar(4) NULL,
|
||||
AD_last_name varchar(30) NULL,
|
||||
AD_address_1 varchar(60) NULL,
|
||||
AD_address_2 varchar(60) NULL,
|
||||
AD_address_3 varchar(60) NULL,
|
||||
AD_zip_code varchar(15) NULL,
|
||||
AD_city varchar(30) NULL,
|
||||
AD_state varchar(15) NULL,
|
||||
AD_postal_routing_address varchar(60) NULL,
|
||||
AD_area varchar(15) NULL,
|
||||
AD_activity varchar(255) NULL,
|
||||
AD_EDI_identifier varchar(15) NULL,
|
||||
AD_VAT_identifier varchar(60) NULL,
|
||||
AD_swisskey varchar(30) NULL,
|
||||
AD_EU_identity_code varchar(15) NULL,
|
||||
AD_sex smallint NOT NULL DEFAULT (3),
|
||||
AD_date_of_birth datetime NULL,
|
||||
AD_mailing bit NOT NULL DEFAULT (0),
|
||||
AD_advertising bit NOT NULL DEFAULT (0),
|
||||
AD_status smallint NOT NULL DEFAULT (1),
|
||||
AD_remark varchar(255) NULL,
|
||||
AD_memo nvarchar(max) NULL,
|
||||
AD_concordat varchar(15) NULL,
|
||||
AD_place_of_origin varchar(30) NULL,
|
||||
AD_place_of_birth varchar(30) NULL,
|
||||
AD_social_security_number varchar(30) NULL,
|
||||
AD_qualification varchar(255) NULL,
|
||||
AD_creation_date datetime NULL,
|
||||
AD_modified bit NOT NULL DEFAULT (0),
|
||||
AD_TS timestamp NOT NULL,
|
||||
AD_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
AD_master_ID varchar(60) NULL,
|
||||
AD_criteria_schema_header uniqueidentifier NULL,
|
||||
AD_end_date_validity datetime NULL,
|
||||
AD_customs_identifier varchar(15) NULL,
|
||||
AD_enterprise_identifier varchar(30) NULL,
|
||||
AD_geo_address varchar(60) NULL,
|
||||
AD_geo_zip_code varchar(15) NULL,
|
||||
AD_geo_city varchar(60) NULL,
|
||||
AD_geo_state varchar(15) NULL,
|
||||
AD_geo_country int NULL,
|
||||
AD_geo_postal_routing_address varchar(60) NULL,
|
||||
AD_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
AD_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
AD_origin tinyint NOT NULL DEFAULT ((4)),
|
||||
AD_omnichannel_UUID char(64) NULL,
|
||||
AD_address_supplement varchar(60) NULL,
|
||||
CONSTRAINT PK_Address PRIMARY KEY NONCLUSTERED (Address_ID),
|
||||
CONSTRAINT CK_AD_origin CHECK ([AD_origin]=(5) OR [AD_origin]=(4) OR [AD_origin]=(3) OR [AD_origin]=(2) OR [AD_origin]=(1)),
|
||||
CONSTRAINT CK_AD_pharmacy_code CHECK ([AD_pharmacy_code]=''@phcode@''),
|
||||
CONSTRAINT CK_AD_sex CHECK ([AD_sex] >= 1 and [AD_sex] <= 4),
|
||||
CONSTRAINT CK_AD_status CHECK ([AD_status] = 99 or [AD_status] = 5 or [AD_status] = 4 or [AD_status] = 3 or [AD_status] = 2 or [AD_status] = 1)
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address_Criteria'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Address_Criteria;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address_Criteria'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Address_Criteria (
|
||||
Address_criteria_ID int NOT NULL,
|
||||
ADCR_subsidiary int NULL,
|
||||
ADCR_address int NOT NULL,
|
||||
ADCR_criteria int NOT NULL,
|
||||
ADCR_criteria_weight smallint NULL,
|
||||
ADCR_remark nvarchar(max) NULL,
|
||||
ADCR_update_date datetime NULL,
|
||||
ADCR_active bit NOT NULL DEFAULT (1),
|
||||
ADCR_TS timestamp NOT NULL,
|
||||
ADCR_valid_from datetime NULL,
|
||||
ADCR_valid_until datetime NULL,
|
||||
ADCR_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ADCR_master_ID varchar(60) NULL,
|
||||
ADCR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ADCR_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Address_criteria PRIMARY KEY NONCLUSTERED (Address_criteria_ID),
|
||||
CONSTRAINT CK_ADCR_pharmacy_code CHECK ([ADCR_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address_key'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Address_key;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Address_key'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Address_key (
|
||||
Address_key_ID int NOT NULL,
|
||||
ADK_subsidiary int NOT NULL,
|
||||
ADK_address int NOT NULL,
|
||||
ADK_key varchar(15) NULL,
|
||||
ADK_type smallint NOT NULL DEFAULT (2),
|
||||
ADK_remark varchar(255) NULL,
|
||||
ADK_user_ID varchar(18) NULL,
|
||||
ADK_APS_TS datetime NOT NULL DEFAULT (getdate()),
|
||||
ADK_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ADK_master_ID varchar(60) NULL,
|
||||
ADK_TS timestamp NOT NULL,
|
||||
ADK_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ADK_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Address_key PRIMARY KEY NONCLUSTERED (Address_key_ID),
|
||||
CONSTRAINT CK_ADK_pharmacy_code CHECK ([ADK_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_error'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Document_error;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_error'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Document_error (
|
||||
Document_error_GUID uniqueidentifier NOT NULL,
|
||||
DE_document_header int NULL,
|
||||
DE_document_line int NULL,
|
||||
DE_reason int NOT NULL,
|
||||
DE_remedy int NULL,
|
||||
DE_bmc_user_profile int NOT NULL,
|
||||
DE_creation_date datetime NOT NULL DEFAULT (getdate()),
|
||||
DE_update_date datetime NULL,
|
||||
DE_proceed bit NOT NULL DEFAULT ((0)),
|
||||
DE_remark varchar(8000) NULL,
|
||||
DE_APS_TS datetime NOT NULL DEFAULT (getdate()),
|
||||
DE_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
DE_master_ID varchar(60) NULL,
|
||||
DE_TS timestamp NOT NULL,
|
||||
DE_delivery_note_header int NULL,
|
||||
DE_xml_remark xml NULL,
|
||||
DE_xml_data xml NULL,
|
||||
DE_triaFact_update_date datetime NULL,
|
||||
DE_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Document_error PRIMARY KEY NONCLUSTERED (Document_error_GUID),
|
||||
CONSTRAINT CK_DE_pharmacy_code CHECK ([DE_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Accounting_turnover_agg'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Accounting_turnover_agg;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Accounting_turnover_agg'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Accounting_turnover_agg (
|
||||
Accounting_turnover_agg_ID int IDENTITY(1,1) NOT NULL,
|
||||
ATA_organizational_unit int NOT NULL,
|
||||
ATA_type tinyint NOT NULL,
|
||||
ATA_debit_credit tinyint NOT NULL,
|
||||
ATA_sub_type tinyint NOT NULL,
|
||||
ATA_expense_item_key varchar(30) NULL,
|
||||
ATA_nature tinyint NOT NULL,
|
||||
ATA_sub_nature varchar(15) NULL,
|
||||
ATA_tax_code varchar(4) NULL,
|
||||
ATA_amount decimal(14,2) NOT NULL,
|
||||
ATA_amount_VAT decimal(14,2) NOT NULL,
|
||||
ATA_tax_amount decimal(14,2) NOT NULL,
|
||||
ATA_accounting_value_date datetime2(7) NOT NULL,
|
||||
ATA_load_date datetime2(7) NOT NULL,
|
||||
ATA_tax_rate decimal(3,2) NULL,
|
||||
ATA_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
ATA_doc_number varchar(15) NULL,
|
||||
CONSTRAINT PK_Accounting_turnover_agg PRIMARY KEY CLUSTERED (Accounting_turnover_agg_ID),
|
||||
CONSTRAINT CK_ATA_pharmacy_code CHECK ([ATA_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Account;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Account (
|
||||
Account_ID int NOT NULL,
|
||||
AC_sales_tax_code int NULL,
|
||||
AC_default_currency int NOT NULL,
|
||||
AC_column_swap_account_number int NULL,
|
||||
AC_print_style int NULL,
|
||||
AC_account_interest int NULL,
|
||||
AC_transitory_account int NULL,
|
||||
AC_type smallint NOT NULL DEFAULT ((1)),
|
||||
AC_can_be_debited bit NOT NULL DEFAULT ((1)),
|
||||
AC_can_be_credited bit NOT NULL DEFAULT ((1)),
|
||||
AC_availability_start_date datetime NOT NULL,
|
||||
AC_availability_end_date datetime NULL,
|
||||
AC_liable_to_tax smallint NOT NULL DEFAULT ((1)),
|
||||
AC_credit_limit_alert decimal NULL,
|
||||
AC_credit_limit_blocking decimal NULL,
|
||||
AC_credit_limit_action smallint NULL,
|
||||
AC_currency_revaluation bit NOT NULL DEFAULT ((0)),
|
||||
AC_foreign_currency_allowed bit NOT NULL DEFAULT ((0)),
|
||||
AC_multicurrency bit NOT NULL DEFAULT ((0)),
|
||||
AC_replacement_account int NULL,
|
||||
AC_balance_sheet_column_swap bit NOT NULL DEFAULT ((0)),
|
||||
AC_CA_breakdown_required bit NOT NULL DEFAULT ((0)),
|
||||
AC_PCT_required bit NOT NULL DEFAULT ((0)),
|
||||
AC_PJE_breakdown_required bit NOT NULL DEFAULT ((0)),
|
||||
AC_cash_and_bank_account_code smallint NULL DEFAULT ((1)),
|
||||
AC_number_of_decimals smallint NULL,
|
||||
AC_tax_reclaiming_rate decimal NULL,
|
||||
AC_def_currency_rate_type smallint NOT NULL DEFAULT ((1)),
|
||||
AC_remark varchar(255) NULL,
|
||||
AC_grouping_level_1 smallint NULL DEFAULT ((1)),
|
||||
AC_grouping_level_2 smallint NULL DEFAULT ((1)),
|
||||
AC_reconciliation bit NOT NULL DEFAULT ((1)),
|
||||
AC_depreciation smallint NOT NULL DEFAULT ((2)),
|
||||
AC_TS timestamp NOT NULL,
|
||||
AC_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
AC_master_ID varchar(60) NULL,
|
||||
AC_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
AC_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Account PRIMARY KEY NONCLUSTERED (Account_ID),
|
||||
CONSTRAINT CK_Account_pharmacy_code CHECK ([AC_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_key'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Account_key;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_key'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Account_key (
|
||||
Account_key_ID int NOT NULL,
|
||||
ACK_accounting_plan int NOT NULL,
|
||||
ACK_fiscal_year int NOT NULL,
|
||||
ACK_account int NOT NULL,
|
||||
ACK_key varchar(30) NULL,
|
||||
ACK_type smallint NOT NULL,
|
||||
ACK_remark varchar(255) NULL,
|
||||
ACK_TS timestamp NOT NULL,
|
||||
ACK_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ACK_master_ID varchar(60) NULL,
|
||||
ACK_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ACK_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Account_key PRIMARY KEY NONCLUSTERED (Account_key_ID),
|
||||
CONSTRAINT CK_Account_key_pharmacy_code CHECK ([ACK_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_link'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Account_link;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_link'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Account_link (
|
||||
Account_link_ID int NOT NULL,
|
||||
ACL_subsidiary int NOT NULL,
|
||||
ACL_address int NULL,
|
||||
ACL_account int NOT NULL,
|
||||
ACL_type smallint NOT NULL,
|
||||
ACL_by_default bit NOT NULL DEFAULT (0),
|
||||
ACL_remark varchar(255) NULL,
|
||||
ACL_TS timestamp NOT NULL,
|
||||
ACL_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ACL_master_ID varchar(60) NULL,
|
||||
ACL_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ACL_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Account_link PRIMARY KEY NONCLUSTERED (Account_link_ID),
|
||||
CONSTRAINT CK_Account_link_pharmacy_code CHECK ([ACL_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_text'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Account_text;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Account_text'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Account_text (
|
||||
Account_text_ID int NOT NULL,
|
||||
ACTX_account int NOT NULL,
|
||||
ACTX_fiscal_year int NOT NULL,
|
||||
ACTX_language int NOT NULL,
|
||||
ACTX_usage_text varchar(30) NULL,
|
||||
ACTX_text varchar(255) NULL,
|
||||
ACTX_TS timestamp NOT NULL,
|
||||
ACTX_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
ACTX_master_ID varchar(60) NULL,
|
||||
ACTX_instructions varchar(8000) NULL,
|
||||
ACTX_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
ACTX_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Account_text PRIMARY KEY NONCLUSTERED (Account_text_ID),
|
||||
CONSTRAINT CK_Account_text_pharmacy_code CHECK ([ACTX_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Batch_run'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Batch_run;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Batch_run'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Batch_run (
|
||||
Batch_run_ID int NOT NULL,
|
||||
BR_subsidiary int NOT NULL,
|
||||
BR_batch_type int NOT NULL,
|
||||
BR_bmc_user_profile int NULL,
|
||||
BR_batch_number varchar(15) NOT NULL,
|
||||
BR_value_date datetime NULL,
|
||||
BR_remark varchar(255) NULL,
|
||||
BR_text varchar(60) NULL,
|
||||
BR_status smallint NOT NULL DEFAULT (1),
|
||||
BR_TS timestamp NOT NULL,
|
||||
BR_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
BR_master_ID varchar(60) NULL,
|
||||
BR_parameters varchar(max) NULL,
|
||||
BR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
BR_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Batch_run PRIMARY KEY NONCLUSTERED (Batch_run_ID),
|
||||
CONSTRAINT CK_Batch_run_pharmacy_code CHECK ([BR_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''BVR_member'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.BVR_member;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''BVR_member'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.BVR_member (
|
||||
BVR_member_ID int NOT NULL,
|
||||
BVRM_member_number varchar(15) NULL,
|
||||
BVRM_member_account varchar(15) NULL,
|
||||
BVRM_bank smallint NOT NULL DEFAULT (1),
|
||||
BVRM_cust_ident_pos smallint NOT NULL DEFAULT (0),
|
||||
BVRM_cust_ident_length smallint NULL,
|
||||
BVRM_TS timestamp NOT NULL,
|
||||
BVRM_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
BVRM_master_ID varchar(60) NULL,
|
||||
BVR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
BVRM_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_BVR_member PRIMARY KEY NONCLUSTERED (BVR_member_ID),
|
||||
CONSTRAINT CK_BVR_member_pharmacy_code CHECK ([BVRM_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''CRS_batch_run'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.CRS_batch_run;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''CRS_batch_run'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.CRS_batch_run (
|
||||
CRS_batch_run_ID int NOT NULL,
|
||||
CRSBR_batch_run int NOT NULL,
|
||||
CRSBR_conversation_ID int NOT NULL,
|
||||
CRSBR_source_reference varchar(255) NULL,
|
||||
CRSBR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
CRSBR_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_CRS_batch_run PRIMARY KEY NONCLUSTERED (CRS_batch_run_ID),
|
||||
CONSTRAINT CK_CRS_batch_run_pharmacy_code CHECK ([CRSBR_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''CRS_document_header'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.CRS_document_header;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''CRS_document_header'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.CRS_document_header (
|
||||
CRS_document_header_ID int NOT NULL,
|
||||
CRSDH_document_header int NOT NULL,
|
||||
CRSDH_conversation_ID int NOT NULL,
|
||||
CRSDH_source tinyint NOT NULL,
|
||||
CRSDH_creation_date datetime2 NOT NULL,
|
||||
CRSDH_source_reference varchar(255) NULL,
|
||||
CRSDH_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
CRSDH_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_CRS_document_header PRIMARY KEY NONCLUSTERED (CRS_document_header_ID),
|
||||
CONSTRAINT CK_CRS_document_header_pharmacy_code CHECK ([CRSDH_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''DH_Criteria'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.DH_Criteria;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''DH_Criteria'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.DH_Criteria (
|
||||
DH_criteria_ID int NOT NULL,
|
||||
DHCR_document_header int NOT NULL,
|
||||
DHCR_criteria int NOT NULL,
|
||||
DHCR_remark varchar(255) NULL,
|
||||
DHCR_TS timestamp NOT NULL,
|
||||
DHCR_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
DHCR_master_ID varchar(60) NULL,
|
||||
DHCR_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
DHCR_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_DH_Criteria PRIMARY KEY NONCLUSTERED (DH_criteria_ID),
|
||||
CONSTRAINT CK_DH_Criteria_pharmacy_code CHECK ([DHCR_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_date'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Document_date;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_date'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Document_date (
|
||||
Document_date_ID int NOT NULL,
|
||||
DD_batch_run int NULL,
|
||||
DD_document_header int NOT NULL,
|
||||
DD_insurance_bill_to int NULL,
|
||||
DD_date datetime NOT NULL,
|
||||
DD_real_date datetime NULL,
|
||||
DD_preparation_date datetime NULL,
|
||||
DD_promised_date datetime NULL,
|
||||
DD_element_requirement_date datetime NULL,
|
||||
DD_amount decimal NULL,
|
||||
DD_type smallint NOT NULL,
|
||||
DD_label varchar(60) NULL,
|
||||
DD_mandatory bit NOT NULL DEFAULT ((0)),
|
||||
DD_percentage decimal NULL,
|
||||
DD_reminder_level smallint NULL,
|
||||
DD_delivery_type smallint NULL,
|
||||
DD_tracking_number varchar(30) NULL,
|
||||
DD_error_list varchar(255) NULL,
|
||||
DD_remark varchar(max) NULL,
|
||||
DD_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
DD_master_ID varchar(60) NULL,
|
||||
DD_TS timestamp NOT NULL,
|
||||
DD_PH_insurance_plan uniqueidentifier NULL,
|
||||
DD_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
DD_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Document_date PRIMARY KEY NONCLUSTERED (Document_date_ID),
|
||||
CONSTRAINT CK_Document_date_pharmacy_code CHECK ([DD_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_header'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
DROP TABLE @dbo@.Document_header;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = ''Document_header'' AND schema_id = SCHEMA_ID(''@dbo@''))
|
||||
CREATE TABLE @dbo@.Document_header (
|
||||
Document_header_ID int NOT NULL,
|
||||
DH_subsidiary int NOT NULL,
|
||||
DH_address_contact_person_list int NULL,
|
||||
DH_VAT_period int NULL,
|
||||
DH_language int NULL,
|
||||
DH_default_task int NULL,
|
||||
DH_invoicing_method int NULL,
|
||||
DH_payment_method int NULL,
|
||||
DH_source_financial_relation int NULL,
|
||||
DH_financial_relation_account int NULL,
|
||||
DH_shipping_method int NULL,
|
||||
DH_work_order int NULL,
|
||||
DH_journal int NULL,
|
||||
DH_default_accounting_period int NULL,
|
||||
DH_bmc_user_profile int NULL,
|
||||
DH_currency int NULL,
|
||||
DH_delivery_code int NULL,
|
||||
DH_payment_terms int NULL,
|
||||
DH_predefined_entry int NOT NULL,
|
||||
DH_account int NULL,
|
||||
DH_sold_to int NOT NULL,
|
||||
DH_ship_to int NOT NULL,
|
||||
DH_bill_to int NOT NULL,
|
||||
DH_send_bill_to int NOT NULL,
|
||||
DH_add_turnover_to int NOT NULL,
|
||||
DH_freight_forwarder int NULL,
|
||||
DH_def_PCEM int NULL,
|
||||
DH_def_inventory_site int NULL,
|
||||
DH_def_inventory_location int NULL,
|
||||
DH_def_sales_representative int NULL,
|
||||
DH_vehicle int NULL,
|
||||
DH_time_period int NULL,
|
||||
DH_printed_copies smallint NOT NULL DEFAULT (0),
|
||||
DH_copies smallint NOT NULL DEFAULT (0),
|
||||
DH_originals smallint NOT NULL DEFAULT (0),
|
||||
DH_reminder_level smallint NOT NULL DEFAULT (0),
|
||||
DH_label varchar(30) NULL,
|
||||
DH_ship_to_text varchar(255) NULL,
|
||||
DH_sold_to_text varchar(255) NULL,
|
||||
DH_send_bill_to_text varchar(255) NULL,
|
||||
DH_our_ref varchar(255) NULL,
|
||||
DH_your_ref varchar(255) NULL,
|
||||
DH_reference varchar(255) NULL,
|
||||
DH_doc_number varchar(15) NULL,
|
||||
DH_accounting_number int NULL,
|
||||
DH_batch_number int NULL,
|
||||
DH_archive_number varchar(60) NULL,
|
||||
DH_accounting_status smallint NOT NULL DEFAULT (1),
|
||||
DH_open_item bit NOT NULL DEFAULT (0),
|
||||
DH_doc_date datetime NOT NULL,
|
||||
DH_value_date datetime NOT NULL,
|
||||
DH_input_date datetime NULL,
|
||||
DH_delivery_date datetime NULL,
|
||||
DH_due_date_basis datetime NULL,
|
||||
DH_management_value_date datetime NULL,
|
||||
DH_dealt_by varchar(60) NULL,
|
||||
DH_remark varchar(max) NULL,
|
||||
DH_version smallint NOT NULL DEFAULT (0),
|
||||
DH_status smallint NOT NULL,
|
||||
DH_state smallint NOT NULL DEFAULT (1),
|
||||
DH_print_code smallint NOT NULL,
|
||||
DH_tax_calculated bit NOT NULL DEFAULT (0),
|
||||
DH_exchange_rate float NULL DEFAULT (1),
|
||||
DH_BVR_reference varchar(30) NULL,
|
||||
DH_BVR_original_line varchar(255) NULL,
|
||||
DH_invoice_group varchar(30) NULL,
|
||||
DH_TS timestamp NOT NULL,
|
||||
DH_organizational_unit int NULL,
|
||||
DH_IPI_reference varchar(60) NULL,
|
||||
DH_bank_fees_settlement smallint NULL,
|
||||
DH_cash_status smallint NULL,
|
||||
DH_inventory_interface smallint NULL,
|
||||
DH_accounting_interface smallint NULL,
|
||||
DH_VGUID varchar(36) NULL DEFAULT (newid()),
|
||||
DH_inventory_status smallint NULL,
|
||||
DH_master_ID varchar(60) NULL,
|
||||
DH_allocation_status smallint NULL,
|
||||
DH_ALT_type smallint NULL,
|
||||
DH_bonus_points decimal NULL,
|
||||
DH_IOU_signature_status smallint NULL,
|
||||
DH_IOU_signature_unlock_code varchar(255) NULL,
|
||||
DH_external_doc_number varchar(30) NULL,
|
||||
DH_VIP_card_barcode varchar(30) NULL,
|
||||
DH_transitory_PERM int NULL,
|
||||
DH_transitory_start_date datetime NULL,
|
||||
DH_robot_batch_number varchar(60) NULL,
|
||||
DH_prescription_control_status smallint NULL,
|
||||
DH_prescription_control_status_date datetime NULL,
|
||||
DH_multi_basket_GUID uniqueidentifier NULL,
|
||||
DH_employee_card_number nvarchar(15) NULL,
|
||||
DH_rowguid uniqueidentifier NOT NULL DEFAULT (newsequentialid()),
|
||||
DH_pharmacy_code char(6) NOT NULL DEFAULT (''@phcode@''),
|
||||
CONSTRAINT PK_Document_header PRIMARY KEY NONCLUSTERED (Document_header_ID),
|
||||
CONSTRAINT CK_Document_header_pharmacy_code CHECK ([DH_pharmacy_code]=''@phcode@'')
|
||||
);
|
||||
|
||||
';
|
||||
|
||||
DECLARE @trg TABLE(
|
||||
id INT IDENTITY NOT NULL PRIMARY KEY,
|
||||
phcode VARCHAR(6) NOT NULL,
|
||||
sch VARCHAR(20) NOT NULL
|
||||
);
|
||||
|
||||
--list of pharmacies and phcy_code to handle
|
||||
INSERT INTO @trg (
|
||||
[phcode],
|
||||
[sch]
|
||||
)
|
||||
VALUES ('gam091','ama091_dbo')
|
||||
,('gam251', 'ama251_dbo')
|
||||
,('gam511', 'ama511_dbo')
|
||||
;
|
||||
|
||||
DECLARE @phcode VARCHAR(6), @sch VARCHAR(20);
|
||||
/* declare variables */
|
||||
DECLARE @q NVARCHAR(MAX)
|
||||
|
||||
DECLARE csr_schema CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT [t].[phcode], [t].[sch]
|
||||
FROM @trg AS [t];
|
||||
|
||||
OPEN csr_schema
|
||||
|
||||
FETCH NEXT FROM csr_schema INTO @phcode, @sch
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SET @q = REPLACE(REPLACE(@tpl, '@dbo@', @sch), '@phcode@', @phcode)
|
||||
|
||||
--PRINT @q
|
||||
EXEC [sys].[sp_executesql]
|
||||
@q
|
||||
,N''
|
||||
;
|
||||
FETCH NEXT FROM csr_schema INTO @phcode, @sch
|
||||
END
|
||||
|
||||
CLOSE csr_schema
|
||||
DEALLOCATE csr_schema
|
||||
338
DEV - Script a job and shcedules.sql
Normal file
338
DEV - Script a job and shcedules.sql
Normal file
@@ -0,0 +1,338 @@
|
||||
/* SYSJOBS */
|
||||
DECLARE @job_id UNIQUEIDENTIFIER = NULL,
|
||||
@name NVARCHAR(128) = NULL,
|
||||
@enabled TINYINT = 1,
|
||||
@description NVARCHAR(512) = NULL,
|
||||
@start_step_id INT = 1,
|
||||
@category_id INT,
|
||||
@owner_sid VARBINARY(85) = NULL,
|
||||
@notify_level_eventlog INT = 0,
|
||||
@notify_level_email INT = 0,
|
||||
@notify_level_netsend INT = 0,
|
||||
@notify_level_page INT = 0,
|
||||
@delete_level INT = 0,
|
||||
@categoryname NVARCHAR(128) = NULL,
|
||||
@categorytype VARCHAR(12) = NULL,
|
||||
@categoryclass INT,
|
||||
@loginname NVARCHAR(128) = NULL,
|
||||
/* NOT USED FOR NOW */
|
||||
@notify_email_operator_id INT = 0,
|
||||
@notify_netsend_operator_id INT = 0,
|
||||
@notify_page_operator_id INT = 0,
|
||||
/* SYSJOBSTEP */
|
||||
@step_id INT = NULL,
|
||||
@step_name NVARCHAR(128),
|
||||
@subsystem NVARCHAR(40),
|
||||
@command NVARCHAR(MAX) = NULL,
|
||||
@flags INT,
|
||||
@additional_parameters NVARCHAR(MAX) = NULL,
|
||||
@cmdexec_success_code INT = 0,
|
||||
@on_success_action TINYINT,
|
||||
@on_success_step_id INT = 0,
|
||||
@on_fail_action TINYINT,
|
||||
@on_fail_step_id INT = 0,
|
||||
@server NVARCHAR(128) = NULL,
|
||||
@database_name NVARCHAR(128) = NULL,
|
||||
@database_user_name NVARCHAR(128) = NULL,
|
||||
@retry_attempts INT = 0,
|
||||
@retry_interval INT = 0,
|
||||
@os_run_priority INT,
|
||||
@output_file_name NVARCHAR(200) = NULL,
|
||||
@last_run_outcome INT,
|
||||
@last_run_duration INT,
|
||||
@last_run_retries INT,
|
||||
@last_run_date INT,
|
||||
@last_run_time INT,
|
||||
@proxy_id INT = NULL,
|
||||
@proxyname NVARCHAR(128) = NULL,
|
||||
@cmd VARCHAR(MAX),
|
||||
@path VARCHAR(200),
|
||||
/* SYSSCHEDULES */
|
||||
@freq_type INT,
|
||||
@freq_interval INT,
|
||||
@freq_subday_type INT,
|
||||
@freq_subday_interval INT,
|
||||
@freq_relative_interval INT,
|
||||
@freq_recurrence_factor INT,
|
||||
@active_start_date INT,
|
||||
@active_end_date INT,
|
||||
@active_start_time INT,
|
||||
@active_end_time INT,
|
||||
/* CUSTOM */
|
||||
@code_job NVARCHAR(10) = NULL
|
||||
|
||||
DECLARE c_jobs CURSOR LOCAL FORWARD_ONLY STATIC FOR
|
||||
SELECT sj.job_id,sj.name, sj.[enabled], sj.[description], sj.start_step_id, sj.category_id, sj.owner_sid, sj.notify_level_eventlog, sj.notify_level_email, sj.notify_level_netsend, sj.notify_level_page, sj.notify_email_operator_id, sj.notify_netsend_operator_id, sj.notify_page_operator_id, sj.delete_level
|
||||
FROM msdb.dbo.sysjobs sj
|
||||
JOIN msdb.dbo.[syscategories] sc ON sc.[category_id] = sj.[category_id]
|
||||
WHERE 1=1
|
||||
AND LOWER(sj.name) NOT LIKE '%distribution%'
|
||||
AND LOWER(sj.name) NOT LIKE '%subscription%'
|
||||
AND LOWER(sj.name) NOT LIKE '%replication%'
|
||||
AND LOWER(sj.name) NOT LIKE '%ActivePos_read-%'
|
||||
AND sj.name LIKE '%-%'
|
||||
AND sc.[name] NOT LIKE '%REPL%'
|
||||
and sj.name = 'ZZ - TSC - check connectivity to replinibackup share'
|
||||
ORDER BY sj.name
|
||||
|
||||
|
||||
OPEN c_jobs
|
||||
|
||||
FETCH NEXT FROM c_jobs
|
||||
INTO @job_id, @name, @enabled, @description, @start_step_id, @category_id, @owner_sid, @notify_level_eventlog, @notify_level_email, @notify_level_netsend, @notify_level_page, @notify_email_operator_id, @notify_netsend_operator_id, @notify_page_operator_id, @delete_level
|
||||
|
||||
WHILE @@fetch_status = 0
|
||||
BEGIN
|
||||
|
||||
SET @path = 'U:\'+@name+'.sql'
|
||||
|
||||
DECLARE @cleanCmd VARCHAR(8000)= 'del "'+@path+'"';
|
||||
DECLARE @catchOutput TABLE(output VARCHAR(max));
|
||||
|
||||
INSERT INTO @catchOutput ([output])
|
||||
EXEC [sys].[xp_cmdshell] @cleanCmd;
|
||||
|
||||
EXEC HCITools.dbo.aps_File_Delete @path = @path; -- nvarchar(max)
|
||||
|
||||
|
||||
SET @code_job = SUBSTRING(@name,0,CHARINDEX('-',@name,0)-1)
|
||||
|
||||
SET @cmd = '/* Drop existing standard schedule for job */'+CHAR(13)+CHAR(10)+
|
||||
'declare @schedule_id int'+CHAR(13)+CHAR(10)+
|
||||
'declare c_schedules cursor local forward_only static for'+CHAR(13)+CHAR(10)+
|
||||
' select ss.schedule_id'+CHAR(13)+CHAR(10)+
|
||||
' from msdb.dbo.sysjobschedules sjs'+CHAR(13)+CHAR(10)+
|
||||
'INNER JOIN msdb.dbo.sysschedules ss'+CHAR(13)+CHAR(10)+
|
||||
' ON sjs.schedule_id = ss.schedule_id'+CHAR(13)+CHAR(10)+
|
||||
' AND ss.name NOT LIKE ''%#SPEC#'''+CHAR(13)+CHAR(10)+
|
||||
'INNER JOIN msdb.dbo.sysjobs sj'+CHAR(13)+CHAR(10)+
|
||||
' ON sjs.job_id = sj.job_id'+CHAR(13)+CHAR(10)+
|
||||
' WHERE sj.name = N'''+REPLACE(@name,'''','''''')+''''+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'open c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'FETCH NEXT FROM c_schedules into @schedule_id'+CHAR(13)+CHAR(10)+
|
||||
'while @@fetch_status = 0'+CHAR(13)+CHAR(10)+
|
||||
'begin'+CHAR(13)+CHAR(10)+
|
||||
' IF ((select COUNT(*) from msdb.dbo.sysjobschedules where schedule_id=@schedule_id) = 1)'+CHAR(13)+CHAR(10)+
|
||||
' EXEC msdb.dbo.sp_delete_schedule @schedule_id=@schedule_id, @force_delete = 1'+CHAR(13)+CHAR(10)+
|
||||
'FETCH NEXT FROM c_schedules into @schedule_id'+CHAR(13)+CHAR(10)+
|
||||
'end'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'close c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'deallocate c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'''+REPLACE(@name,'''','''''')+''')'+CHAR(13)+CHAR(10)+
|
||||
'EXEC msdb.dbo.sp_delete_job @job_name = N'''+REPLACE(@name,'''','''''')+''', @delete_unused_schedule=0'+CHAR(13)+CHAR(10)+
|
||||
'GO'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'/* Creation Job and Steps*/'+CHAR(13)+CHAR(10)+
|
||||
'BEGIN TRANSACTION'+CHAR(13)+CHAR(10)+
|
||||
'DECLARE @ReturnCode INT'+CHAR(13)+CHAR(10)+
|
||||
'SELECT @ReturnCode = 0'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @categoryname = NULL
|
||||
SET @categoryclass = 1
|
||||
SET @categorytype = 'LOCAL'
|
||||
|
||||
SELECT @categoryname = name,@categoryclass = category_class, @categorytype = CASE category_type
|
||||
WHEN 1 THEN 'LOCAL'
|
||||
WHEN 2 THEN 'MULTI-SERVER'
|
||||
WHEN 3 THEN 'NONE' END
|
||||
FROM msdb.dbo.syscategories WHERE category_id = @category_id
|
||||
|
||||
SET @loginname = NULL
|
||||
|
||||
SELECT @loginname = name FROM sys.syslogins WHERE sid = @owner_sid
|
||||
|
||||
/*
|
||||
, @notify_level_eventlog =
|
||||
, @notify_level_email =
|
||||
, @notify_level_netsend =
|
||||
, @notify_level_page =
|
||||
, @notify_email_operator_name =
|
||||
, @notify_netsend_operator_name =
|
||||
, @notify_page_operator_name =
|
||||
|
||||
*/
|
||||
|
||||
|
||||
SET @cmd = 'IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'''+REPLACE(@categoryname,'''','''''')+''' AND category_class='+CAST(@categoryclass AS VARCHAR(1))+')'+CHAR(13)+CHAR(10)+
|
||||
'BEGIN'+CHAR(13)+CHAR(10)+
|
||||
'EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N''JOB'', @type=N'''+ @categorytype +''', @name=N'''+REPLACE(@categoryname,'''','''''')+''''+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'END'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'/* Add Job */'+CHAR(13)+CHAR(10)+
|
||||
'DECLARE @jobId BINARY(16)'+CHAR(13)+CHAR(10)+
|
||||
'EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'''+REPLACE(@name,'''','''''')+''', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@enabled=' +CAST(@enabled AS VARCHAR(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@notify_level_eventlog=' +CAST(@notify_level_eventlog AS VARCHAR(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@notify_level_email=' +CAST(@notify_level_email AS VARCHAR(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@notify_level_netsend=' +CAST(@notify_level_netsend AS VARCHAR(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@notify_level_page=' +CAST(@notify_level_page AS VARCHAR(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@delete_level='+CAST(@delete_level AS VARCHAR(2))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @cmd = '@description='+ISNULL('N'''+REPLACE(@description,'''','''''')+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @cmd = '@category_name=N'''+@categoryname+''', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@start_step_id='+CAST(@start_step_id AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@owner_login_name=N'''+@loginname+''', @job_id = @jobId OUTPUT'+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
DECLARE c_jobstep CURSOR LOCAL FORWARD_ONLY STATIC FOR
|
||||
SELECT step_id, step_name, subsystem, command, flags, additional_parameters, cmdexec_success_code, on_success_action, on_success_step_id, on_fail_action, on_fail_step_id, [server], database_name, database_user_name, retry_attempts, retry_interval, os_run_priority, output_file_name, last_run_outcome, proxy_id
|
||||
FROM msdb.dbo.sysjobsteps
|
||||
WHERE job_id = @job_id
|
||||
ORDER BY step_id
|
||||
|
||||
OPEN c_jobstep
|
||||
|
||||
FETCH NEXT FROM c_jobstep
|
||||
INTO @step_id, @step_name, @subsystem, @command, @flags, @additional_parameters, @cmdexec_success_code, @on_success_action, @on_success_step_id, @on_fail_action, @on_fail_step_id, @server, @database_name, @database_user_name, @retry_attempts, @retry_interval, @os_run_priority, @output_file_name, @last_run_outcome, @proxy_id
|
||||
|
||||
WHILE @@fetch_status = 0
|
||||
BEGIN
|
||||
|
||||
SET @proxyname = NULL
|
||||
|
||||
SELECT @proxyname = name FROM msdb.dbo.sysproxies WHERE proxy_id = @proxy_id
|
||||
|
||||
SET @cmd = '/* Add Step */'+CHAR(13)+CHAR(10)+
|
||||
'EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'''+REPLACE(@step_name,'''','''''')+''', '+CHAR(13)+CHAR(10)+CHAR(9)+ CHAR(9)+
|
||||
'@step_id='+CAST(@step_id AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@cmdexec_success_code='+CAST(@cmdexec_success_code AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@on_success_action='+CAST(@on_success_action AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@on_success_step_id='+CAST(@on_success_step_id AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@on_fail_action='+CAST(@on_fail_action AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@on_fail_step_id='+CAST(@on_fail_step_id AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@retry_attempts='+CAST(@retry_attempts AS VARCHAR(30))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@retry_interval='+CAST(@retry_interval AS VARCHAR(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@os_run_priority='+CAST(@os_run_priority AS VARCHAR(3))+', @subsystem=N'''+@subsystem+''', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @cmd = '@command='+ISNULL('N'''+REPLACE(@command,'''','''''')+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
|
||||
SET @cmd = '@database_name='+ISNULL('N'''+@database_name+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@output_file_name='+ISNULL('N'''+@output_file_name+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@flags='+CAST(@flags as varchar(3))+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@database_user_name='+ISNULL('N'''+@database_user_name+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@server='+ISNULL('N'''+@server+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @cmd = '@additional_parameters='+ISNULL('N'''+@additional_parameters+'''','NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
--'@proxy_id='+ISNULL(CAST(@proxy_id as varchar(50)),'NULL')+', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@proxy_id=NULL, '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@proxy_name='+ISNULL('N'''+@proxyname+'''','NULL')+''+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
FETCH NEXT FROM c_jobstep
|
||||
into @step_id, @step_name, @subsystem, @command, @flags, @additional_parameters, @cmdexec_success_code, @on_success_action, @on_success_step_id, @on_fail_action, @on_fail_step_id, @server, @database_name, @database_user_name, @retry_attempts, @retry_interval, @os_run_priority, @output_file_name, @last_run_outcome, @proxy_id
|
||||
end
|
||||
|
||||
close c_jobstep
|
||||
|
||||
deallocate c_jobstep
|
||||
|
||||
SET @cmd = 'EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = '+CAST(@start_step_id as varchar(3))+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
declare c_schedules cursor local forward_only static for
|
||||
select name,[enabled],freq_type,freq_interval,freq_subday_type,freq_subday_interval,freq_relative_interval,freq_recurrence_factor,active_start_date,active_end_date,active_start_time,active_end_time
|
||||
from msdb.dbo.sysjobschedules sjs
|
||||
INNER JOIN msdb.dbo.sysschedules ss
|
||||
ON sjs.job_id = @job_id
|
||||
AND sjs.schedule_id = ss.schedule_id
|
||||
AND ss.name NOT LIKE '%#SPEC#'
|
||||
AND ss.name LIKE @code_job+'%'
|
||||
|
||||
open c_schedules
|
||||
|
||||
FETCH NEXT FROM c_schedules
|
||||
into @name,@enabled, @freq_type, @freq_interval, @freq_subday_type, @freq_subday_interval, @freq_relative_interval, @freq_recurrence_factor, @active_start_date, @active_end_date, @active_start_time, @active_end_time
|
||||
|
||||
while @@fetch_status = 0
|
||||
begin
|
||||
|
||||
SET @cmd = '/* Add Standard Schedule */'+CHAR(13)+CHAR(10)+
|
||||
'EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'''+REPLACE(@name,'''','''''')+''', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@enabled=' +CAST(@enabled as varchar(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_type=' +CAST(@freq_type as varchar(3)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_interval=' +CAST(@freq_interval as varchar(3)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_subday_type=' +CAST(@freq_subday_type as varchar(1)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_subday_interval=' +CAST(@freq_subday_interval as varchar(2)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_relative_interval=' +CAST(@freq_relative_interval as varchar(2)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@freq_recurrence_factor=' +CAST(@freq_recurrence_factor as varchar(2)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@active_start_date=' +CAST(@active_start_date as varchar(8)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@active_end_date=' +CAST(@active_end_date as varchar(8)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@active_start_time=' +CAST(@active_start_time as varchar(6)) +', '+CHAR(13)+CHAR(10)+CHAR(9)+CHAR(9)+
|
||||
'@active_end_time=' +CAST(@active_end_time as varchar(6)) +''+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
FETCH NEXT FROM c_schedules
|
||||
into @name,@enabled, @freq_type, @freq_interval, @freq_subday_type, @freq_subday_interval, @freq_relative_interval, @freq_recurrence_factor, @active_start_date, @active_end_date, @active_start_time, @active_end_time
|
||||
end
|
||||
|
||||
close c_schedules
|
||||
|
||||
deallocate c_schedules
|
||||
|
||||
SET @cmd = '/* Attach existing specific schedule for job */'+CHAR(13)+CHAR(10)+
|
||||
'declare @enabled_schedule int,'+CHAR(13)+CHAR(10)+
|
||||
' @schedule_name nvarchar(50)'+CHAR(13)+CHAR(10)+
|
||||
'declare c_schedules cursor local forward_only static for'+CHAR(13)+CHAR(10)+
|
||||
'select enabled, name'+CHAR(13)+CHAR(10)+
|
||||
' from msdb.dbo.sysschedules'+CHAR(13)+CHAR(10)+
|
||||
' where name LIKE '''+@code_job+'%'''+CHAR(13)+CHAR(10)+
|
||||
' and name LIKE ''%#SPEC#'''+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'open c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'FETCH NEXT FROM c_schedules into @enabled_schedule, @schedule_name'+CHAR(13)+CHAR(10)+
|
||||
'while @@fetch_status = 0'+CHAR(13)+CHAR(10)+
|
||||
'begin'+CHAR(13)+CHAR(10)+
|
||||
' EXEC @ReturnCode = msdb.dbo.sp_attach_schedule @job_id = @jobId, @schedule_name=@schedule_name'+CHAR(13)+CHAR(10)+
|
||||
' IF(@enabled_schedule = 1)'+CHAR(13)+CHAR(10)+
|
||||
' begin'+CHAR(13)+CHAR(10)+
|
||||
' SET @schedule_name = SUBSTRING(@schedule_name,0,LEN(@schedule_name)-5)'+CHAR(13)+CHAR(10)+
|
||||
' IF EXISTS (select name from msdb.dbo.sysschedules where name = @schedule_name)'+CHAR(13)+CHAR(10)+
|
||||
' EXEC @ReturnCode = msdb.dbo.sp_update_schedule @name=@schedule_name, @enabled=0'+CHAR(13)+CHAR(10)+
|
||||
' end'+CHAR(13)+CHAR(10)+
|
||||
' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+
|
||||
'FETCH NEXT FROM c_schedules into @enabled_schedule, @schedule_name'+CHAR(13)+CHAR(10)+
|
||||
'end'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'close c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'deallocate c_schedules'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
SET @cmd = 'EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N''(local)'''+CHAR(13)+CHAR(10)+
|
||||
'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback'+CHAR(13)+CHAR(10)+
|
||||
'COMMIT TRANSACTION'+CHAR(13)+CHAR(10)+
|
||||
'GOTO EndSave'+CHAR(13)+CHAR(10)+
|
||||
'QuitWithRollback:'+CHAR(13)+CHAR(10)+
|
||||
' IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION'+CHAR(13)+CHAR(10)+
|
||||
'EndSave:'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+
|
||||
'GO'+CHAR(13)+CHAR(10)
|
||||
|
||||
EXEC HCITools.[dbo].[aps_File_Write_Text] @data = @cmd, @path = @path,@append = 1, @encoding = 'utf-16'
|
||||
|
||||
FETCH NEXT FROM c_jobs
|
||||
into @job_id, @name, @enabled, @description, @start_step_id, @category_id, @owner_sid, @notify_level_eventlog, @notify_level_email, @notify_level_netsend, @notify_level_page, @notify_email_operator_id, @notify_netsend_operator_id, @notify_page_operator_id, @delete_level
|
||||
|
||||
end
|
||||
|
||||
close c_jobs
|
||||
|
||||
deallocate c_jobs
|
||||
@@ -1,128 +1,21 @@
|
||||
USE [master]
|
||||
/* declare variables */
|
||||
DECLARE @db VARCHAR(100)
|
||||
IF OBJECT_ID('tempdb..#txt')IS NOT NULL BEGIN;
|
||||
DROP TABLE #txt;
|
||||
END;
|
||||
|
||||
CREATE TABLE #txt(
|
||||
id INT NOT NULL IDENTITY
|
||||
,db VARCHAR(100) NOT NULL
|
||||
,msg NVARCHAR(MAX) NULL
|
||||
);
|
||||
|
||||
DECLARE csr_db CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT d.name
|
||||
FROM sys.databases d
|
||||
WHERE d.[database_id]>4
|
||||
AND d.[is_read_only] = 0
|
||||
AND d.[state]=0
|
||||
|
||||
OPEN csr_db
|
||||
|
||||
FETCH NEXT FROM csr_db INTO @db
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
EXEC('
|
||||
use '+@db+';
|
||||
|
||||
-- Script to generate user creation and role membership
|
||||
DECLARE @UserScripts NVARCHAR(MAX) = '''';
|
||||
DECLARE @RoleScripts NVARCHAR(MAX) = '''';
|
||||
DECLARE @login NVARCHAR(MAX) = ''medicalData-importer-int'';
|
||||
--SET @login=null;
|
||||
|
||||
-- Generate user creation scripts
|
||||
SELECT @UserScripts = @UserScripts + ''CREATE USER ['' + dp.name + ''] FOR LOGIN ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_principals dp
|
||||
WHERE dp.type IN (''S'', ''U'', ''G'')
|
||||
AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
|
||||
-- Generate role membership scripts
|
||||
SELECT @RoleScripts = @RoleScripts + ''ALTER ROLE ['' + dr.name + ''] ADD MEMBER ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_principals dp
|
||||
JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
|
||||
JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
|
||||
WHERE dp.type IN (''S'', ''U'', ''G'')
|
||||
AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
|
||||
-- Print user creation and role membership scripts
|
||||
PRINT @UserScripts;
|
||||
insert into #txt(db,msg)
|
||||
select '''+@db+''',@UserScripts
|
||||
where nullif(@UserScripts,'''') is not null;
|
||||
|
||||
PRINT @RoleScripts;
|
||||
insert into #txt(db,msg)
|
||||
select '''+@db+''',@RoleScripts
|
||||
where nullif(@RoleScripts,'''') is not null;
|
||||
|
||||
-- Script to generate permissions
|
||||
DECLARE @PermissionScripts NVARCHAR(MAX) = '''';
|
||||
|
||||
SELECT @PermissionScripts = @PermissionScripts +
|
||||
CASE
|
||||
WHEN p.state_desc = ''GRANT'' THEN ''GRANT ''
|
||||
WHEN p.state_desc = ''DENY'' THEN ''DENY ''
|
||||
WHEN p.state_desc = ''REVOKE'' THEN ''REVOKE ''
|
||||
END + p.permission_name +
|
||||
CASE
|
||||
WHEN p.class_desc = ''OBJECT_OR_COLUMN'' THEN '' ON ['' + OBJECT_NAME(p.major_id) + '']''
|
||||
WHEN p.class_desc = ''DATABASE'' THEN '' ON DATABASE::['' + DB_NAME() + '']''
|
||||
WHEN p.class_desc = ''SCHEMA'' THEN '' ON SCHEMA::['' + SCHEMA_NAME(p.major_id) + '']''
|
||||
WHEN p.class_desc = ''TYPE'' THEN '' ON TYPE::['' + TYPE_NAME(p.major_id) + '']''
|
||||
ELSE ''''
|
||||
END + '' TO ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_permissions p
|
||||
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
|
||||
WHERE dp.type IN (''S'', ''U'', ''G'')
|
||||
AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
|
||||
-- Print permissions scripts
|
||||
PRINT @PermissionScripts;
|
||||
insert into #txt(db,msg)
|
||||
select '''+@db+''',@PermissionScripts
|
||||
where nullif(@PermissionScripts,'''') is not null;
|
||||
');
|
||||
|
||||
FETCH NEXT FROM csr_db INTO @db
|
||||
END
|
||||
|
||||
CLOSE csr_db
|
||||
DEALLOCATE csr_db
|
||||
|
||||
SELECT *
|
||||
FROM [#txt]
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
USE SL2007
|
||||
--USE dba
|
||||
|
||||
-- Script to generate user creation and role membership
|
||||
DECLARE @UserScripts NVARCHAR(MAX) = '';
|
||||
DECLARE @RoleScripts NVARCHAR(MAX) = '';
|
||||
DECLARE @login NVARCHAR(MAX) = 'medicalData-importer-dev';
|
||||
|
||||
-- Generate user creation scripts
|
||||
SELECT @UserScripts = @UserScripts + 'CREATE USER [' + dp.name + '] FOR LOGIN [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_principals dp
|
||||
WHERE dp.type IN ('S', 'U', 'G')
|
||||
AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||
|
||||
-- Generate role membership scripts
|
||||
SELECT @RoleScripts = @RoleScripts + 'ALTER ROLE [' + dr.name + '] ADD MEMBER [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_principals dp
|
||||
JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
|
||||
JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
|
||||
WHERE dp.type IN ('S', 'U', 'G')
|
||||
AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||
|
||||
-- Print user creation and role membership scripts
|
||||
PRINT @UserScripts;
|
||||
@@ -146,9 +39,7 @@ SELECT @PermissionScripts = @PermissionScripts +
|
||||
END + ' TO [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||
FROM sys.database_permissions p
|
||||
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
|
||||
WHERE dp.type IN ('S', 'U', 'G')
|
||||
AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
|
||||
AND dp.name = COALESCE(@login, dp.[name]);
|
||||
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||
|
||||
-- Print permissions scripts
|
||||
PRINT @PermissionScripts;
|
||||
PRINT @PermissionScripts;
|
||||
17
EXPLOIT - check log backup size.sql
Normal file
17
EXPLOIT - check log backup size.sql
Normal file
@@ -0,0 +1,17 @@
|
||||
SELECT
|
||||
database_name,
|
||||
backup_start_date,
|
||||
backup_finish_date,
|
||||
CAST(backup_size / 1024.0 / 1024 AS DECIMAL(18, 2)) AS BackupSizeMB,
|
||||
CASE
|
||||
WHEN compressed_backup_size IS NOT NULL
|
||||
THEN CAST(compressed_backup_size / 1024.0 / 1024 AS DECIMAL(18, 2))
|
||||
ELSE NULL
|
||||
END AS CompressedBackupSizeMB
|
||||
FROM
|
||||
msdb.dbo.backupset
|
||||
WHERE
|
||||
type = 'L'
|
||||
AND database_name='arizonarep'
|
||||
ORDER BY
|
||||
backup_start_date DESC;
|
||||
@@ -23,6 +23,5 @@ AND NOT EXISTS(
|
||||
IF NULLIF(@q,'') IS NOT NULL
|
||||
BEGIN
|
||||
PRINT @q
|
||||
select @q
|
||||
EXEC(@q)
|
||||
END
|
||||
134
check disk usage and db size.sql
Normal file
134
check disk usage and db size.sql
Normal file
@@ -0,0 +1,134 @@
|
||||
--databases space
|
||||
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) )
|
||||
|
||||
INSERT INTO [#dbs] ([database_name], [log_size_mb], [row_size_mb], [total_size_mb])
|
||||
SELECT
|
||||
database_name = DB_NAME(database_id)
|
||||
, log_size_mb = CAST(SUM(CASE WHEN f.type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(18,2))
|
||||
, row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(18,2))
|
||||
, total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(18,2))
|
||||
FROM sys.master_files F WITH(NOWAIT)
|
||||
GROUP BY F.database_id
|
||||
ORDER BY [total_size_mb] DESC
|
||||
|
||||
IF OBJECT_ID('tempdb..#FileSize')IS NOT NULL BEGIN;
|
||||
DROP TABLE #FileSize;
|
||||
END;
|
||||
CREATE TABLE #FileSize(
|
||||
dbName NVARCHAR(128) NOT NULL,
|
||||
FileName NVARCHAR(128) NOT NULL,
|
||||
type_desc NVARCHAR(128) NOT NULL,
|
||||
CurrentSizeMB DECIMAL(10,2) NOT NULL,
|
||||
FreeSpaceMB DECIMAL(10,2) NULL
|
||||
)
|
||||
INSERT INTO #FileSize(dbName, FileName, type_desc, CurrentSizeMB, FreeSpaceMB)
|
||||
exec sp_msforeachdb
|
||||
'use [?];
|
||||
SELECT DB_NAME() AS DbName,
|
||||
name AS FileName,
|
||||
type_desc,
|
||||
size/128.0 AS CurrentSizeMB,
|
||||
size/128.0 - CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT)/128.0 AS FreeSpaceMB
|
||||
FROM sys.database_files
|
||||
WHERE type IN (0,1);';
|
||||
|
||||
/*
|
||||
SELECT *
|
||||
FROM #FileSize
|
||||
*/
|
||||
|
||||
SELECT
|
||||
d.[name] AS dbName
|
||||
,f.[physical_name] AS physicalFileName
|
||||
,f.[name] AS logicalFileName
|
||||
--,d2.[log_size_mb]
|
||||
--,d2.[row_size_mb]
|
||||
,'-----' AS separator
|
||||
,CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2)) AS fileSizeMB
|
||||
,fs.[FreeSpaceMB] AS FreeSpaceInFileMB
|
||||
,fs.[CurrentSizeMB] - fs.[FreeSpaceMB] AS SpaceUsedMB
|
||||
,CAST((fs.[CurrentSizeMB] - fs.[FreeSpaceMB]) * 100 / (CAST(f.size * 8. / 1024 AS DECIMAL(18,2))) AS NUMERIC(6,2)) AS fileSpaceUsedPercent
|
||||
,'-----' AS separator
|
||||
,d2.[total_size_mb] AS totalDbSizeMB
|
||||
,'USE '+d.name+';
|
||||
DBCC SHRINKFILE (N'''+f.[name]+''' , 0, TRUNCATEONLY);
|
||||
GO
|
||||
|
||||
' AS shrinkData
|
||||
,'USE '+d.name+';
|
||||
DBCC SHRINKFILE (N'''+f.[name]+''' , 1024);
|
||||
GO
|
||||
|
||||
' AS reorganizeData
|
||||
,'USE '+d.name+';
|
||||
IF 1024 < '+CAST(CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2)) AS VARCHAR(15))+' --file is above 1Go
|
||||
AND 95 > '+CAST(CAST((fs.[CurrentSizeMB] - fs.[FreeSpaceMB]) * 100 / (CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2))) AS DECIMAL(6,2))AS VARCHAR(15))+' --and usage below 95%
|
||||
AND 0 < '+CAST(CAST(fs.[CurrentSizeMB] - fs.[FreeSpaceMB] AS DECIMAL(16,2))AS VARCHAR(15))+' --and data are present
|
||||
BEGIN
|
||||
--print ''Reorganize '+d.name+'.'+f.name+' ''
|
||||
RAISERROR(''Reorganize '+d.name+'.'+f.name+' '',0,0) WITH NOWAIT
|
||||
|
||||
DBCC SHRINKFILE (N'''+f.[name]+''' , '+CAST(CAST(fs.[CurrentSizeMB] - fs.[FreeSpaceMB] + 1024 AS DECIMAL(18,0)) AS VARCHAR(15))+');
|
||||
RAISERROR(''Done'',0,0) WITH NOWAIT
|
||||
END
|
||||
GO
|
||||
' AS auto_action
|
||||
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]
|
||||
LEFT JOIN [#FileSize] fs ON fs.[FileName] = f.name AND fs.[dbName] = d.[name]
|
||||
WHERE f.type_desc IN (
|
||||
'ROWS' --mdf
|
||||
--,'LOG'
|
||||
)
|
||||
--AND f.[physical_name] LIKE 'f%'
|
||||
--AND d.[is_read_only] = 0
|
||||
--AND d.[is_auto_shrink_on] = 0
|
||||
--AND d.name='sl2007'
|
||||
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
|
||||
SELECT
|
||||
CONVERT(VARCHAR(512), [b].[volume_mount_point]) AS [volume_mount_point],
|
||||
CONVERT(VARCHAR(512), [b].[logical_volume_name]) AS [logical_volume_name],
|
||||
CONVERT(DECIMAL(18, 1), ROUND(((SUM(CONVERT(FLOAT, [b].[available_bytes])) / SUM(CONVERT(FLOAT, [b].[total_bytes]))) * 100), 1)) AS [percent_free],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[available_bytes]) / 1024.0) / 1024.0 / 1024.0), 0)) AS [free_gb],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[available_bytes]) / 1024.0) / 1024.0), 0)) AS [free_mb],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[total_bytes]) / 1024.0) / 1024.0 / 1024.0), 0)) AS [total_gb],
|
||||
CONVERT(BIGINT, ROUND((((SUM([b].[total_bytes] - [b].[available_bytes])) / 1024.0) / 1024.0 / 1024.0), 0)) AS [used_gb],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[total_bytes]) / 1024.0) / 1024.0), 0)) / 100 * 5 / 1024.0 AS [5% space in Go is],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[total_bytes]) / 1024.0) / 1024.0), 0)) / 100 * 10 / 1024.0 AS [10% space in Go is],
|
||||
CONVERT(BIGINT, ROUND(((SUM([b].[total_bytes]) / 1024.0) / 1024.0), 0)) / 100 * 15 / 1024.0 AS [15% space in Go is],
|
||||
CURRENT_TIMESTAMP AS now,
|
||||
REPLACE(@@SERVERNAME, '\apssql', '') AS srvName
|
||||
FROM sys.master_files AS [a]
|
||||
CROSS APPLY (
|
||||
SELECT [x].[database_id],
|
||||
[x].[file_id],
|
||||
[x].[volume_mount_point],
|
||||
[x].[volume_id],
|
||||
[x].[logical_volume_name],
|
||||
[x].[file_system_type],
|
||||
[x].[total_bytes],
|
||||
[x].[available_bytes],
|
||||
[x].[supports_compression],
|
||||
[x].[supports_alternate_streams],
|
||||
[x].[supports_sparse_files],
|
||||
[x].[is_read_only],
|
||||
[x].[is_compressed],
|
||||
ROW_NUMBER() OVER (PARTITION BY [x].[volume_mount_point]
|
||||
ORDER BY [x].[volume_mount_point] DESC) AS rnk
|
||||
FROM sys.dm_os_volume_stats(a.database_id, a.[file_id]) x ) b
|
||||
WHERE [b].[rnk] = 1
|
||||
GROUP BY [b].[logical_volume_name], [b].[volume_mount_point]
|
||||
ORDER BY [b].[volume_mount_point] ASC;
|
||||
82
craft xml rdcman.sql
Normal file
82
craft xml rdcman.sql
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
generate xml fragment for RDCMANAGER groups
|
||||
run this scrript on hcimon
|
||||
*/
|
||||
|
||||
USE [ControlCenter]
|
||||
|
||||
|
||||
DECLARE @tpl VARCHAR(max)=' <server>
|
||||
<properties>
|
||||
<displayName>@ou@ - @name@</displayName>
|
||||
<name>@dns@</name>
|
||||
</properties>
|
||||
</server>
|
||||
';
|
||||
|
||||
|
||||
SELECT
|
||||
e.[EN_designation]
|
||||
, s.[SE_designation]
|
||||
, s.[SE_DNS]
|
||||
--,s.*
|
||||
, REPLACE(REPLACE(REPLACE(@tpl, '@name@',[s].[SE_designation] ), '@dns@',[s].[SE_DNS]),'@ou@', [s].[SE_OU_code] ) AS fragment
|
||||
FROM [dbo].[Server] s
|
||||
JOIN [dbo].[Entity] e ON e.[EN_id] = s.[SE_entity]
|
||||
WHERE [e].[EN_designation] IN (
|
||||
--'Amavita'
|
||||
--'Coop-Vitality'
|
||||
'Sun Store'
|
||||
)
|
||||
ORDER BY [e].[EN_designation], [s].[SE_designation]
|
||||
|
||||
|
||||
DECLARE @tplGrpProp AS NVARCHAR(MAX)='
|
||||
<properties>
|
||||
<expanded>False</expanded>
|
||||
<name>@grpName@</name>
|
||||
</properties>
|
||||
';
|
||||
DECLARE @tplSrv AS NVARCHAR(MAX)='
|
||||
<server>
|
||||
<properties>
|
||||
<displayName>@srvName@</displayName>
|
||||
<name>@dns@</name>
|
||||
</properties>
|
||||
@srvs@
|
||||
</server>
|
||||
';
|
||||
DECLARE @xmlTpl AS NVARCHAR(MAX)='
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RDCMan programVersion="2.93" schemaVersion="3">
|
||||
<file>
|
||||
<credentialsProfiles />
|
||||
<properties>
|
||||
<expanded>False</expanded>
|
||||
<name>emtpy</name>
|
||||
</properties>
|
||||
@grps@
|
||||
</file>
|
||||
<connected />
|
||||
<favorites />
|
||||
<recentlyUsed />
|
||||
</RDCMan>
|
||||
'
|
||||
|
||||
;WITH cteGrp AS (
|
||||
SELECT e.EN_designation, e.EN_id
|
||||
FROM [dbo].[Entity] e
|
||||
)
|
||||
,cteSrv AS (
|
||||
SELECT
|
||||
s.SE_designation AS srvName
|
||||
, s.SE_DNS AS dns
|
||||
, g.EN_designation AS grpName
|
||||
, ROW_NUMBER()OVER(PARTITION BY g.EN_designation ORDER BY g.EN_designation, s.SE_designation) AS rid
|
||||
FROM cteGrp g
|
||||
JOIN dbo.Server s ON s.SE_entity = g.EN_id
|
||||
)
|
||||
SELECT *
|
||||
FROM cteSrv s
|
||||
ORDER BY s.grpName ASC, s.srvName ASC
|
||||
;
|
||||
@@ -19,7 +19,7 @@ https://www.sqlservercentral.com/forums/topic/how-to-import-replication-monitor-
|
||||
</PublisherGroups>
|
||||
|
||||
and save it in the local folder
|
||||
C:\Users\ua208700\AppData\Roaming\Microsoft\Microsoft SQL Server\200\Tools\SQL Monitor\rmsetting.xml
|
||||
C:\Users\ua208700\AppData\Roaming\Microsoft\Microsoft SQL Server\160\Tools\SQL Monitor\rmsetting.xml
|
||||
|
||||
*/
|
||||
USE [ControlCenter]
|
||||
|
||||
222
delphix.create_delphix_d.sql
Normal file
222
delphix.create_delphix_d.sql
Normal file
@@ -0,0 +1,222 @@
|
||||
USE HCITools
|
||||
IF OBJECT_ID('delphix.create_delphix_db') IS NOT NULL
|
||||
DROP PROCEDURE delphix.create_delphix_db;
|
||||
GO
|
||||
/*
|
||||
This proc encapsulate the logic to create new backups of the databases to mask and restore them as {db_name}_delphix
|
||||
Created from a script to be integrated into the process of refreshing the database prior to a test masking
|
||||
|
||||
08.04.2024, TSC
|
||||
*/
|
||||
CREATE PROCEDURE delphix.create_delphix_db
|
||||
@action VARCHAR(50) = 'restore'
|
||||
,@db VARCHAR(255) = NULL
|
||||
,@debug BIT = 0
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @dbName NVARCHAR(255);
|
||||
DECLARE @query_bkp NVARCHAR(MAX)='';
|
||||
DECLARE @query_rest NVARCHAR(MAX)='';
|
||||
DECLARE @query_perms NVARCHAR(MAX)='';
|
||||
DECLARE @dump NVARCHAR(255);
|
||||
DECLARE @users TABLE (login VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL);
|
||||
INSERT INTO @users ([login],[name])
|
||||
VALUES
|
||||
('svc-delphix-masking','sql login'),
|
||||
('CENTRALINFRA\ua253440', 'Oliver'),
|
||||
('CENTRALINFRA\ua253450', 'Franck'),
|
||||
('CENTRALINFRA\ua210510', 'Wyn');
|
||||
|
||||
DECLARE @tplRight NVARCHAR(MAX) = N'
|
||||
USE @dbName@_delphix
|
||||
BEGIN TRY
|
||||
CREATE USER [@login@] FOR LOGIN [@login@];
|
||||
ALTER ROLE [db_owner] ADD MEMBER [@login@]
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
ALTER ROLE [db_owner] ADD MEMBER [@login@]
|
||||
END CATCH
|
||||
';
|
||||
DECLARE @error BIT = 0;
|
||||
|
||||
IF NULLIF(@db,'') IS NULL
|
||||
BEGIN
|
||||
RAISERROR('No database specified.', 16, 99);
|
||||
SET @error = 1;
|
||||
END
|
||||
|
||||
IF @db NOT IN ( 'arizona', 'arizonarep', 'hcitools', 'arizonacust', 'activepos_read', 'activepos_write' )
|
||||
BEGIN
|
||||
RAISERROR('Database [%s] not part of the allowed values.', 16, 99, @db);
|
||||
SET @error = 1;
|
||||
END
|
||||
|
||||
IF @action NOT IN ('all','restore','backup')
|
||||
BEGIN
|
||||
RAISERROR('Action [%s] not part of the allowed values (all, backup and restore).', 16, 99, @action);
|
||||
SET @error = 1;
|
||||
END
|
||||
|
||||
IF @error = 0
|
||||
BEGIN
|
||||
|
||||
DECLARE @DataDir nvarchar(4000),
|
||||
@LogDir nvarchar(4000),
|
||||
@BakDir nvarchar(4000),
|
||||
@FTDir nvarchar(4000)
|
||||
|
||||
Exec xp_instance_regread N'HKEY_LOCAL_MACHINE',
|
||||
N'Software\Microsoft\MSSQLServer\MSSQLServer',
|
||||
N'DefaultData',
|
||||
@DataDir output,
|
||||
'no_output'
|
||||
|
||||
Exec xp_instance_regread N'HKEY_LOCAL_MACHINE',
|
||||
N'Software\Microsoft\MSSQLServer\MSSQLServer',
|
||||
N'DefaultLog',
|
||||
@LogDir output,
|
||||
'no_output'
|
||||
|
||||
Exec xp_instance_regread N'HKEY_LOCAL_MACHINE',
|
||||
N'Software\Microsoft\MSSQLServer\MSSQLServer',
|
||||
N'BackupDirectory',
|
||||
@BakDir output,
|
||||
'no_output'
|
||||
|
||||
Exec xp_instance_regread N'HKEY_LOCAL_MACHINE',
|
||||
N'Software\Microsoft\MSSQLServer\MSSQLServer',
|
||||
N'FullTextDefaultPath',
|
||||
@FTDir output,
|
||||
'no_output'
|
||||
|
||||
DECLARE csrDb CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT [d].[name]
|
||||
FROM sys.databases d
|
||||
WHERE LOWER([d].[name]) = LOWER(@db);
|
||||
|
||||
OPEN csrDb;
|
||||
|
||||
FETCH NEXT FROM csrDb
|
||||
INTO @dbName;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SET @dump = @dbName+'_dump';
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.[backup_devices]
|
||||
WHERE name = @dump
|
||||
)
|
||||
BEGIN
|
||||
RAISERROR ('No dump device named %s exists', 16, 1, @dump);
|
||||
END
|
||||
ELSE
|
||||
IF @@SERVERNAME IN ('SWAMA707VM01\APSSQL','SWSUN004VM01\APSSQL')
|
||||
BEGIN
|
||||
SET @dump = replace('DISK = N''g:\@dbName@.bak''','@dbName@',@dbname);
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @dump = '['+@dbName+'_dump]';
|
||||
END
|
||||
BEGIN
|
||||
SET @query_bkp = @query_bkp + REPLACE(REPLACE('
|
||||
BACKUP DATABASE [@dbname@] TO @dump@ WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N''@dbname@-Full Database Backup'', COMPRESSION, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
|
||||
'
|
||||
,'@dbname@'
|
||||
,@dbName)
|
||||
|
||||
,'@dump@'
|
||||
,@dump
|
||||
);
|
||||
|
||||
DECLARE @file_row VARCHAR(255);
|
||||
DECLARE @file_log VARCHAR(255);
|
||||
|
||||
SELECT @file_row = name
|
||||
FROM sys.master_files F
|
||||
WHERE DB_NAME([F].[database_id]) = @dbName
|
||||
AND type_desc = 'ROWS'
|
||||
|
||||
SELECT @file_log = name
|
||||
FROM sys.master_files F
|
||||
WHERE DB_NAME([F].[database_id]) = @dbName
|
||||
AND type_desc = 'LOG'
|
||||
|
||||
IF @@SERVERNAME IN ('SWTSTDB01\APSSQL')
|
||||
BEGIN
|
||||
SET @dataDir = 'e:\SQLDatabase\';
|
||||
END
|
||||
|
||||
SET @query_rest = @query_rest +REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('
|
||||
RESTORE DATABASE [@dbname@_delphix] FROM @dump@ WITH FILE = 1, REPLACE, MOVE N''@file_row@'' TO N''@dataDir@\@dbname@_delphix.mdf'', MOVE N''@file_Log@'' TO N''@logDir@\@dbname@_delphix_1.ldf'', NOUNLOAD, STATS = 5;
|
||||
ALTER DATABASE [@dbname@_delphix] SET RECOVERY SIMPLE WITH ROLLBACK IMMEDIATE;
|
||||
ALTER DATABASE [@dbname@_delphix] SET ALLOW_SNAPSHOT_ISOLATION ON;
|
||||
ALTER DATABASE [@dbname@_delphix] SET READ_COMMITTED_SNAPSHOT ON;
|
||||
'
|
||||
,'@dbname@'
|
||||
,@dbName)
|
||||
|
||||
,'@dump@'
|
||||
,@dump)
|
||||
|
||||
,'@file_Log@'
|
||||
,@file_log)
|
||||
|
||||
,'@file_row@'
|
||||
,@file_row
|
||||
)
|
||||
|
||||
,'@dataDir@'
|
||||
,@dataDir
|
||||
)
|
||||
|
||||
,'@logDir@'
|
||||
,@logDir
|
||||
)
|
||||
;
|
||||
|
||||
--permissions
|
||||
SELECT @query_perms = @query_perms + REPLACE(REPLACE(
|
||||
@tplRight
|
||||
,'@dbName@'
|
||||
,@dbName
|
||||
)
|
||||
,'@login@'
|
||||
,u.[login]
|
||||
)
|
||||
FROM @users u
|
||||
|
||||
FETCH NEXT FROM csrDb
|
||||
INTO @dbName;
|
||||
END
|
||||
END
|
||||
|
||||
CLOSE csrDb;
|
||||
DEALLOCATE csrDb;
|
||||
|
||||
IF @action IN('backup', 'all')
|
||||
BEGIN
|
||||
PRINT @query_bkp;
|
||||
IF @debug = 0
|
||||
BEGIN
|
||||
EXEC(@query_bkp);
|
||||
END
|
||||
END
|
||||
|
||||
IF @action IN('restore', 'all')
|
||||
BEGIN
|
||||
PRINT @query_rest;
|
||||
IF @debug = 0
|
||||
BEGIN
|
||||
EXEC(@query_rest);
|
||||
EXEC(@query_perms);
|
||||
END
|
||||
END
|
||||
|
||||
END
|
||||
END
|
||||
43
gaia - create linked server to hyperscale.sql
Normal file
43
gaia - create linked server to hyperscale.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
USE [master]
|
||||
GO
|
||||
|
||||
/****** Object: LinkedServer [HYPERSCALE-AMA-PROD] Script Date: 29.12.2025 13:58:09 ******/
|
||||
EXEC master.dbo.sp_dropserver @server=N'HYPERSCALE-AMA-PROD', @droplogins='droplogins'
|
||||
GO
|
||||
|
||||
|
||||
USE [master]
|
||||
GO
|
||||
EXEC master.dbo.sp_addlinkedserver @server = N'HYPERSCALE-AMA-PROD', @srvproduct=N'HYPERSCALE-AMA-PROD', @provider=N'MSOLEDBSQL', @datasrc=N'sql-triapharmamaprod-sqlserver01.database.windows.net', @catalog=N'pharmacy'
|
||||
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'collation compatible', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'data access', @optvalue=N'true'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'dist', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'pub', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'rpc', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'rpc out', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'sub', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'connect timeout', @optvalue=N'0'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'collation name', @optvalue=null
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'lazy schema validation', @optvalue=N'false'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'query timeout', @optvalue=N'0'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'use remote collation', @optvalue=N'true'
|
||||
GO
|
||||
EXEC master.dbo.sp_serveroption @server=N'HYPERSCALE-AMA-PROD', @optname=N'remote proc transaction promotion', @optvalue=N'true'
|
||||
GO
|
||||
USE [master]
|
||||
GO
|
||||
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'HYPERSCALE-AMA-PROD', @locallogin = NULL , @useself = N'False', @rmtuser = N'dba', @rmtpassword = N'pv2`~o8giLx~^6;fl,B7'
|
||||
GO
|
||||
88
gaia - create structure for consolidated change tracking.sql
Normal file
88
gaia - create structure for consolidated change tracking.sql
Normal file
@@ -0,0 +1,88 @@
|
||||
--create table to record state
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [sys].[tables] AS [T]
|
||||
WHERE [T].[name] = 'change_tracking_state'
|
||||
)
|
||||
BEGIN
|
||||
--DROP TABLE [dbo].[change_tracking_state]
|
||||
CREATE TABLE [dbo].[change_tracking_state] (
|
||||
[pharmacy_schema] sysname NOT NULL,
|
||||
[table_name] sysname NOT NULL,
|
||||
[last_sync_version] BIGINT NOT NULL,
|
||||
CONSTRAINT PK_change_tracking_state PRIMARY KEY (
|
||||
[pharmacy_schema],
|
||||
[table_name]
|
||||
)
|
||||
);
|
||||
END;
|
||||
|
||||
--enable change tracking if missing
|
||||
IF NOT EXISTS (
|
||||
SELECT [d].[name],
|
||||
[ctd].[database_id],
|
||||
[ctd].[is_auto_cleanup_on],
|
||||
[ctd].[retention_period],
|
||||
[ctd].[retention_period_units],
|
||||
[ctd].[retention_period_units_desc],
|
||||
[ctd].[max_cleanup_version]
|
||||
FROM [sys].[change_tracking_databases] AS [ctd]
|
||||
JOIN [sys].[databases] AS [d] ON [d].[database_id] = [ctd].[database_id]
|
||||
WHERE [d].[name] = 'pharmacy'
|
||||
)
|
||||
BEGIN
|
||||
ALTER DATABASE [Pharmacy]
|
||||
SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 7 DAYS, AUTO_CLEANUP = ON);
|
||||
END;
|
||||
|
||||
--add tables to change tracking
|
||||
DECLARE @tpl_ct NVARCHAR(MAX)='ALTER TABLE [@schema@].[@table@] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON);
|
||||
'
|
||||
DECLARE @q NVARCHAR(MAX)='';
|
||||
|
||||
SELECT @q = @q + REPLACE(REPLACE(@tpl_ct,'@schema@', s.name),'@table@', t.name)
|
||||
FROM [sys].[tables] AS [t]
|
||||
JOIN [sys].[schemas] AS [s] ON [s].[schema_id] = [t].[schema_id]
|
||||
WHERE 1 = 1
|
||||
AND [s].[name] LIKE 'ama%'
|
||||
AND [t].[name] IN ( N'Account', N'Account_key', N'Account_link', N'Account_text', N'Accounting_turnover_agg',
|
||||
N'Address', N'Address_category', N'Address_category_text', N'Address_contact_person_list',
|
||||
N'Address_Criteria', N'Address_key', N'Batch_run', N'BVR_member', N'CRS_batch_run',
|
||||
N'CRS_document_header', N'DH_Criteria', N'Document_date', N'Document_error', N'Document_header',
|
||||
N'Entry', N'Entry_reconciliation', N'Financial_relation_account'
|
||||
)
|
||||
AND NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM sys.change_tracking_tables ct
|
||||
WHERE OBJECT_SCHEMA_NAME(ct.object_id) = s.name
|
||||
AND OBJECT_NAME(ct.object_id) = t.name
|
||||
|
||||
)
|
||||
;
|
||||
|
||||
EXEC(@q);
|
||||
|
||||
--init change tracking
|
||||
INSERT INTO [dbo].[change_tracking_state] (
|
||||
[pharmacy_schema],
|
||||
[table_name],
|
||||
[last_sync_version]
|
||||
)
|
||||
SELECT [s].[name] AS [pharmacy_schema],
|
||||
[t].[name] AS [table_name],
|
||||
CHANGE_TRACKING_CURRENT_VERSION()
|
||||
FROM [sys].[tables] AS [t]
|
||||
JOIN [sys].[schemas] AS [s] ON [s].[schema_id] = [t].[schema_id]
|
||||
WHERE 1 = 1
|
||||
AND [s].[name] LIKE 'ama%'
|
||||
AND [t].[name] IN ( N'Account', N'Account_key', N'Account_link', N'Account_text', N'Accounting_turnover_agg',
|
||||
N'Address', N'Address_category', N'Address_category_text', N'Address_contact_person_list',
|
||||
N'Address_Criteria', N'Address_key', N'Batch_run', N'BVR_member', N'CRS_batch_run',
|
||||
N'CRS_document_header', N'DH_Criteria', N'Document_date', N'Document_error', N'Document_header',
|
||||
N'Entry', N'Entry_reconciliation', N'Financial_relation_account'
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[change_tracking_state] AS [cts]
|
||||
WHERE [cts].[pharmacy_schema] = [s].[name] AND [cts].[table_name] = [t].[name]
|
||||
);
|
||||
39
phidx masking central rollback.sql
Normal file
39
phidx masking central rollback.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
USE Arizona
|
||||
GO
|
||||
|
||||
BEGIN TRANSACTION
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
--revert address changes
|
||||
UPDATE [ad]
|
||||
SET [ad].[AD_first_name] = c.AD_first_name,
|
||||
[ad].[AD_last_name] = C.AD_last_name,
|
||||
[ad].[AD_middle_name] = c.AD_middle_name,
|
||||
[ad].[AD_name] = c.AD_name,
|
||||
[ad].[AD_title] = c.AD_title,
|
||||
[ad].[AD_sex] = c.AD_sex,
|
||||
[ad].[AD_address_1] = c.AD_address_1,
|
||||
[ad].[AD_address_2] = c.AD_address_2,
|
||||
[ad].[AD_address_3] = c.AD_address_3,
|
||||
[ad].[AD_address_supplement] = c.AD_address_supplement,
|
||||
[ad].[AD_zip_code] = c.AD_zip_code,
|
||||
[ad].[AD_city] = c.AD_city,
|
||||
[ad].[AD_state] = c.AD_state,
|
||||
[ad].[AD_postal_routing_address] = c.AD_postal_routing_address,
|
||||
[ad].[AD_language] = c.AD_language,
|
||||
[ad].[AD_country] = c.AD_country
|
||||
FROM dbo.Address ad
|
||||
JOIN HCITools.tmp.tst_sp_correction c ON c.Address_ID = ad.Address_ID
|
||||
WHERE ad.AD_name <> c.AD_name;
|
||||
|
||||
|
||||
--revert address_key changes
|
||||
UPDATE adk
|
||||
SET adk.ADK_key = c.ADK_key
|
||||
FROM dbo.Address_key adk
|
||||
JOIN HCITools.tmp.tst_sp_correction c ON c.Address_ID = adk.ADK_address
|
||||
WHERE adk.ADK_type=5;
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
--COMMIT TRANSACTION
|
||||
841
phidx masking package.sql
Normal file
841
phidx masking package.sql
Normal file
@@ -0,0 +1,841 @@
|
||||
/*
|
||||
04.11.2024, TSC
|
||||
*/
|
||||
|
||||
/*
|
||||
01.11.2024, TSC
|
||||
*/
|
||||
USE [HCITools]
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[phidx_mask_service_providers] Script Date: 01.11.2024 14:47:24 ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
|
||||
/*
|
||||
TPDT-742
|
||||
|
||||
Anonymizing pharmindex service providers
|
||||
https://galenica.atlassian.net/wiki/spaces/OCART/pages/1202389081/Pharmindex+service+providers+masking
|
||||
|
||||
Will alter every retired or deleted service providers to mask their name, address, phone, fax and email in the pharmindexTP of a central that is either
|
||||
n+1
|
||||
n+2
|
||||
888
|
||||
|
||||
|
||||
27.09.2024, TSC Creation
|
||||
04.11.2024, TSC When cleaning Arizona, ignoring service providers linked to a Organizational Unit.
|
||||
*/
|
||||
CREATE OR ALTER PROCEDURE [dbo].[phidx_mask_service_providers] @force BIT = 0 AS
|
||||
BEGIN
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM [sys].[databases] [d]
|
||||
WHERE [d].[name] = 'pharmindexTP'
|
||||
) AND @force = 0
|
||||
BEGIN
|
||||
PRINT 'No pharmindexTP database on this instance, exiting.';
|
||||
RETURN 0;
|
||||
END
|
||||
|
||||
IF NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM [master].[cfg].[InstanceContext]
|
||||
WHERE [Business] IN ('TPCENT')
|
||||
) AND @force = 0
|
||||
BEGIN
|
||||
PRINT 'This instance is not a central, exiting.';
|
||||
RETURN 0;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [master].[cfg].[InstanceContext]
|
||||
WHERE [Type] IN ('DEVE', 'VALI')
|
||||
) AND @force = 0
|
||||
BEGIN
|
||||
PRINT 'Non dev environment, exiting.';
|
||||
RETURN 0;
|
||||
END
|
||||
|
||||
|
||||
IF OBJECT_ID('tempdb..#sp') IS NOT NULL
|
||||
BEGIN
|
||||
DROP TABLE [#sp];
|
||||
END
|
||||
|
||||
CREATE TABLE [#sp]
|
||||
(
|
||||
[ServiceProviderId] INT NOT NULL
|
||||
);
|
||||
--fetch the id's of the data to mask
|
||||
INSERT INTO [#sp] ([ServiceProviderId]) SELECT [sp].[ServiceProviderId] FROM [PharmIndexTP].[dbo].[ServiceProvider] [sp] WHERE ([sp].[Status] = 'R' OR [sp].[Deleted] = 1) AND [sp].[Name1] <> 'Masked' AND [sp].[Name2] NOT LIKE 'Provider%';
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - collected SP to mask. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--rename service providers
|
||||
UPDATE [sp]
|
||||
SET [sp].[Name1] = 'Masked',
|
||||
[sp].[Name2] = 'Provider ' + CAST([sp].[ServiceProviderId] AS VARCHAR(15)),
|
||||
[sp].[Title] = NULL,
|
||||
[sp].[Sex] = NULL
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProvider] [sp] ON [s].[ServiceProviderId] = [sp].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - renamed SP. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--alter sp address
|
||||
UPDATE [sa]
|
||||
SET [sa].[State] = 'BE',
|
||||
[sa].[ZIP] = 3011,
|
||||
[sa].[City] = 'Bern',
|
||||
[sa].[Address] = 'Bundesplatz',
|
||||
[sa].[AddressNumber] = 3
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - altered address. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--clean communications (ServiceProviderCommunication and ServiceProviderCommunication2)
|
||||
DELETE [sc2]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderCommunication2] [sc2] ON [sc2].[ServiceProviderAddressId] = [sa].[ServiceProviderAddressId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - cleaned communication2. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
DELETE [sc]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderCommunication] [sc] ON [s].[ServiceProviderId] = [sc].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - cleared communication. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--clean emails (ServiceProviderECommunication and ServiceProviderECommunication2)
|
||||
DELETE [sc2]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderECommunication2] [sc2] ON [sc2].[ServiceProviderAddressId] = [sa].[ServiceProviderAddressId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - cleaned ecommunication2. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
DELETE [sc]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderECommunication] [sc] ON [s].[ServiceProviderId] = [sc].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - cleaned ecommunication. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--insert fake emails in [ServiceProviderECommunication]
|
||||
INSERT INTO [PharmIndexTP].[dbo].[ServiceProviderECommunication] ([ServiceProviderId],
|
||||
[Category],
|
||||
[Type],
|
||||
[Value],
|
||||
[CreationDate],
|
||||
[UpdateDate])
|
||||
|
||||
SELECT [sp].[ServiceProviderId],
|
||||
'B' AS [category],
|
||||
'MAIL' AS [Type],
|
||||
'masked_provider_' + CAST([sp].[ServiceProviderId] AS VARCHAR(15)) + '@nomail.com' AS [Value],
|
||||
CURRENT_TIMESTAMP AS [CreationDate],
|
||||
CURRENT_TIMESTAMP AS [UpdateDate]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProvider] [sp] ON [s].[ServiceProviderId] = [sp].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - inserted fake emails in ecommunication. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
--insert fake emails in [ServiceProviderECommunication2]
|
||||
INSERT INTO [PharmIndexTP].[dbo].[ServiceProviderECommunication2] ([ServiceProviderAddressId],
|
||||
[Category],
|
||||
[Type],
|
||||
[Value],
|
||||
[CreationDate],
|
||||
[UpdateDate])
|
||||
SELECT [sa].[ServiceProviderAddressId],
|
||||
'B' AS [category],
|
||||
'MAIL' AS [Type],
|
||||
'masked_provider_' + CAST([s].[ServiceProviderId] AS VARCHAR(15)) + '@nomail.com' AS [Value],
|
||||
CURRENT_TIMESTAMP AS [CreationDate],
|
||||
CURRENT_TIMESTAMP AS [UpdateDate]
|
||||
FROM [#sp] [s]
|
||||
JOIN [PharmIndexTP].[dbo].[ServiceProviderAddress] [sa] ON [s].[ServiceProviderId] = [sa].[ServiceProviderId];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - inserted fake emails in ecommunication2. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
--initial cleanup of arizona data not present in pharmindex anymore
|
||||
IF OBJECT_ID('tempdb..#cleanup') IS NOT NULL
|
||||
BEGIN
|
||||
DROP TABLE [#cleanup];
|
||||
END
|
||||
|
||||
CREATE TABLE [#cleanup]
|
||||
(
|
||||
[Address_ID] INT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO [#cleanup]([Address_ID])
|
||||
SELECT [ad].[Address_ID]
|
||||
FROM [Arizona].[dbo].[address] [ad]
|
||||
JOIN [Arizona].[dbo].[PH_prescriber] [sp] ON [ad].[Address_ID] = [sp].[PHPR_address]
|
||||
WHERE [sp].[PHPR_status] = 2
|
||||
AND NOT EXISTS(
|
||||
--ignore SP linked to OU
|
||||
SELECT 1
|
||||
FROM [Arizona].[dbo].[Organizational_unit] ou
|
||||
WHERE [ou].[OU_address] = [ad].[Address_ID]
|
||||
)
|
||||
AND (
|
||||
ISNULL([ad].[AD_first_name], '') <> 'Masked'
|
||||
AND ISNULL([ad].[AD_last_name], '') NOT LIKE 'Provider%'
|
||||
);
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - fetched arizona ph_prescriber in status 2. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
--mask address
|
||||
UPDATE [ad]
|
||||
SET [ad].[AD_first_name] = LEFT('Masked', 30),
|
||||
[ad].[AD_last_name] = LEFT('Provider ' + CAST([ad].[Address_ID] AS VARCHAR(10)), 30),
|
||||
[ad].[AD_middle_name] = NULL,
|
||||
[ad].[AD_name] = LEFT('Masked Provider ' + CAST([ad].[Address_ID] AS VARCHAR(10)), 60),
|
||||
[ad].[AD_title] = NULL,
|
||||
[ad].[AD_sex] = CASE
|
||||
WHEN [ad].[Address_ID] % 2 = 0 THEN 1
|
||||
ELSE 2 END,
|
||||
[ad].[AD_address_1] = 'Bundesplatz 3',
|
||||
[ad].[AD_address_2] = NULL,
|
||||
[ad].[AD_address_3] = NULL,
|
||||
[ad].[AD_address_supplement] = NULL,
|
||||
[ad].[AD_zip_code] = '3011',
|
||||
[ad].[AD_city] = 'Bern',
|
||||
[ad].[AD_state] = 'BE',
|
||||
[ad].[AD_postal_routing_address] = '3011 Bern',
|
||||
[ad].[AD_language] = 1,
|
||||
[ad].[AD_country] = 1
|
||||
FROM [Arizona].[dbo].[address] [ad]
|
||||
JOIN [#cleanup] [c] ON [c].[Address_ID] = [ad].[Address_ID];
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - masked arizona.address. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
--mask address_key type 5
|
||||
UPDATE [adk]
|
||||
SET [adk].[ADK_key] = LEFT([ad].[AD_name], 15)
|
||||
FROM [Arizona].[dbo].[address_key] [adk]
|
||||
JOIN [#cleanup] [c] ON [c].[Address_ID] = [adk].[ADK_address]
|
||||
JOIN [Arizona].[dbo].[address] [ad] ON [ad].[Address_ID] = [c].[Address_ID]
|
||||
WHERE [adk].[ADK_type] = 5;
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114) + ' - masked arizona.address_key type 5. ' + REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@ROWCOUNT), 1), ',', ''''), '.00', '') + ' row(s) affected.';
|
||||
|
||||
|
||||
END
|
||||
GO
|
||||
|
||||
/* Drop existing standard schedule for job */
|
||||
declare @schedule_id int
|
||||
declare c_schedules cursor local forward_only static for
|
||||
select ss.schedule_id
|
||||
from msdb.dbo.sysjobschedules sjs
|
||||
INNER JOIN msdb.dbo.sysschedules ss
|
||||
ON sjs.schedule_id = ss.schedule_id
|
||||
AND ss.name NOT LIKE '%#SPEC#'
|
||||
INNER JOIN msdb.dbo.sysjobs sj
|
||||
ON sjs.job_id = sj.job_id
|
||||
WHERE sj.name = N'_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central'
|
||||
|
||||
open c_schedules
|
||||
|
||||
FETCH NEXT FROM c_schedules into @schedule_id
|
||||
while @@fetch_status = 0
|
||||
begin
|
||||
IF ((select COUNT(*) from msdb.dbo.sysjobschedules where schedule_id=@schedule_id) = 1)
|
||||
EXEC msdb.dbo.sp_delete_schedule @schedule_id=@schedule_id, @force_delete = 1
|
||||
FETCH NEXT FROM c_schedules into @schedule_id
|
||||
end
|
||||
|
||||
close c_schedules
|
||||
|
||||
deallocate c_schedules
|
||||
|
||||
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central')
|
||||
EXEC msdb.dbo.sp_delete_job @job_name = N'_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central', @delete_unused_schedule=0
|
||||
GO
|
||||
|
||||
/* Creation Job and Steps*/
|
||||
BEGIN TRANSACTION
|
||||
DECLARE @ReturnCode INT
|
||||
SELECT @ReturnCode = 0
|
||||
|
||||
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'TPH-Business' AND category_class=1)
|
||||
BEGIN
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'TPH-Business'
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
|
||||
END
|
||||
|
||||
/* Add Job */
|
||||
DECLARE @jobId BINARY(16)
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central',
|
||||
@enabled=1,
|
||||
@notify_level_eventlog=0,
|
||||
@notify_level_email=0,
|
||||
@notify_level_netsend=0,
|
||||
@notify_level_page=0,
|
||||
@delete_level=0,
|
||||
@description=N'Load items, CDS and prescribers from PharmIndex to Arizona
|
||||
2017.01.18 SNU/GBA : insert new step 7 for br
|
||||
20170515 TTP Add step "INDEX - Control if ..."
|
||||
20181029 GBA D
|
||||
20200408 SPE Add step Update PEXF
|
||||
20220317 FLA Change DBA mail
|
||||
20220330 RTC Update ph_prescriber status
|
||||
20220429 FLA Remove ph_prescriber status
|
||||
20230713 FLA Change mailing list in steps,
|
||||
20230818 SNU Remove step Control if ...
|
||||
20241030 TSC TPDT-742 Added pharmindexTP service provider masking',
|
||||
@category_name=N'TPH-Business',
|
||||
@start_step_id=1,
|
||||
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Empty step',
|
||||
@step_id=1,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=3,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=3,
|
||||
@on_fail_step_id=0,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'/* Empty step */
|
||||
|
||||
',
|
||||
@database_name=N'master',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Check state of Pharmindex download',
|
||||
@step_id=2,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=3,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=4,
|
||||
@on_fail_step_id=7,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'
|
||||
/* Check download from Pharmindex is finished */
|
||||
|
||||
|
||||
declare @today datetime;
|
||||
|
||||
select @today = convert(datetime, convert(varchar(20), getdate(),102))
|
||||
|
||||
if not exists ( select top 1 *
|
||||
from BatchImportHistory bih
|
||||
where bih.Success = 1
|
||||
and bih.EndImportDate > @today)
|
||||
begin /* Download not OK */
|
||||
|
||||
raiserror(''Pharmindex download in process, job not executed'', 16,1)
|
||||
|
||||
end;
|
||||
',
|
||||
@database_name=N'PharmIndexTP',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'mask pharmindex service providers',
|
||||
@step_id=3,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=3,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=4,
|
||||
@on_fail_step_id=7,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'exec [dbo].[phidx_mask_service_providers]',
|
||||
@database_name=N'HCITools',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'INDEX - Transfert PharmIndexTP to Arizona items, Prescriber using Checksum',
|
||||
@step_id=4,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=3,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=4,
|
||||
@on_fail_step_id=7,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'
|
||||
begin try
|
||||
|
||||
declare @out_param_int_1 int
|
||||
execute[dbo].[pdx_loading]
|
||||
@in_job_type = 20
|
||||
,@skip_mapping = 0
|
||||
,@in_subsidiary = 100
|
||||
,@in_table_name = null
|
||||
,@in_debug = 0
|
||||
,@out_param_int_1 = @out_param_int_1 output
|
||||
|
||||
end try
|
||||
begin catch
|
||||
declare
|
||||
@mail_message nvarchar(2000),
|
||||
@mail_subject nvarchar(255);
|
||||
|
||||
|
||||
set @mail_message = '' <html><body><p>Résumé des erreurs dans le tableau ci-dessous : </p>'' +''
|
||||
<table border="1" width="400px" height="400px">
|
||||
<tr>
|
||||
<th>ErrorNumber</th>
|
||||
<th>ErrorSeverity</th>
|
||||
<th>ErrorState</th>
|
||||
<th>ErrorProcedure</th>
|
||||
<th>ErrorLine</th>
|
||||
<th>ErrorMessage</th>
|
||||
</tr>'' + ''<tr valign="center">
|
||||
<td>'' + isnull(convert(varchar, ERROR_NUMBER()), '''') + ''</td>
|
||||
<td>'' + isnull(convert(varchar, ERROR_SEVERITY()), '''') + ''</td>
|
||||
<td>'' + isnull(convert(varchar, ERROR_STATE()), '''') + ''</td>
|
||||
<td>'' + isnull(ERROR_PROCEDURE(), '''') + ''</td>
|
||||
<td>'' + isnull(convert(varchar, ERROR_LINE()), '''') + ''</td>
|
||||
<td>'' + isnull(ERROR_MESSAGE(), '''') + ''</td>
|
||||
</tr>''+ ''
|
||||
</table>
|
||||
</body>
|
||||
</html>'';
|
||||
|
||||
set @mail_subject = ''INDEX - Transfert PharmIndex to PHGD_xx for items using checksum (Instance '' + @@SERVERNAME + '') - Job _D01941 - INDEX'';
|
||||
|
||||
/* envoi du mail */
|
||||
exec Arizona.dbo.aps_Send_Mail_with_template
|
||||
@in_param_varchar_2 = ''HCI_PharmIndex;HCI_DataManagement'',
|
||||
@in_param_varchar_3 = @mail_message,
|
||||
@in_param_subject = @mail_subject,
|
||||
@in_job_type = 4;
|
||||
|
||||
end catch
|
||||
|
||||
',
|
||||
@database_name=N'PharmIndexTP',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Update PEXF',
|
||||
@step_id=5,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=3,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=4,
|
||||
@on_fail_step_id=7,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'declare @cvPHGDPriceCodePEXF int,
|
||||
@SubsidiaryId int,
|
||||
@w_date date
|
||||
|
||||
select @SubsidiaryId = 1000,
|
||||
@cvPHGDPriceCodePEXF = NULL,
|
||||
@w_date = getdate()
|
||||
|
||||
exec arizona.dbo.sp_bmc_Bmc_Applic_Default
|
||||
@in_job_type = 3,
|
||||
@in_param_int_1 = NULL,
|
||||
@in_param_int_2 = @SubsidiaryId,
|
||||
@in_param_varchar_1 = ''cvPHGDPriceCodePSL1'',
|
||||
@out_default_value = @cvPHGDPriceCodePEXF output,
|
||||
@out_param_int_1 = null
|
||||
|
||||
|
||||
if @cvPHGDPriceCodePEXF is null
|
||||
|
||||
begin
|
||||
select @SubsidiaryId = 100
|
||||
|
||||
exec arizona.dbo.sp_bmc_Bmc_Applic_Default
|
||||
@in_job_type = 3,
|
||||
@in_param_int_1 = NULL,
|
||||
@in_param_int_2 = @SubsidiaryId,
|
||||
@in_param_varchar_1 = ''cvPHGDPriceCodePSL1'',
|
||||
@out_default_value = @cvPHGDPriceCodePEXF output,
|
||||
@out_param_int_1 = null
|
||||
end
|
||||
|
||||
/*-------------
|
||||
Fermeture des PEXF sans Adresse pour les articles avec insurance code not in (10, 11)
|
||||
------------------*/
|
||||
|
||||
Update top(5000) FP set fp.fp_end_date = DATEADD(d,-1,@w_date)
|
||||
from subsidiary SUB with (nolock)
|
||||
|
||||
join price_code PRC with (nolock)
|
||||
on prc.prc_subsidiary = sub.subsidiary_id
|
||||
and prc.price_code_id = @cvPHGDPriceCodePEXF
|
||||
|
||||
join Fixed_price FP with (nolock)
|
||||
on FP.FP_price_code = prc.price_code_id
|
||||
and FP.fp_subsidiary = sub.subsidiary_id
|
||||
and FP.FP_address is null
|
||||
and FP.FP_start_date < GETDATE()
|
||||
and ISNULL(fp.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
|
||||
join Item_key ITK with (nolock)
|
||||
on itk.ITK_item = fp.fp_item
|
||||
and ITK.ITK_subsidiary = SUB.Subsidiary_ID
|
||||
and ITK.ITK_type = 1
|
||||
|
||||
join PH_item phit with (nolock)
|
||||
on phit.PHIT_item = ITK.ITK_item
|
||||
and phit.PHIT_insurance_code not in (''10'', ''11'')
|
||||
|
||||
where SUB.subsidiary_id = @SubsidiaryId
|
||||
|
||||
/*---------------------------------------
|
||||
Clôture du PEXF sans adresse à la date -1 de la start_date du prix PEXF avec adresse
|
||||
pour les articles LS.
|
||||
|
||||
Nous recréons un PEXF avec la bonne start_date et le bon prix afin que la facturation aux caisse maladie soit OK
|
||||
--------------*/
|
||||
|
||||
Update top(5000) FP1 set fp1.fp_end_date = DATEADD(d,-1,fp.FP_start_date)
|
||||
|
||||
from subsidiary SUB with (nolock)
|
||||
|
||||
join price_code PRC with (nolock)
|
||||
on prc.prc_subsidiary = sub.subsidiary_id
|
||||
and prc.price_code_id = @cvPHGDPriceCodePEXF
|
||||
|
||||
join Fixed_price FP with (nolock)
|
||||
on FP.FP_price_code = prc.price_code_id
|
||||
and FP.fp_subsidiary = sub.subsidiary_id
|
||||
and FP.FP_address is not null
|
||||
and FP.FP_start_date < GETDATE()
|
||||
and ISNULL(fp.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
and FP.fixed_price_id = (select top 1 fp2.fixed_price_id from Fixed_price FP2 with (nolock)
|
||||
where FP2.FP_item = FP.FP_item
|
||||
and FP2.FP_price_code = fp.FP_price_code
|
||||
and FP2.fp_subsidiary = FP.fp_subsidiary
|
||||
and FP2.FP_address is not null
|
||||
and FP2.FP_start_date < GETDATE()
|
||||
and ISNULL(FP2.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
|
||||
order by FP2.FP_start_date desc
|
||||
)
|
||||
|
||||
join Item_key ITK with (nolock)
|
||||
on itk.ITK_item = fp.fp_item
|
||||
and ITK.ITK_subsidiary = SUB.Subsidiary_ID
|
||||
and ITK.ITK_type = 1
|
||||
|
||||
join PH_item phit with (nolock)
|
||||
on phit.PHIT_item = ITK.ITK_item
|
||||
and phit.PHIT_insurance_code in (''10'', ''11'')
|
||||
|
||||
join Fixed_price FP1 with (nolock)
|
||||
on FP1.FP_price_code = prc.price_code_id
|
||||
and FP1.fp_subsidiary = sub.subsidiary_id
|
||||
and FP1.FP_address is null
|
||||
and FP1.FP_start_date < GETDATE()
|
||||
and ISNULL(FP1.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
and FP1.FP_item = FP.FP_item
|
||||
|
||||
where SUB.subsidiary_id = @SubsidiaryId
|
||||
and isnull(FP.FP_tax_free_price_per_unit,0) <> isnull(FP1.FP_tax_free_price_per_unit,0)
|
||||
|
||||
/*----------
|
||||
|
||||
Creation PEXF sans adresse avec start_date et prix du PEXF avec Adresse pour LS (Le plus récent)
|
||||
|
||||
------------*/
|
||||
|
||||
declare
|
||||
|
||||
@New_fixed_price_ID int,
|
||||
@nb_fixed_price int ,
|
||||
@fp_subsidiary int,
|
||||
@fp_tariff_type int,
|
||||
@fp_item int,
|
||||
@fp_currency int,
|
||||
@fp_price_code int,
|
||||
@fp_sales_tax_code int,
|
||||
@FP_start_date datetime,
|
||||
@FP_tax_free_price_per_unit dec(14,2)
|
||||
|
||||
|
||||
SELECT @nb_fixed_price = 1
|
||||
|
||||
/*-- Declaration du curseur c_external_item --*/
|
||||
declare c_FP cursor local forward_only read_only static for
|
||||
|
||||
select FP.fp_subsidiary,
|
||||
FP.fp_tariff_type,
|
||||
FP.fp_item,
|
||||
FP.fp_currency,
|
||||
FP.fp_price_code,
|
||||
FP.fp_sales_tax_code,
|
||||
FP.FP_start_date,
|
||||
FP.FP_tax_free_price_per_unit
|
||||
|
||||
from subsidiary SUB with (nolock)
|
||||
|
||||
join price_code PRC with (nolock)
|
||||
on prc.prc_subsidiary = sub.subsidiary_id
|
||||
and prc.price_code_id = @cvPHGDPriceCodePEXF
|
||||
|
||||
join Fixed_price FP with (nolock)
|
||||
on FP.FP_price_code = prc.price_code_id
|
||||
and FP.fp_subsidiary = sub.subsidiary_id
|
||||
and FP.FP_address is not null
|
||||
and FP.FP_start_date < GETDATE()
|
||||
and ISNULL(fp.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
and FP.fixed_price_id = (select top 1 fp2.fixed_price_id from Fixed_price FP2 with (nolock)
|
||||
where FP2.FP_item = FP.FP_item
|
||||
and FP2.FP_price_code = fp.FP_price_code
|
||||
and FP2.fp_subsidiary = FP.fp_subsidiary
|
||||
and FP2.FP_address is not null
|
||||
and FP2.FP_start_date < GETDATE()
|
||||
and ISNULL(FP2.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
|
||||
order by FP2.FP_start_date desc
|
||||
)
|
||||
|
||||
join Item_key ITK with (nolock)
|
||||
on itk.ITK_item = fp.fp_item
|
||||
and ITK.ITK_subsidiary = SUB.Subsidiary_ID
|
||||
and ITK.ITK_type = 1
|
||||
|
||||
join PH_item phit with (nolock)
|
||||
on phit.PHIT_item = ITK.ITK_item
|
||||
and phit.PHIT_insurance_code in (''10'', ''11'')
|
||||
|
||||
left outer join Fixed_price FP1 with (nolock)
|
||||
on FP1.FP_price_code = prc.price_code_id
|
||||
and FP1.fp_subsidiary = sub.subsidiary_id
|
||||
and FP1.FP_address is null
|
||||
and FP1.FP_start_date < GETDATE()
|
||||
and ISNULL(FP1.fp_end_date, ''2099-12-31'') > GETDATE()
|
||||
and FP1.FP_item = FP.FP_item
|
||||
|
||||
where SUB.subsidiary_id = @SubsidiaryId
|
||||
and FP1.Fixed_price_ID is null
|
||||
|
||||
order by 1
|
||||
|
||||
open c_FP;
|
||||
|
||||
fetch next from c_FP
|
||||
into @fp_subsidiary ,
|
||||
@fp_tariff_type ,
|
||||
@fp_item ,
|
||||
@fp_currency ,
|
||||
@fp_price_code ,
|
||||
@fp_sales_tax_code ,
|
||||
@FP_start_date ,
|
||||
@FP_tax_free_price_per_unit
|
||||
|
||||
while (@@fetch_status <> -1 )
|
||||
begin
|
||||
|
||||
if (@@fetch_status <> -2 )
|
||||
begin
|
||||
|
||||
/*----- Recherche dernier ID pour Fixed_Price -----*/
|
||||
select @New_fixed_price_ID = null
|
||||
|
||||
exec sp_bmc_GetNextID
|
||||
@in_key = ''fixed_price'',
|
||||
@in_id_column = ''fixed_price_id'',
|
||||
@in_nbr_of_record = @nb_fixed_price,
|
||||
@out_id = @New_fixed_price_id output
|
||||
|
||||
insert fixed_price
|
||||
(fixed_price_id,
|
||||
|
||||
fp_subsidiary,
|
||||
fp_tariff_type,
|
||||
fp_item,
|
||||
fp_currency,
|
||||
fp_price_code,
|
||||
fp_sales_tax_code,
|
||||
fp_start_date,
|
||||
fp_tax_free_price_per_unit ,
|
||||
|
||||
fp_unit_code,
|
||||
FP_price_per_unit_unit_code,
|
||||
fp_final_discount_possible,
|
||||
FP_discount_level_1_possible,
|
||||
FP_discount_level_2_possible,
|
||||
FP_origin,
|
||||
FP_remark
|
||||
|
||||
)
|
||||
select
|
||||
@New_fixed_price_id,
|
||||
|
||||
@fp_subsidiary ,
|
||||
@fp_tariff_type ,
|
||||
@fp_item ,
|
||||
@fp_currency ,
|
||||
@fp_price_code ,
|
||||
@fp_sales_tax_code ,
|
||||
@FP_start_date ,
|
||||
@FP_tax_free_price_per_unit,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
''Automatic Insert PEXF ''
|
||||
|
||||
/*----- fin du curseur -----*/
|
||||
|
||||
|
||||
end /* (@@fetch_status <> -2 ) */
|
||||
|
||||
fetch next from c_FP
|
||||
into @fp_subsidiary ,
|
||||
@fp_tariff_type ,
|
||||
@fp_item ,
|
||||
@fp_currency ,
|
||||
@fp_price_code ,
|
||||
@fp_sales_tax_code ,
|
||||
@FP_start_date ,
|
||||
@FP_tax_free_price_per_unit
|
||||
|
||||
end /* (@@fetch_status <> -1 ) */
|
||||
|
||||
close c_FP;
|
||||
deallocate c_FP;
|
||||
',
|
||||
@database_name=N'Arizona',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Email step for success',
|
||||
@step_id=6,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=1,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=4,
|
||||
@on_fail_step_id=7,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'exec Get_Job_Error_Info @in_JobName = ''_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central'', @in_Recipients = ''DBA_operator;HCI_PharmIndex''
|
||||
EXEC [mon].[Maj_Jobs_Status] @in_JobID = $(ESCAPE_SQUOTE(JOBID))',
|
||||
@database_name=N'HCITools',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
/* Add Step */
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Send email KO',
|
||||
@step_id=7,
|
||||
@cmdexec_success_code=0,
|
||||
@on_success_action=2,
|
||||
@on_success_step_id=0,
|
||||
@on_fail_action=2,
|
||||
@on_fail_step_id=0,
|
||||
@retry_attempts=0,
|
||||
@retry_interval=0,
|
||||
@os_run_priority=0, @subsystem=N'TSQL',
|
||||
@command=N'exec Get_Job_Error_Info @in_JobName = ''_D03091 - INDEX - Load items CDS and prescribers from PharmIndex to Arizona - Central'', @in_Recipients = ''DBA_operator;HCI_PharmIndex;HCI_DataManagement''
|
||||
EXEC [mon].[Maj_Jobs_Status] @in_JobID = $(ESCAPE_SQUOTE(JOBID))',
|
||||
@database_name=N'HCITools',
|
||||
@output_file_name=NULL,
|
||||
@flags=0,
|
||||
@database_user_name=NULL,
|
||||
@server=NULL,
|
||||
@additional_parameters=NULL,
|
||||
@proxy_id=NULL,
|
||||
@proxy_name=NULL
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
|
||||
/* Attach existing specific schedule for job */
|
||||
declare @enabled_schedule int,
|
||||
@schedule_name nvarchar(50)
|
||||
declare c_schedules cursor local forward_only static for
|
||||
select enabled, name
|
||||
from msdb.dbo.sysschedules
|
||||
where name LIKE '_D03091%'
|
||||
and name LIKE '%#SPEC#'
|
||||
|
||||
open c_schedules
|
||||
|
||||
FETCH NEXT FROM c_schedules into @enabled_schedule, @schedule_name
|
||||
while @@fetch_status = 0
|
||||
begin
|
||||
EXEC @ReturnCode = msdb.dbo.sp_attach_schedule @job_id = @jobId, @schedule_name=@schedule_name
|
||||
IF(@enabled_schedule = 1)
|
||||
begin
|
||||
SET @schedule_name = SUBSTRING(@schedule_name,0,LEN(@schedule_name)-5)
|
||||
IF EXISTS (select name from msdb.dbo.sysschedules where name = @schedule_name)
|
||||
EXEC @ReturnCode = msdb.dbo.sp_update_schedule @name=@schedule_name, @enabled=0
|
||||
end
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
FETCH NEXT FROM c_schedules into @enabled_schedule, @schedule_name
|
||||
end
|
||||
|
||||
close c_schedules
|
||||
|
||||
deallocate c_schedules
|
||||
|
||||
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
|
||||
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
|
||||
COMMIT TRANSACTION
|
||||
GOTO EndSave
|
||||
QuitWithRollback:
|
||||
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
|
||||
EndSave:
|
||||
|
||||
GO
|
||||
|
||||
42
query store search.sql
Normal file
42
query store search.sql
Normal file
@@ -0,0 +1,42 @@
|
||||
SELECT
|
||||
qsq.query_id,
|
||||
qsqt.query_sql_text,
|
||||
qsp.plan_id,
|
||||
qsrsi.start_time AS interval_start_time,
|
||||
qsrsi.end_time AS interval_end_time,
|
||||
qsr.execution_type_desc,
|
||||
qsr.count_executions,
|
||||
qsr.avg_duration / 1000.0 AS avg_duration_ms,
|
||||
qsr.avg_cpu_time / 1000.0 AS avg_cpu_time_ms,
|
||||
qsr.last_duration / 1000.0 AS last_duration_ms,
|
||||
qsr.last_execution_time
|
||||
FROM sys.query_store_query qsq
|
||||
INNER JOIN sys.query_store_query_text qsqt
|
||||
ON qsq.query_text_id = qsqt.query_text_id
|
||||
INNER JOIN sys.query_store_plan qsp
|
||||
ON qsq.query_id = qsp.query_id
|
||||
INNER JOIN sys.query_store_runtime_stats qsr
|
||||
ON qsp.plan_id = qsr.plan_id
|
||||
INNER JOIN sys.query_store_runtime_stats_interval qsrsi
|
||||
ON qsr.runtime_stats_interval_id = qsrsi.runtime_stats_interval_id
|
||||
WHERE 1=1
|
||||
AND qsqt.query_sql_text LIKE '%@__ToString_0%'
|
||||
AND [qsrsi].[start_time] BETWEEN '2025-10-08 10:55:00' AND '2025-10-08 11:05:00'
|
||||
ORDER BY qsr.avg_duration / 1000.0 DESC;
|
||||
|
||||
RETURN
|
||||
|
||||
SELECT qsqt.query_sql_text,qsr.*
|
||||
FROM sys.query_store_query qsq
|
||||
INNER JOIN sys.query_store_query_text qsqt
|
||||
ON qsq.query_text_id = qsqt.query_text_id
|
||||
INNER JOIN sys.query_store_plan qsp
|
||||
ON qsq.query_id = qsp.query_id
|
||||
INNER JOIN sys.query_store_runtime_stats qsr
|
||||
ON qsp.plan_id = qsr.plan_id
|
||||
INNER JOIN sys.query_store_runtime_stats_interval qsrsi
|
||||
ON qsr.runtime_stats_interval_id = qsrsi.runtime_stats_interval_id
|
||||
WHERE 1=1
|
||||
AND [qsq].[query_id] = 18134177
|
||||
AND qsp.plan_id = 18157773
|
||||
AND [qsrsi].[start_time] BETWEEN '2025-10-08 10:55:00' AND '2025-10-08 11:05:00'
|
||||
25
repl.sql
25
repl.sql
@@ -6,6 +6,8 @@ AND [pos].[POS_number] < 99
|
||||
ORDER BY [pos].[POS_number]
|
||||
;
|
||||
|
||||
SELECT ActivePos_write.upd.DatabaseVersion() AS currentVersion;
|
||||
|
||||
SELECT SettingValue AS backupSrc, SettingId
|
||||
FROM ActiveSystemServer.cfg.Settings
|
||||
WHERE SettingId LIKE 'Values.Modules.Replication.DbInitializationBackupPath%'
|
||||
@@ -65,22 +67,21 @@ END
|
||||
|
||||
--check POS and PHCY versions
|
||||
SELECT ActivePos_write.upd.DatabaseVersion() AS currentVersion
|
||||
EXEC ('SELECT ActivePos_write.upd.DatabaseVersion()')
|
||||
EXEC ('SELECT ActivePos_write.upd.DatabaseVersion()') AT xxx
|
||||
|
||||
--force restore after manual copy
|
||||
EXEC ('exec ActivePos_write.dbo.InitializeActivePosReadFromBackup @BackUpFileWithPath = ''c:\temp\ActivePos_read.22.1.223.2401.bak''') AT xxx
|
||||
|
||||
--to start on the pos to force a restore of the backup. adapt version, mac and UNC before running
|
||||
exec ActiveSystemClient.dbo.DBAReplPosSubscription
|
||||
@mac = '9C-7B-EF-43-5A-98',
|
||||
@serverDbVersion = '23.2.23.19501',
|
||||
@preferedReplinibackup= '\\cvi247aps-replinibackup.coop-vitality.ch\replinibackup\ActivePos_read.23.2.23.19501.bak'
|
||||
|
||||
|
||||
--restart service on pos
|
||||
EXEC ('EXEC xp_cmdshell ''net stop ActiveposClientService'';EXEC xp_cmdshell ''net start ActiveposClientService''')
|
||||
exec xp_cmdshell 'net stop ActiveposClientService'
|
||||
exec xp_cmdshell 'net start ActiveposClientService'
|
||||
|
||||
|
||||
EXEC ('EXEC xp_cmdshell ''net stop ActiveposClientService'';EXEC xp_cmdshell ''net start ActiveposClientService''') AT xxx
|
||||
|
||||
--subscription
|
||||
EXEC ActivePos_read..sp_dropsubscription @publication = N'ActivePosTran', @article = N'all', @subscriber ='xxx'
|
||||
|
||||
select *
|
||||
--delete s
|
||||
from distribution.dbo.MSsubscriber_schedule s
|
||||
where subscriber='xxxx'
|
||||
|
||||
EXEC ActiveSystemServer.dbo.RepairReplication
|
||||
|
||||
79
sqlLogin-db-pipeline creation and setup.sql
Normal file
79
sqlLogin-db-pipeline creation and setup.sql
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
This script setups the needed permissions to enable Triapharm devops pipeline access to
|
||||
Triapharm databases
|
||||
|
||||
The permissions assigned are:
|
||||
Server level:
|
||||
* ALTER ANY DATABASE
|
||||
* ##MS_DatabaseManager##
|
||||
* ##MS_ServerPerformanceStateReader##
|
||||
* ##MS_ServerStateReader##
|
||||
*/
|
||||
|
||||
USE master
|
||||
GO
|
||||
|
||||
-- Check if the login exists, if not, create it
|
||||
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'sqlLogin-db-pipeline')
|
||||
BEGIN
|
||||
CREATE LOGIN [sqlLogin-db-pipeline] WITH PASSWORD = N'tzJcO,O8S~k~u^zR6!JL';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
ALTER LOGIN [sqlLogin-db-pipeline] WITH PASSWORD = N'tzJcO,O8S~k~u^zR6!JL';
|
||||
END
|
||||
GO
|
||||
|
||||
-- Grant access to DMVs
|
||||
GRANT VIEW SERVER STATE TO [sqlLogin-db-pipeline];
|
||||
|
||||
GO
|
||||
|
||||
DECLARE @q NVARCHAR(MAX) = '
|
||||
USE ?
|
||||
IF EXISTS(
|
||||
SELECT *
|
||||
FROM sys.databases d
|
||||
WHERE d.name = DB_NAME()
|
||||
AND (
|
||||
[d].[source_database_id] IS NULL
|
||||
AND [d].[is_read_only] = 0
|
||||
AND [d].[is_in_standby] = 0
|
||||
AND [d].[state] = 0 --online
|
||||
)
|
||||
)
|
||||
|
||||
BEGIN
|
||||
IF DB_NAME() NOT IN (''master'',''tempdb'',''model'')
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT * FROM ?.sys.database_principals WHERE name = N''sqlLogin-db-pipeline'')
|
||||
BEGIN
|
||||
CREATE USER [sqlLogin-db-pipeline] FOR LOGIN [sqlLogin-db-pipeline];
|
||||
END
|
||||
END
|
||||
|
||||
IF DB_NAME() = ''msdb''
|
||||
BEGIN
|
||||
--allow jobs creation / modification / deletion
|
||||
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [sqlLogin-db-pipeline];
|
||||
|
||||
END
|
||||
|
||||
IF DB_NAME() NOT IN (''master'',''msdb'',''tempdb'',''model'')
|
||||
BEGIN
|
||||
--give permission to alter / create / drop objects in db
|
||||
ALTER ROLE [db_ddladmin] ADD MEMBER [sqlLogin-db-pipeline];
|
||||
|
||||
-- Grant permissions for change tracking and broker management
|
||||
GRANT ALTER ON DATABASE::[?] TO [sqlLogin-db-pipeline];
|
||||
|
||||
|
||||
END
|
||||
END
|
||||
'
|
||||
EXEC sys.sp_MSforeachdb @command1 = @q
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
402
todo clean masking.sql
Normal file
402
todo clean masking.sql
Normal file
@@ -0,0 +1,402 @@
|
||||
USE Arizona
|
||||
|
||||
|
||||
/*
|
||||
1. identify if the duplicate addresses are linked to a persisted or masked address
|
||||
2. TODO: udpate document_counter with max value of adk_key for type 7 and 8
|
||||
SELECT dc.*
|
||||
FROM dbo.Document_counter dc
|
||||
JOIN ActivePos_read.dbo.CommonVar cv ON cv.[Key] = 'cvCounterADKType7' AND cv.Value = dc.Document_counter_ID
|
||||
3. delete address_key rows for masked addresses
|
||||
|
||||
*/
|
||||
BEGIN TRANSACTION
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF OBJECT_ID('tempdb..#mask')IS NOT NULL BEGIN;
|
||||
DROP TABLE #mask;
|
||||
END;
|
||||
|
||||
CREATE TABLE #mask(address_id INT NOT NULL, TT_masking VARCHAR(20) NOT NULL DEFAULT 'MASK')
|
||||
|
||||
--fetch duplicate in temp table
|
||||
INSERT INTO #mask
|
||||
(
|
||||
address_id
|
||||
)
|
||||
SELECT k.ADK_address
|
||||
FROM dbo.Address_key k
|
||||
WHERE k.ADK_type = 7
|
||||
AND EXISTS(
|
||||
--get all duplicated adk_key for type 7
|
||||
SELECT s.ADK_key
|
||||
FROM dbo.Address_key s
|
||||
WHERE s.ADK_type=7
|
||||
AND k.ADK_key = s.ADK_key
|
||||
GROUP BY s.ADK_subsidiary, s.ADK_key
|
||||
HAVING COUNT(1)>1
|
||||
)
|
||||
|
||||
--#region flag masked or not address
|
||||
DECLARE @keywords TABLE(pattern VARCHAR(255) NOT NULL);
|
||||
|
||||
INSERT INTO @keywords ([pattern])
|
||||
SELECT 'TEST %'
|
||||
UNION SELECT 'Assura%'
|
||||
UNION SELECT 'PRESCRIPTION%'
|
||||
UNION SELECT 'RETETE%'
|
||||
UNION SELECT 'USER%'
|
||||
UNION SELECT 'ONBOARD%'
|
||||
UNION SELECT 'SUSPICIOUS%'
|
||||
UNION SELECT 'DOE'
|
||||
UNION SELECT 'GIALLO%'
|
||||
UNION SELECT 'TOLKIEN%'
|
||||
UNION SELECT 'DEMO %'
|
||||
UNION SELECT 'demo'
|
||||
UNION SELECT 'DOCUMEDIS%'
|
||||
UNION SELECT 'OMNICHANNEL%'
|
||||
UNION SELECT 'LASTNAME%'
|
||||
UNION SELECT 'MeiXin%'
|
||||
UNION SELECT 'DIPLOMATE%'
|
||||
UNION SELECT 'NO %'
|
||||
UNION SELECT 'ONLY%'
|
||||
UNION SELECT 'RDL%'
|
||||
UNION SELECT 'USER%'
|
||||
UNION SELECT 'GALEXIS%'
|
||||
UNION SELECT 'APOS%'
|
||||
UNION SELECT 'APOSANDMAGENTO%'
|
||||
UNION SELECT 'Activate'
|
||||
UNION SELECT 'Sunstore'
|
||||
UNION SELECT 'Coopvitality'
|
||||
UNION SELECT 'Ama Plus Sun'
|
||||
UNION SELECT 'Ama Plus Cvi'
|
||||
UNION SELECT 'Sun Plus Cvi'
|
||||
UNION SELECT 'Ama Sun Cvi'
|
||||
UNION SELECT 'test%[0-9]%'
|
||||
UNION SELECT 'DEMO'
|
||||
UNION SELECT '%SUNCLUB%'
|
||||
UNION SELECT '%QUALITY%'
|
||||
UNION SELECT '%STARCARD%'
|
||||
UNION SELECT '%CLIENT%'
|
||||
UNION SELECT '%MAGENTO%'
|
||||
UNION SELECT '%RENOUVELLEMENT%'
|
||||
UNION SELECT '%Mitarbeiter%'
|
||||
UNION SELECT '% DEV %'
|
||||
UNION SELECT 'CERN Service%'
|
||||
UNION SELECT 'BALEXERT CENTRE%'
|
||||
UNION SELECT 'G.H.O.L.%'
|
||||
UNION SELECT 'ONLYAPOS%'
|
||||
UNION SELECT 'In APOS%'
|
||||
UNION SELECT '%client de passage%'
|
||||
;
|
||||
|
||||
DECLARE @tpl VARCHAR(MAX)='
|
||||
UPDATE m SET [TT_masking] = ''PERSIST''
|
||||
FROM dbo.Address ad
|
||||
JOIN #mask m on m.address_id = ad.address_id
|
||||
JOIN dbo.Customer cst
|
||||
ON [cst].[CUST_address] = [ad].[Address_ID]
|
||||
LEFT JOIN dbo.[Subsidiary] sub
|
||||
ON [cst].[CUST_subsidiary] = [sub].[Subsidiary_ID]
|
||||
WHERE [m].[TT_masking] <> ''PERSIST''
|
||||
AND (
|
||||
(
|
||||
[ad].[Address_ID] < 1500000000
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Employee] WHERE EM_address = ad.Address_ID)
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Customer] WHERE CUST_address = ad.Address_ID)
|
||||
)
|
||||
OR(
|
||||
@all_keywords@
|
||||
)
|
||||
)
|
||||
';
|
||||
DECLARE @tplFragment VARCHAR(MAX)='
|
||||
OR (
|
||||
ad.[AD_last_name] @op@ ''@keyword@''
|
||||
OR ad.[AD_name] @op@ ''@keyword@''
|
||||
)
|
||||
';
|
||||
DECLARE @all_keywords VARCHAR(MAX)='';
|
||||
SELECT @all_keywords = @all_keywords + REPLACE(REPLACE(@tplFragment, '@keyword@', k.[pattern]), '@op@', CASE WHEN CHARINDEX('%',k.[pattern])>0 THEN 'LIKE' ELSE '=' END)
|
||||
FROM @keywords k;
|
||||
SELECT @all_keywords = STUFF(@all_keywords, 1,CHARINDEX('OR',@all_keywords)+2,'');
|
||||
|
||||
DECLARE @query VARCHAR(MAX)='';
|
||||
SELECT @query = REPLACE(@tpl, '@all_keywords@', @all_keywords);
|
||||
|
||||
--PRINT @query;
|
||||
EXEC(@query);
|
||||
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM dbo.PH_prescriber ph
|
||||
INNER JOIN dbo.Address ad
|
||||
ON [ad].[Address_ID] = [ph].[PHPR_address]
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
WHERE [ph].[PHPR_deactivation_date] IS NULL
|
||||
AND m.[TT_masking] <> 'PERSIST';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'MASK'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
WHERE TT_masking <> 'MASK'
|
||||
AND ( ad.AD_last_name LIKE 'TESTORI%'
|
||||
OR ad.AD_last_name LIKE 'APOSTOLOV%'
|
||||
OR ad.AD_last_name LIKE 'TESTOLIN%'
|
||||
OR ad.AD_last_name LIKE 'DEMONT%'
|
||||
OR ad.AD_first_name like 'Testalem%');
|
||||
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
INNER JOIN dbo.Bmc_user_profile bup
|
||||
ON bup.BMCUP_address = ad.Address_ID
|
||||
WHERE bup.BMCUP_Initials NOT IN ( 'AMAVITA', 'MEDI', 'PHAR', 'Tran', 'TRIA', 'TRIC', 'TRIM', 'TRIS', 'TRPH' )
|
||||
AND bup.BMCUP_Initials NOT LIKE 'GAL-%' /* Galenica users */
|
||||
AND bup.BMCUP_Initials NOT LIKE 'HCI-%' /* HCI Solutions users */
|
||||
AND bup.BMCUP_Initials NOT LIKE 'EXT-%' /* External Users - 20626*/
|
||||
AND bup.BMCUP_Initials NOT LIKE 'GC-%' /* GaleniCare Users - 20619*/
|
||||
AND bup.Bmc_user_profile_Id NOT IN ( 1, 234 );
|
||||
|
||||
--persist addresses in satellite tables that we need to keep
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN ph_insurance_card c
|
||||
ON c. PHIC_patient_address = ad.Address_ID
|
||||
WHERE c.phic_code IN (
|
||||
'80756012350000207901'
|
||||
,'80756012350000206169'
|
||||
,'80756012350000206899'
|
||||
,'80756012350000205871'
|
||||
,'80756012350000210793'
|
||||
);
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN Organizational_unit ou
|
||||
ON ou.OU_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN Organizational_unit ou
|
||||
ON ou.OU_manager_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.PH_insurance phi
|
||||
ON phi.PHIN_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN PH_Organizational_unit phou
|
||||
ON phou.PHOU_manager_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN PH_Organizational_unit phou
|
||||
ON phou.PHOU_distribution_center = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN PH_prescriber php
|
||||
ON php.PHPR_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN Incident_header ih
|
||||
ON ih.INH_contact_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN Incident_header ih
|
||||
ON ih.INH_originator_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN Serial_number_history snh
|
||||
ON snh.SNH_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Item_relation_info iri
|
||||
ON iri.ITRI_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Fixed_price fp
|
||||
ON fp.FP_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Fixed_price fp
|
||||
ON fp.FP_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Tariff t
|
||||
ON t.TF_address = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Asset a
|
||||
ON a.AS_owner = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Asset a
|
||||
ON a.AS_supplier = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Asset a
|
||||
ON a.AS_manufacturer = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Supplier s
|
||||
ON s.SUPP_pay_to = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Supplier s
|
||||
ON s.SUPP_send_order_to = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
JOIN dbo.Supplier s
|
||||
ON s.SUPP_send_order_to = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK';
|
||||
|
||||
UPDATE m
|
||||
SET m.[TT_masking] = 'PERSIST'
|
||||
FROM Address ad
|
||||
JOIN #mask m ON m.address_id = ad.Address_ID
|
||||
WHERE m.[TT_masking] = 'MASK'
|
||||
AND ad.AD_origin = 1;
|
||||
|
||||
--#endregion flag masked or not address
|
||||
|
||||
--count how much rows should be masked or persisted. distribution should be 50% for each exactly
|
||||
SELECT m.TT_masking, COUNT(1) AS cnt
|
||||
FROM #mask m
|
||||
GROUP BY m.TT_masking;
|
||||
|
||||
--check if duplicates are still present in the rows marked as PERSIST. there should be none
|
||||
IF EXISTS(
|
||||
SELECT 1
|
||||
FROM #mask m
|
||||
JOIN dbo.Address_key ak ON ak.ADK_address = m.address_id
|
||||
WHERE ak.ADK_type = 7
|
||||
AND m.TT_masking = 'PERSIST'
|
||||
GROUP BY ak.ADK_subsidiary, ak.ADK_key
|
||||
HAVING COUNT(1) > 1
|
||||
)
|
||||
BEGIN
|
||||
RAISERROR('There are still %i rows that are duplicated on addresses marked as PERSIST, check further', 18,6, @@ROWCOUNT);
|
||||
END
|
||||
|
||||
--update address_key
|
||||
DELETE ak
|
||||
FROM dbo.Address_key ak
|
||||
JOIN #mask m ON m.address_id = ak.ADK_address
|
||||
WHERE ak.ADK_type=7
|
||||
AND m.TT_masking = 'MASK';
|
||||
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - Deleted adk_type 7 records causing duplication. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
||||
|
||||
|
||||
--check again for duplicate
|
||||
SELECT k.ADK_address
|
||||
FROM dbo.Address_key k
|
||||
WHERE k.ADK_type = 7
|
||||
AND EXISTS(
|
||||
SELECT s.ADK_key
|
||||
FROM dbo.Address_key s
|
||||
WHERE s.ADK_type=7
|
||||
AND k.ADK_key = s.ADK_key
|
||||
GROUP BY s.ADK_subsidiary, s.ADK_key
|
||||
HAVING COUNT(1)>1
|
||||
);
|
||||
|
||||
--fetch max value of the counter
|
||||
DECLARE @maxVal INT;
|
||||
SELECT @maxVal = MAX(CONVERT(INT, ADK_key))
|
||||
FROM dbo.Address_key
|
||||
WHERE ADK_type = 7
|
||||
|
||||
--update counter value
|
||||
DECLARE @outCounter TABLE(id INT, oldVal INT, newVal INT)
|
||||
UPDATE dc
|
||||
SET dc.DOCC_value = @maxVal
|
||||
OUTPUT Inserted.Document_counter_ID, inserted.DOCC_value, Deleted.DOCC_value INTO @outCounter(id, newVal, oldVal)
|
||||
FROM dbo.Document_counter dc
|
||||
JOIN ActivePos_read.dbo.CommonVar cv ON cv.[Key] = 'cvCounterADKType7' AND cv.Value = dc.Document_counter_ID
|
||||
;
|
||||
|
||||
--show previous and new value of the counter
|
||||
SELECT *
|
||||
FROM @outCounter;
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
Reference in New Issue
Block a user