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]
|
USE SL2007
|
||||||
/* 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 dba
|
--USE dba
|
||||||
|
|
||||||
-- Script to generate user creation and role membership
|
-- Script to generate user creation and role membership
|
||||||
DECLARE @UserScripts NVARCHAR(MAX) = '';
|
DECLARE @UserScripts NVARCHAR(MAX) = '';
|
||||||
DECLARE @RoleScripts NVARCHAR(MAX) = '';
|
DECLARE @RoleScripts NVARCHAR(MAX) = '';
|
||||||
DECLARE @login NVARCHAR(MAX) = 'medicalData-importer-dev';
|
|
||||||
|
|
||||||
-- Generate user creation scripts
|
-- Generate user creation scripts
|
||||||
SELECT @UserScripts = @UserScripts + 'CREATE USER [' + dp.name + '] FOR LOGIN [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
SELECT @UserScripts = @UserScripts + 'CREATE USER [' + dp.name + '] FOR LOGIN [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||||
FROM sys.database_principals dp
|
FROM sys.database_principals dp
|
||||||
WHERE dp.type IN ('S', 'U', 'G')
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||||
AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
|
|
||||||
AND dp.name = COALESCE(@login, dp.[name]);
|
|
||||||
|
|
||||||
-- Generate role membership scripts
|
-- Generate role membership scripts
|
||||||
SELECT @RoleScripts = @RoleScripts + 'ALTER ROLE [' + dr.name + '] ADD MEMBER [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
SELECT @RoleScripts = @RoleScripts + 'ALTER ROLE [' + dr.name + '] ADD MEMBER [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||||
FROM sys.database_principals dp
|
FROM sys.database_principals dp
|
||||||
JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
|
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
|
JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
|
||||||
WHERE dp.type IN ('S', 'U', 'G')
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||||
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 user creation and role membership scripts
|
||||||
PRINT @UserScripts;
|
PRINT @UserScripts;
|
||||||
@@ -146,9 +39,7 @@ SELECT @PermissionScripts = @PermissionScripts +
|
|||||||
END + ' TO [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
END + ' TO [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
||||||
FROM sys.database_permissions p
|
FROM sys.database_permissions p
|
||||||
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
|
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
|
||||||
WHERE dp.type IN ('S', 'U', 'G')
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
||||||
AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
|
|
||||||
AND dp.name = COALESCE(@login, dp.[name]);
|
|
||||||
|
|
||||||
-- Print permissions scripts
|
-- 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
|
IF NULLIF(@q,'') IS NOT NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
PRINT @q
|
PRINT @q
|
||||||
select @q
|
|
||||||
EXEC(@q)
|
EXEC(@q)
|
||||||
END
|
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>
|
</PublisherGroups>
|
||||||
|
|
||||||
and save it in the local folder
|
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]
|
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]
|
ORDER BY [pos].[POS_number]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
SELECT ActivePos_write.upd.DatabaseVersion() AS currentVersion;
|
||||||
|
|
||||||
SELECT SettingValue AS backupSrc, SettingId
|
SELECT SettingValue AS backupSrc, SettingId
|
||||||
FROM ActiveSystemServer.cfg.Settings
|
FROM ActiveSystemServer.cfg.Settings
|
||||||
WHERE SettingId LIKE 'Values.Modules.Replication.DbInitializationBackupPath%'
|
WHERE SettingId LIKE 'Values.Modules.Replication.DbInitializationBackupPath%'
|
||||||
@@ -65,22 +67,21 @@ END
|
|||||||
|
|
||||||
--check POS and PHCY versions
|
--check POS and PHCY versions
|
||||||
SELECT ActivePos_write.upd.DatabaseVersion() AS currentVersion
|
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
|
--restart service on pos
|
||||||
EXEC ('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
|
||||||
exec xp_cmdshell 'net stop ActiveposClientService'
|
|
||||||
exec xp_cmdshell 'net start ActiveposClientService'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--subscription
|
--subscription
|
||||||
EXEC ActivePos_read..sp_dropsubscription @publication = N'ActivePosTran', @article = N'all', @subscriber ='xxx'
|
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
|
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