diff --git a/ADR REPO - aps_fn_Is_Address_Authorization_Granted replacement.sql b/ADR REPO - aps_fn_Is_Address_Authorization_Granted replacement.sql
new file mode 100644
index 0000000..d771995
--- /dev/null
+++ b/ADR REPO - aps_fn_Is_Address_Authorization_Granted replacement.sql
@@ -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]
\ No newline at end of file
diff --git a/ADR REPO - heap table rebuild.sql b/ADR REPO - heap table rebuild.sql
new file mode 100644
index 0000000..a19f12c
--- /dev/null
+++ b/ADR REPO - heap table rebuild.sql
@@ -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.';
+
diff --git a/ADR REPO - index changes.sql b/ADR REPO - index changes.sql
new file mode 100644
index 0000000..e45f8ad
--- /dev/null
+++ b/ADR REPO - index changes.sql
@@ -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);
\ No newline at end of file
diff --git a/ADR REPO - script to integrate.sql b/ADR REPO - script to integrate.sql
new file mode 100644
index 0000000..7764ea7
--- /dev/null
+++ b/ADR REPO - script to integrate.sql
@@ -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
diff --git a/ADR REPO - simplest aps_fn_Is_Address_Authorization_Granted replacement.sql b/ADR REPO - simplest aps_fn_Is_Address_Authorization_Granted replacement.sql
new file mode 100644
index 0000000..5a7b440
--- /dev/null
+++ b/ADR REPO - simplest aps_fn_Is_Address_Authorization_Granted replacement.sql
@@ -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
\ No newline at end of file
diff --git a/CRS dev - bkp restore data with bcp.sql b/CRS dev - bkp restore data with bcp.sql
new file mode 100644
index 0000000..2364792
--- /dev/null
+++ b/CRS dev - bkp restore data with bcp.sql
@@ -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]
diff --git a/CRS dev - create needed structure in dbo.sql b/CRS dev - create needed structure in dbo.sql
new file mode 100644
index 0000000..79e8aba
--- /dev/null
+++ b/CRS dev - create needed structure in dbo.sql
@@ -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
\ No newline at end of file
diff --git a/DEV - Script a job and shcedules.sql b/DEV - Script a job and shcedules.sql
new file mode 100644
index 0000000..3b6e4f0
--- /dev/null
+++ b/DEV - Script a job and shcedules.sql
@@ -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
diff --git a/DEV - script grants and roles for all logins in a db.sql b/DEV - script grants and roles for all logins in a db.sql
index 7a3cc0b..059d005 100644
--- a/DEV - script grants and roles for all logins in a db.sql
+++ b/DEV - script grants and roles for all logins in a db.sql
@@ -1,128 +1,21 @@
-USE [master]
-/* declare variables */
-DECLARE @db VARCHAR(100)
-IF OBJECT_ID('tempdb..#txt')IS NOT NULL BEGIN;
- DROP TABLE #txt;
-END;
-
-CREATE TABLE #txt(
- id INT NOT NULL IDENTITY
- ,db VARCHAR(100) NOT NULL
- ,msg NVARCHAR(MAX) NULL
-);
-
-DECLARE csr_db CURSOR FAST_FORWARD READ_ONLY FOR
- SELECT d.name
- FROM sys.databases d
- WHERE d.[database_id]>4
- AND d.[is_read_only] = 0
- AND d.[state]=0
-
-OPEN csr_db
-
-FETCH NEXT FROM csr_db INTO @db
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- EXEC('
- use '+@db+';
-
--- Script to generate user creation and role membership
-DECLARE @UserScripts NVARCHAR(MAX) = '''';
-DECLARE @RoleScripts NVARCHAR(MAX) = '''';
-DECLARE @login NVARCHAR(MAX) = ''medicalData-importer-int'';
---SET @login=null;
-
--- Generate user creation scripts
-SELECT @UserScripts = @UserScripts + ''CREATE USER ['' + dp.name + ''] FOR LOGIN ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
-FROM sys.database_principals dp
-WHERE dp.type IN (''S'', ''U'', ''G'')
-AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
-AND dp.name = COALESCE(@login, dp.[name]);
-
--- Generate role membership scripts
-SELECT @RoleScripts = @RoleScripts + ''ALTER ROLE ['' + dr.name + ''] ADD MEMBER ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
-FROM sys.database_principals dp
-JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
-JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
-WHERE dp.type IN (''S'', ''U'', ''G'')
-AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
-AND dp.name = COALESCE(@login, dp.[name]);
-
--- Print user creation and role membership scripts
-PRINT @UserScripts;
-insert into #txt(db,msg)
-select '''+@db+''',@UserScripts
-where nullif(@UserScripts,'''') is not null;
-
-PRINT @RoleScripts;
-insert into #txt(db,msg)
-select '''+@db+''',@RoleScripts
-where nullif(@RoleScripts,'''') is not null;
-
--- Script to generate permissions
-DECLARE @PermissionScripts NVARCHAR(MAX) = '''';
-
-SELECT @PermissionScripts = @PermissionScripts +
- CASE
- WHEN p.state_desc = ''GRANT'' THEN ''GRANT ''
- WHEN p.state_desc = ''DENY'' THEN ''DENY ''
- WHEN p.state_desc = ''REVOKE'' THEN ''REVOKE ''
- END + p.permission_name +
- CASE
- WHEN p.class_desc = ''OBJECT_OR_COLUMN'' THEN '' ON ['' + OBJECT_NAME(p.major_id) + '']''
- WHEN p.class_desc = ''DATABASE'' THEN '' ON DATABASE::['' + DB_NAME() + '']''
- WHEN p.class_desc = ''SCHEMA'' THEN '' ON SCHEMA::['' + SCHEMA_NAME(p.major_id) + '']''
- WHEN p.class_desc = ''TYPE'' THEN '' ON TYPE::['' + TYPE_NAME(p.major_id) + '']''
- ELSE ''''
- END + '' TO ['' + dp.name + ''];'' + CHAR(13) + CHAR(10)
-FROM sys.database_permissions p
-JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
-WHERE dp.type IN (''S'', ''U'', ''G'')
-AND dp.name NOT IN (''dbo'', ''guest'', ''INFORMATION_SCHEMA'', ''sys'')
-AND dp.name = COALESCE(@login, dp.[name]);
-
--- Print permissions scripts
-PRINT @PermissionScripts;
-insert into #txt(db,msg)
-select '''+@db+''',@PermissionScripts
-where nullif(@PermissionScripts,'''') is not null;
- ');
-
- FETCH NEXT FROM csr_db INTO @db
-END
-
-CLOSE csr_db
-DEALLOCATE csr_db
-
-SELECT *
-FROM [#txt]
-
-RETURN
-
-
+USE SL2007
--USE dba
-- Script to generate user creation and role membership
DECLARE @UserScripts NVARCHAR(MAX) = '';
DECLARE @RoleScripts NVARCHAR(MAX) = '';
-DECLARE @login NVARCHAR(MAX) = 'medicalData-importer-dev';
-- Generate user creation scripts
SELECT @UserScripts = @UserScripts + 'CREATE USER [' + dp.name + '] FOR LOGIN [' + dp.name + '];' + CHAR(13) + CHAR(10)
FROM sys.database_principals dp
-WHERE dp.type IN ('S', 'U', 'G')
-AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
-AND dp.name = COALESCE(@login, dp.[name]);
+WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
-- Generate role membership scripts
SELECT @RoleScripts = @RoleScripts + 'ALTER ROLE [' + dr.name + '] ADD MEMBER [' + dp.name + '];' + CHAR(13) + CHAR(10)
FROM sys.database_principals dp
JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
-WHERE dp.type IN ('S', 'U', 'G')
-AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
-AND dp.name = COALESCE(@login, dp.[name]);
+WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
-- Print user creation and role membership scripts
PRINT @UserScripts;
@@ -146,9 +39,7 @@ SELECT @PermissionScripts = @PermissionScripts +
END + ' TO [' + dp.name + '];' + CHAR(13) + CHAR(10)
FROM sys.database_permissions p
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
-WHERE dp.type IN ('S', 'U', 'G')
-AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys')
-AND dp.name = COALESCE(@login, dp.[name]);
+WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
-- Print permissions scripts
-PRINT @PermissionScripts;
\ No newline at end of file
+PRINT @PermissionScripts;
\ No newline at end of file
diff --git a/EXPLOIT - check log backup size.sql b/EXPLOIT - check log backup size.sql
new file mode 100644
index 0000000..6636a85
--- /dev/null
+++ b/EXPLOIT - check log backup size.sql
@@ -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;
\ No newline at end of file
diff --git a/EXPLOIT - start replication agents that are stopped.sql b/EXPLOIT - start replication agents that are stopped.sql
index 2dc6dec..b1c1fc3 100644
--- a/EXPLOIT - start replication agents that are stopped.sql
+++ b/EXPLOIT - start replication agents that are stopped.sql
@@ -23,6 +23,5 @@ AND NOT EXISTS(
IF NULLIF(@q,'') IS NOT NULL
BEGIN
PRINT @q
- select @q
EXEC(@q)
END
\ No newline at end of file
diff --git a/check disk usage and db size.sql b/check disk usage and db size.sql
new file mode 100644
index 0000000..789ecf9
--- /dev/null
+++ b/check disk usage and db size.sql
@@ -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;
\ No newline at end of file
diff --git a/craft xml rdcman.sql b/craft xml rdcman.sql
new file mode 100644
index 0000000..9dfb702
--- /dev/null
+++ b/craft xml rdcman.sql
@@ -0,0 +1,82 @@
+/*
+generate xml fragment for RDCMANAGER groups
+run this scrript on hcimon
+*/
+
+USE [ControlCenter]
+
+
+DECLARE @tpl VARCHAR(max)='
Résumé des erreurs dans le tableau ci-dessous :
'' +'' +| ErrorNumber | +ErrorSeverity | +ErrorState | +ErrorProcedure | +ErrorLine | +ErrorMessage | +
|---|---|---|---|---|---|
| '' + isnull(convert(varchar, ERROR_NUMBER()), '''') + '' | +'' + isnull(convert(varchar, ERROR_SEVERITY()), '''') + '' | +'' + isnull(convert(varchar, ERROR_STATE()), '''') + '' | +'' + isnull(ERROR_PROCEDURE(), '''') + '' | +'' + isnull(convert(varchar, ERROR_LINE()), '''') + '' | +'' + isnull(ERROR_MESSAGE(), '''') + '' | +