From 1873e2b8de8681b0dc546bc78c2419ea39224858 Mon Sep 17 00:00:00 2001 From: Thierry Schork Date: Thu, 7 Mar 2024 17:01:50 +0100 Subject: [PATCH] sync --- DELPHIX - give db_owner to dbi people.sql | 94 ++ ...ve dev the ability to disable triggers.sql | 10 + .../reworked roles from security tool.sql | 1112 +++++++++++++++++ PII cleanup/roles revokes on pharmacy.sql | 34 + .../v15/.ssms_suo | Bin 0 -> 29696 bytes poc distrib pull/main.ps1 | 740 +++++++++++ 6 files changed, 1990 insertions(+) create mode 100644 DELPHIX - give db_owner to dbi people.sql create mode 100644 PII cleanup/give dev the ability to disable triggers.sql create mode 100644 PII cleanup/reworked roles from security tool.sql create mode 100644 PII cleanup/roles revokes on pharmacy.sql create mode 100644 PULL replication perf validation/.vs/PULL replication perf validation/v15/.ssms_suo create mode 100644 poc distrib pull/main.ps1 diff --git a/DELPHIX - give db_owner to dbi people.sql b/DELPHIX - give db_owner to dbi people.sql new file mode 100644 index 0000000..4dca9bf --- /dev/null +++ b/DELPHIX - give db_owner to dbi people.sql @@ -0,0 +1,94 @@ +/* +Server: samnb705db01.amavita.ch +Format: GCM +Business: TPPHAR +type: VALI +Version: 23.1.21006.00066 + +28.02.2024, TSC +*/ +USE master; + +DECLARE @q NVARCHAR(MAX) = N''; +DECLARE @tplLogin NVARCHAR(MAX) + = N' +IF EXISTS (SELECT 1 FROM master.dbo.syslogins WHERE name = ''@login@'') +BEGIN + ALTER LOGIN [@login@] + WITH DEFAULT_DATABASE = [master], + DEFAULT_LANGUAGE = [us_english] + --CHECK_EXPIRATION = OFF, + --CHECK_POLICY = ON; + ALTER LOGIN [@login@] ENABLE; +END; +ELSE +BEGIN + CREATE LOGIN [@login@] FROM WINDOWS + WITH DEFAULT_DATABASE = [master], + DEFAULT_LANGUAGE = [us_english] + --CHECK_EXPIRATION = OFF, + --CHECK_POLICY = ON; +END; +'; +DECLARE @tplRight NVARCHAR(MAX) = N' +USE @dbName@ +IF NOT EXISTS( + SELECT * + FROM sys.database_principals AS dp + INNER JOIN sys.server_principals AS sp ON dp.sid = sp.sid + WHERE sp.type_desc IN (''WINDOWS_LOGIN'', ''SQL_LOGIN'') + AND sp.name = ''@login@'' +) +BEGIN + CREATE USER [@login@] FOR LOGIN [@login@] +END + +ALTER ROLE [db_owner] ADD MEMBER [@login@] +'; + +DECLARE @users TABLE (login VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL); +INSERT INTO @users ([login], + [name]) +VALUES ('CENTRALINFRA\ua253440', 'Oliver'), + ('CENTRALINFRA\ua253450', 'Franck'); + +--#region create logins +SELECT @q = @q + REPLACE(@tplLogin, '@login@', [u].[login]) + FROM @users u; +--#endregion create logins + +--#region give rights to db's +/* declare variables */ +DECLARE @dbName NVARCHAR(255), + @login VARCHAR(255); + +DECLARE csrDb CURSOR FAST_FORWARD READ_ONLY FOR +SELECT [d].[name], + [u].[login] + FROM sys.databases d + CROSS JOIN @users u + WHERE LOWER([d].[name]) IN ( 'arizona', 'arizonarep', 'hcitools', 'arizonacust', 'activepos_read', 'activepos_write' ); + +OPEN csrDb; + +FETCH NEXT FROM csrDb + INTO @dbName, + @login; + +WHILE @@FETCH_STATUS = 0 +BEGIN + SET @q = @q + REPLACE(REPLACE(@tplRight, '@dbName@', @dbName), '@login@', @login); + + FETCH NEXT FROM csrDb + INTO @dbName, + @login; +END; + +CLOSE csrDb; +DEALLOCATE csrDb; +--#endregion give rights to db's + +--PRINT @q; + +EXEC (@q); \ No newline at end of file diff --git a/PII cleanup/give dev the ability to disable triggers.sql b/PII cleanup/give dev the ability to disable triggers.sql new file mode 100644 index 0000000..c228c6b --- /dev/null +++ b/PII cleanup/give dev the ability to disable triggers.sql @@ -0,0 +1,10 @@ +USE [Arizona] + +--pharmacy + +GRANT ALTER ON dbo.[Stock_transaction_master] TO [dbRoleDevUsr] +GRANT ALTER ON dbo.[Document_line] TO [dbRoleDevUsr] +GRANT ALTER ON dbo.[Document_line_link] TO [dbRoleDevUsr] + +--central +GRANT ALTER ON dbo.[Entry] TO [dbRoleDevUsr] diff --git a/PII cleanup/reworked roles from security tool.sql b/PII cleanup/reworked roles from security tool.sql new file mode 100644 index 0000000..a452b91 --- /dev/null +++ b/PII cleanup/reworked roles from security tool.sql @@ -0,0 +1,1112 @@ +USE Arizona +GO + + + +/*============================================================================= + + Script to create dbRoleTPPos role. + + Role Name: dbRoleTPPos + TEMPLATE: Default + + EXAMPLE OF SECURABLES TO SET: + + INSERT INTO #Securables + VALUES + ('DB','GRANT','VIEW DEFINITION','',''), + ('SCHEMA','GRANT','SELECT,EXECUTE,INSERT,UPDATE,DELETE','','AP'), + ('TABLE','GRANT','INSERT,UPDATE','Address','dbo'), + ('SP','GRANT','EXECUTE','sp_bmc_GetNextID','dbo'), + ('ROLE','GRANT','db_datareader','','') + +=============================================================================*/ + +DECLARE @Command nvarchar(max), + @RoleName varchar(60), + @Users varchar(255), + @typeofobject varchar(50), + @grantordeny varchar(10), + @rightsaction varchar(255), + @objectname varchar(255), + @schemaid varchar(10), + @sysTarget varchar(255), + @sysType varchar(255) + +SET @RoleName = 'dbRoleTPPos' +SET @Command = '' + +/* TEMP TABLES */ +CREATE TABLE #UsersOnRole(username varchar(255)) +CREATE TABLE #Securables(typeofobject varchar(50), grantordeny varchar(10), rightsaction varchar(255), objectname varchar(255), schemaid varchar(10),N2 bit) + +/* !!! LIST OF SECURABLES TO CHANGE !!! */ + +INSERT INTO #Securables +VALUES +('ROLE','GRANT','DB_DATAREADER','','dbo',0), +('ROLE','GRANT','DB_DATAWRITER','','dbo',0) + +/* GET ALL USERS ON THIS ROLE */ +INSERT INTO #UsersOnRole +SELECT + members.name +FROM sys.database_role_members + JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id + JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id +WHERE roles.name = @RoleName + +/* CREATE ROLE */ +SELECT @Command = ' +IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''' + @RoleName + ''' AND type = ''R'') +BEGIN + CREATE ROLE [' + @RoleName + '] AUTHORIZATION [dbo] + PRINT ''CREATE ROLE [' + @RoleName + ']'' +END +' +EXEC sp_executesql @Command + +SET @Command = ' +DECLARE @SP_Name varchar(255) + +' + +/* SET ALL ROLE SECURABLES */ +DECLARE SecurablesCurs CURSOR FOR +SELECT typeofobject, grantordeny, rightsaction, objectname, schemaid +FROM #Securables +WHERE N2 = 0 + +OPEN SecurablesCurs +FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid +WHILE @@FETCH_STATUS = 0 +BEGIN + + /* ONLY IF SQL VERSION IS LOWER THAN 2022 AND OPERATION IS ACTION IS UNMASK */ + IF ((@rightsaction = 'UNMASK') AND (CONVERT(INT,LEFT(REPLACE(CAST(SERVERPROPERTY('ProductVersion') AS CHAR(15)),'.',''),7)) < 1600000)) + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + ELSE + BEGIN + + IF @typeofobject = 'COLUMN' + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' ON ' + @schemaid + '.' + @objectname + ' TO [' + @RoleName + '] +' + END + + IF @typeofobject = 'DB' + BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions('DATABASE') WHERE permission_name = '' + @rightsaction + '') + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + END + + IF @typeofobject = 'SCHEMA' + BEGIN + SET @Command = @Command + ' +IF EXISTS (SELECT 1 FROM sys.schemas WHERE name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''SCHEMA'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON SCHEMA::' + @schemaid + ' TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject in('TABLE','SP','FUNCTIONS','VIEWS') + BEGIN + + IF @objectname like '%[%]%' + BEGIN + + IF @typeofobject = 'TABLE' + BEGIN + SET @sysTarget = 'sys.tables' + SET @sysType = '' + END + + IF @typeofobject = 'SP' + BEGIN + SET @sysTarget = 'sys.procedures' + SET @sysType = '' + END + + IF @typeofobject = 'FUNCTIONS' + BEGIN + SET @sysTarget = 'sys.objects' + SET @sysType = ' and p.Type IN ( N''FN'', N''IF'', N''TF'', N''FS'', N''FT'' )' + END + + IF @typeofobject = 'VIEWS' + BEGIN + SET @sysTarget = 'sys.views' + SET @sysType = '' + END + + SET @Command = @Command + ' +DECLARE SP_cursor CURSOR FOR +SELECT p.name FROM ' + @sysTarget + ' p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE (p.name like ''' + @objectname + ''') and s.name = ''' + @schemaid + '' + @sysType + ''' + +OPEN SP_cursor +FETCH NEXT FROM SP_cursor INTO @SP_Name +WHILE @@FETCH_STATUS = 0 +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + EXEC(''' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].['' + @SP_Name + ''] TO [' + @RoleName + ']'') + END + FETCH NEXT FROM SP_cursor INTO @SP_Name +END + +CLOSE SP_cursor +DEALLOCATE SP_cursor + +' + + END + ELSE + BEGIN + + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.objects o WITH (NOLOCK) JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = ''' + @objectname + ''' AND o.type IN (N''U'',''P'',''V'',''FN'',''IF'',''TF'') AND s.name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END +END + +IF @typeofobject = 'ASSEMBLIES' +BEGIN + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.assemblies WHERE NAME = ''' + @objectname + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''ASSEMBLY'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + '::[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' +END + +IF @typeofobject = 'ROLE' +BEGIN + SET @Command = @Command + ' +IF NOT EXISTS (SELECT 1 FROM sys.database_role_members JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id WHERE roles.name = ''' + @rightsaction + ''' AND members.name = ''' + @RoleName + ''') +BEGIN + EXEC sp_addrolemember N''' + @rightsaction + ''', N''' + @RoleName + ''' +END + +' +END +END + +FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid +END + +CLOSE SecurablesCurs +DEALLOCATE SecurablesCurs + +PRINT 'SET ALL SECURABLES ON ROLE [' + @RoleName + ']' +EXEC sp_executesql @Command + +/* ADD USER */ +DECLARE UsersCurs CURSOR FOR +SELECT username + FROM #UsersOnRole + +OPEN UsersCurs + +FETCH NEXT FROM UsersCurs INTO @Users +WHILE @@FETCH_STATUS = 0 +BEGIN + + SELECT @Command = ' +EXEC sp_addrolemember N''' + @RoleName + ''', N''' + @Users + ''' +PRINT ''ADD USER [' + @Users + '] ON ROLE [' + @RoleName + ']'' +' + +FETCH NEXT FROM UsersCurs INTO @Users +END + +CLOSE UsersCurs +DEALLOCATE UsersCurs + +EXEC sp_executesql @Command + + +/*============================================================================= + Drop temp tables +=============================================================================*/ +DROP TABLE #Securables +DROP TABLE #UsersOnRole + +/*============================================================================= + Script to create / map all users +=============================================================================*/ + +DECLARE @username varchar(255), + @Database VARCHAR(255) + +SET @username = '' +SET @Command = '' +SET @Database = '' + +CREATE TABLE #AllUsersAndRoles(databasename varchar(255), rolename varchar(255), username varchar(255)) + +INSERT INTO #AllUsersAndRoles +VALUES +('Arizona','dbRoleTPPos','sqlLksrvTPPosusr') + +DECLARE MapUsersAndRolesCurs CURSOR FOR +SELECT databasename, rolename, username FROM #AllUsersAndRoles AUAR JOIN master.sys.databases D ON D.name = AUAR.databasename + +OPEN MapUsersAndRolesCurs +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +WHILE @@FETCH_STATUS = 0 +BEGIN + + SET @Command = 'USE ' + @Database + ' +IF EXISTS (SELECT 1 FROM master.dbo.syslogins WHERE name = ''' + @username + ''') +BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @rolename + ''' AND [type] = ''R'') + BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @username + ''') + BEGIN + ALTER USER [' + @username + '] WITH LOGIN = [' + @username + '] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + ELSE + BEGIN + CREATE USER [' + @username + '] FOR LOGIN [' + @username + '] WITH DEFAULT_SCHEMA=[dbo] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + END +END +' + +EXEC sp_executesql @Command + +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +END + +CLOSE MapUsersAndRolesCurs +DEALLOCATE MapUsersAndRolesCurs + +DROP TABLE #AllUsersAndRoles +GO + + + +USE Arizona +GO + + + +/*============================================================================= + + Script to create dbRoleIttechUsr role. + + Role Name: dbRoleIttechUsr + TEMPLATE: N2 and PROD + + EXAMPLE OF SECURABLES TO SET: + + INSERT INTO #Securables + VALUES + ('DB','GRANT','VIEW DEFINITION','',''), + ('SCHEMA','GRANT','SELECT,EXECUTE,INSERT,UPDATE,DELETE','','AP'), + ('TABLE','GRANT','INSERT,UPDATE','Address','dbo'), + ('SP','GRANT','EXECUTE','sp_bmc_GetNextID','dbo'), + ('ROLE','GRANT','db_datareader','','') + +=============================================================================*/ + +DECLARE @Type varchar(6), + @Command nvarchar(max), + @RoleName varchar(60), + @Users varchar(255), + @typeofobject varchar(50), + @grantordeny varchar(10), + @rightsaction varchar(255), + @objectname varchar(255), + @schemaid varchar(10), + @sysTarget varchar(255), + @sysType varchar(255) + +SET @RoleName = 'dbRoleIttechUsr' +SET @Command = '' + +SELECT @Type = [Type] FROM [master].[cfg].[InstanceContext] + +/* TEMP TABLES */ +CREATE TABLE #UsersOnRole(username varchar(255)) +CREATE TABLE #Securables(typeofobject varchar(50), grantordeny varchar(10), rightsaction varchar(255), objectname varchar(255), schemaid varchar(10),N2 bit) + +/* !!! LIST OF SECURABLES TO CHANGE !!! */ + +INSERT INTO #Securables +VALUES +('DB','GRANT','EXECUTE','','dbo',0), +('ROLE','GRANT','DB_DATAREADER','','dbo',0), +('ROLE','GRANT','DB_DATAWRITER','','dbo',0), +('ROLE','GRANT','DB_OWNER','','dbo',1) + +/* GET ALL USERS ON THIS ROLE */ +INSERT INTO #UsersOnRole +SELECT + members.name +FROM sys.database_role_members + JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id + JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id +WHERE roles.name = @RoleName + +/* CREATE ROLE */ +SELECT @Command = ' +IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''' + @RoleName + ''' AND type = ''R'') +BEGIN + CREATE ROLE [' + @RoleName + '] AUTHORIZATION [dbo] + PRINT ''CREATE ROLE [' + @RoleName + ']'' +END +' +EXEC sp_executesql @Command + +SET @Command = ' +DECLARE @SP_Name varchar(255) + +' + +/* SET ALL ROLE SECURABLES */ +IF @Type = 'DEVE' +BEGIN + + DECLARE SecurablesCurs CURSOR FOR + SELECT typeofobject, grantordeny, rightsaction, objectname, schemaid + FROM #Securables + WHERE N2 = 1 + + OPEN SecurablesCurs + FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid + WHILE @@FETCH_STATUS = 0 + BEGIN + + /* ONLY IF SQL VERSION IS LOWER THAN 2022 AND OPERATION IS ACTION IS UNMASK */ + IF ((@rightsaction = 'UNMASK') AND (CONVERT(INT,LEFT(REPLACE(CAST(SERVERPROPERTY('ProductVersion') AS CHAR(15)),'.',''),7)) < 1600000)) + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + ELSE + BEGIN + + IF @typeofobject = 'COLUMN' + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' ON ' + @schemaid + '.' + @objectname + ' TO [' + @RoleName + '] +' + END + + IF @typeofobject = 'DB' + BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions('DATABASE') WHERE permission_name = '' + @rightsaction + '') + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + END + + IF @typeofobject = 'SCHEMA' + BEGIN + SET @Command = @Command + ' +IF EXISTS (SELECT 1 FROM sys.schemas WHERE name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''SCHEMA'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON SCHEMA::' + @schemaid + ' TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject in('TABLE','SP','FUNCTIONS','VIEWS') + BEGIN + + IF @objectname like '%[%]%' + BEGIN + IF @typeofobject = 'TABLE' + BEGIN + SET @sysTarget = 'sys.tables' + SET @sysType = '' + END + + IF @typeofobject = 'SP' + BEGIN + SET @sysTarget = 'sys.procedures' + SET @sysType = '' + END + + IF @typeofobject = 'FUNCTIONS' + BEGIN + SET @sysTarget = 'sys.objects' + SET @sysType = ' and p.Type IN ( N''FN'', N''IF'', N''TF'', N''FS'', N''FT'' )' + END + + IF @typeofobject = 'VIEWS' + BEGIN + SET @sysTarget = 'sys.views' + SET @sysType = '' + END + + SET @Command = @Command + ' +DECLARE SP_cursor CURSOR FOR +SELECT p.name FROM ' + @sysTarget + ' p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE (p.name like ''' + @objectname + ''') and s.name = ''' + @schemaid + '' + @sysType + ''' + +OPEN SP_cursor +FETCH NEXT FROM SP_cursor INTO @SP_Name +WHILE @@FETCH_STATUS = 0 +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + EXEC(''' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].['' + @SP_Name + ''] TO [' + @RoleName + ']'') + END + FETCH NEXT FROM SP_cursor INTO @SP_Name +END + +CLOSE SP_cursor +DEALLOCATE SP_cursor + +' + + END + ELSE + BEGIN + + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.objects o WITH (NOLOCK) JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = ''' + @objectname + ''' AND o.type IN (N''U'',''P'',''V'',''FN'',''IF'',''TF'') AND s.name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END + END + + IF @typeofobject = 'ASSEMBLIES' + BEGIN + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.assemblies WHERE NAME = ''' + @objectname + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''ASSEMBLY'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + '::[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject = 'ROLE' + BEGIN + SET @Command = @Command + ' +IF NOT EXISTS (SELECT 1 FROM sys.database_role_members JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id WHERE roles.name = ''' + @rightsaction + ''' AND members.name = ''' + @RoleName + ''') +BEGIN + EXEC sp_addrolemember N''' + @rightsaction + ''', N''' + @RoleName + ''' +END + +' + END + END + + FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid + END + +CLOSE SecurablesCurs +DEALLOCATE SecurablesCurs + +PRINT 'SET ALL SECURABLES ON ROLE [' + @RoleName + ']' +EXEC sp_executesql @Command + +END +ELSE +BEGIN + + DECLARE SecurablesCurs CURSOR FOR + SELECT typeofobject, grantordeny, rightsaction, objectname, schemaid + FROM #Securables + WHERE N2 = 0 + + OPEN SecurablesCurs + FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid + WHILE @@FETCH_STATUS = 0 + BEGIN + + /* ONLY IF SQL VERSION IS LOWER THAN 2022 AND OPERATION IS ACTION IS UNMASK */ + IF ((@rightsaction = 'UNMASK') AND (CONVERT(INT,LEFT(REPLACE(CAST(SERVERPROPERTY('ProductVersion') AS CHAR(15)),'.',''),7)) < 1600000)) + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + ELSE + BEGIN + + IF @typeofobject = 'COLUMN' + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' ON ' + @schemaid + '.' + @objectname + ' TO [' + @RoleName + '] +' + END + + IF @typeofobject = 'DB' + BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions('DATABASE') WHERE permission_name = '' + @rightsaction + '') + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + END + + IF @typeofobject = 'SCHEMA' + BEGIN + SET @Command = @Command + ' +IF EXISTS (SELECT 1 FROM sys.schemas WHERE name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''SCHEMA'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON SCHEMA::' + @schemaid + ' TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject in('TABLE','SP','FUNCTIONS','VIEWS') + BEGIN + + IF @objectname like '%[%]%' + BEGIN + + IF @typeofobject = 'TABLE' + BEGIN + SET @sysTarget = 'sys.tables' + SET @sysType = '' + END + + IF @typeofobject = 'SP' + BEGIN + SET @sysTarget = 'sys.procedures' + SET @sysType = '' + END + + IF @typeofobject = 'FUNCTIONS' + BEGIN + SET @sysTarget = 'sys.objects' + SET @sysType = ' and p.Type IN ( N''FN'', N''IF'', N''TF'', N''FS'', N''FT'' )' + END + + IF @typeofobject = 'VIEWS' + BEGIN + SET @sysTarget = 'sys.views' + SET @sysType = '' + END + + SET @Command = @Command + ' +DECLARE SP_cursor CURSOR FOR +SELECT p.name FROM ' + @sysTarget + ' p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE (p.name like ''' + @objectname + ''') and s.name = ''' + @schemaid + '' + @sysType + ''' + +OPEN SP_cursor +FETCH NEXT FROM SP_cursor INTO @SP_Name +WHILE @@FETCH_STATUS = 0 +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + EXEC(''' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].['' + @SP_Name + ''] TO [' + @RoleName + ']'') + END + FETCH NEXT FROM SP_cursor INTO @SP_Name +END + +CLOSE SP_cursor +DEALLOCATE SP_cursor + +' + + END + ELSE + BEGIN + + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.objects o WITH (NOLOCK) JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = ''' + @objectname + ''' AND o.type IN (N''U'',''P'',''V'',''FN'',''IF'',''TF'') AND s.name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END + END + + IF @typeofobject = 'ASSEMBLIES' + BEGIN + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.assemblies WHERE NAME = ''' + @objectname + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''ASSEMBLY'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + '::[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject = 'ROLE' + BEGIN + SET @Command = @Command + ' +IF NOT EXISTS (SELECT 1 FROM sys.database_role_members JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id WHERE roles.name = ''' + @rightsaction + ''' AND members.name = ''' + @RoleName + ''') +BEGIN + EXEC sp_addrolemember N''' + @rightsaction + ''', N''' + @RoleName + ''' +END + +' + END + END + + FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid + END + +CLOSE SecurablesCurs +DEALLOCATE SecurablesCurs + +PRINT 'SET ALL SECURABLES ON ROLE [' + @RoleName + ']' +EXEC sp_executesql @Command + +END + +/* ADD USER */ +DECLARE UsersCurs CURSOR FOR +SELECT username + FROM #UsersOnRole + +OPEN UsersCurs + +FETCH NEXT FROM UsersCurs INTO @Users +WHILE @@FETCH_STATUS = 0 +BEGIN + + SELECT @Command = ' +EXEC sp_addrolemember N''' + @RoleName + ''', N''' + @Users + ''' +PRINT ''ADD USER [' + @Users + '] ON ROLE [' + @RoleName + ']'' +' + +FETCH NEXT FROM UsersCurs INTO @Users +END + +CLOSE UsersCurs +DEALLOCATE UsersCurs + +EXEC sp_executesql @Command + +/*============================================================================= + Drop temp tables +=============================================================================*/ +DROP TABLE #Securables +DROP TABLE #UsersOnRole +/*============================================================================= + Script to create / map all users +=============================================================================*/ + +DECLARE @username varchar(255), + @Database VARCHAR(255) + +SET @username = '' +SET @Command = '' +SET @Database = '' + +CREATE TABLE #AllUsersAndRoles(databasename varchar(255), rolename varchar(255), username varchar(255)) + +INSERT INTO #AllUsersAndRoles +VALUES +('Arizona','dbRoleIttechUsr','AMAVITA\L-AM-AP-SQL-AMA-Pharmacy_Servers_IT_Field'), +('Arizona','dbRoleIttechUsr','CENTRALINFRA\L-CI-AP-SQL-AMA-Pharmacy_Servers_IT_Field'), +('Arizona','dbRoleIttechUsr','CENTRALINFRA\L-CI-AP-SQL-CVI-Pharmacy_Servers_IT_Field'), +('Arizona','dbRoleIttechUsr','CENTRALINFRA\L-CI-AP-SQL-SUN-Pharmacy_Servers_IT_Field'), +('Arizona','dbRoleIttechUsr','COOP-VITALITY\L-CV-AP-SQL-CVI-Pharmacy_Servers_IT_Field'), +('Arizona','dbRoleIttechUsr','SUNSTORE\L-SU-AP-SQL-SUN-Pharmacy_Servers_IT_Field') + +DECLARE MapUsersAndRolesCurs CURSOR FOR +SELECT databasename, rolename, username FROM #AllUsersAndRoles AUAR JOIN master.sys.databases D ON D.name = AUAR.databasename + +OPEN MapUsersAndRolesCurs +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +WHILE @@FETCH_STATUS = 0 +BEGIN + + SET @Command = 'USE ' + @Database + ' +IF EXISTS (SELECT 1 FROM master.dbo.syslogins WHERE name = ''' + @username + ''') +BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @rolename + ''' AND [type] = ''R'') + BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @username + ''') + BEGIN + ALTER USER [' + @username + '] WITH LOGIN = [' + @username + '] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + ELSE + BEGIN + CREATE USER [' + @username + '] FOR LOGIN [' + @username + '] WITH DEFAULT_SCHEMA=[dbo] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + END +END +' + +EXEC sp_executesql @Command + +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +END + +CLOSE MapUsersAndRolesCurs +DEALLOCATE MapUsersAndRolesCurs + +DROP TABLE #AllUsersAndRoles +GO + + + +USE Arizona +GO + + + +/*============================================================================= + + Script to create dbRoleDevUsr role. + + Role Name: dbRoleDevUsr + TEMPLATE: Default + + EXAMPLE OF SECURABLES TO SET: + + INSERT INTO #Securables + VALUES + ('DB','GRANT','VIEW DEFINITION','',''), + ('SCHEMA','GRANT','SELECT,EXECUTE,INSERT,UPDATE,DELETE','','AP'), + ('TABLE','GRANT','INSERT,UPDATE','Address','dbo'), + ('SP','GRANT','EXECUTE','sp_bmc_GetNextID','dbo'), + ('ROLE','GRANT','db_datareader','','') + +=============================================================================*/ + +DECLARE @Command nvarchar(max), + @RoleName varchar(60), + @Users varchar(255), + @typeofobject varchar(50), + @grantordeny varchar(10), + @rightsaction varchar(255), + @objectname varchar(255), + @schemaid varchar(10), + @sysTarget varchar(255), + @sysType varchar(255) + +SET @RoleName = 'dbRoleDevUsr' +SET @Command = '' + +/* TEMP TABLES */ +CREATE TABLE #UsersOnRole(username varchar(255)) +CREATE TABLE #Securables(typeofobject varchar(50), grantordeny varchar(10), rightsaction varchar(255), objectname varchar(255), schemaid varchar(10),N2 bit) + +/* !!! LIST OF SECURABLES TO CHANGE !!! */ + +INSERT INTO #Securables +VALUES +('ROLE','GRANT','DB_DATAWRITER','','dbo',0), +('DB','GRANT','SHOWPLAN','','dbo',0), +('SP','GRANT','ALTER','%PH_Streamfact%','dbo',0), +('DB','GRANT','VIEW DEFINITION','','dbo',0), +('TABLE','GRANT','VIEW CHANGE TRACKING','Document_header','dbo',0), +('ROLE','GRANT','DB_DATAREADER','','dbo',0), +('TABLE','GRANT','VIEW CHANGE TRACKING','PH_prescription_line','dbo',0), +('DB','GRANT','EXECUTE','','dbo',0), +('TABLE','GRANT','VIEW CHANGE TRACKING','Document_line','dbo',0), +('SP','GRANT','ALTER','%PH_Invoice%','dbo',0) + +/* GET ALL USERS ON THIS ROLE */ +INSERT INTO #UsersOnRole +SELECT + members.name +FROM sys.database_role_members + JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id + JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id +WHERE roles.name = @RoleName + +/* CREATE ROLE */ +SELECT @Command = ' +IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''' + @RoleName + ''' AND type = ''R'') +BEGIN + CREATE ROLE [' + @RoleName + '] AUTHORIZATION [dbo] + PRINT ''CREATE ROLE [' + @RoleName + ']'' +END +' +EXEC sp_executesql @Command + +SET @Command = ' +DECLARE @SP_Name varchar(255) + +' + +/* SET ALL ROLE SECURABLES */ +DECLARE SecurablesCurs CURSOR FOR +SELECT typeofobject, grantordeny, rightsaction, objectname, schemaid +FROM #Securables +WHERE N2 = 0 + +OPEN SecurablesCurs +FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid +WHILE @@FETCH_STATUS = 0 +BEGIN + + /* ONLY IF SQL VERSION IS LOWER THAN 2022 AND OPERATION IS ACTION IS UNMASK */ + IF ((@rightsaction = 'UNMASK') AND (CONVERT(INT,LEFT(REPLACE(CAST(SERVERPROPERTY('ProductVersion') AS CHAR(15)),'.',''),7)) < 1600000)) + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + ELSE + BEGIN + + IF @typeofobject = 'COLUMN' + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' ON ' + @schemaid + '.' + @objectname + ' TO [' + @RoleName + '] +' + END + + IF @typeofobject = 'DB' + BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions('DATABASE') WHERE permission_name = '' + @rightsaction + '') + BEGIN + SET @Command = @Command + @grantordeny + ' ' + @rightsaction + ' TO [' + @RoleName + '] +' + END + END + + IF @typeofobject = 'SCHEMA' + BEGIN + SET @Command = @Command + ' +IF EXISTS (SELECT 1 FROM sys.schemas WHERE name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''SCHEMA'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON SCHEMA::' + @schemaid + ' TO [' + @RoleName + '] + END +END + +' + END + + IF @typeofobject in('TABLE','SP','FUNCTIONS','VIEWS') + BEGIN + + IF @objectname like '%[%]%' + BEGIN + + IF @typeofobject = 'TABLE' + BEGIN + SET @sysTarget = 'sys.tables' + SET @sysType = '' + END + + IF @typeofobject = 'SP' + BEGIN + SET @sysTarget = 'sys.procedures' + SET @sysType = '' + END + + IF @typeofobject = 'FUNCTIONS' + BEGIN + SET @sysTarget = 'sys.objects' + SET @sysType = ' and p.Type IN ( N''FN'', N''IF'', N''TF'', N''FS'', N''FT'' )' + END + + IF @typeofobject = 'VIEWS' + BEGIN + SET @sysTarget = 'sys.views' + SET @sysType = '' + END + + SET @Command = @Command + ' +DECLARE SP_cursor CURSOR FOR +SELECT p.name FROM ' + @sysTarget + ' p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE (p.name like ''' + @objectname + ''') and s.name = ''' + @schemaid + '' + @sysType + ''' + +OPEN SP_cursor +FETCH NEXT FROM SP_cursor INTO @SP_Name +WHILE @@FETCH_STATUS = 0 +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + EXEC(''' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].['' + @SP_Name + ''] TO [' + @RoleName + ']'') + END + FETCH NEXT FROM SP_cursor INTO @SP_Name +END + +CLOSE SP_cursor +DEALLOCATE SP_cursor + +' + + END + ELSE + BEGIN + + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.objects o WITH (NOLOCK) JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = ''' + @objectname + ''' AND o.type IN (N''U'',''P'',''V'',''FN'',''IF'',''TF'') AND s.name = ''' + @schemaid + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''OBJECT'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + ' ON [' + @schemaid + '].[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' + END +END + +IF @typeofobject = 'ASSEMBLIES' +BEGIN + SET @Command = @Command + ' +IF EXISTS(SELECT 1 FROM sys.assemblies WHERE NAME = ''' + @objectname + ''') +BEGIN + IF EXISTS(SELECT 1 FROM sys.fn_builtin_permissions(''ASSEMBLY'') WHERE permission_name = ''' + @rightsaction + ''') + BEGIN + ' + @grantordeny + ' ' + @rightsaction + '::[' + @objectname + '] TO [' + @RoleName + '] + END +END + +' +END + +IF @typeofobject = 'ROLE' +BEGIN + SET @Command = @Command + ' +IF NOT EXISTS (SELECT 1 FROM sys.database_role_members JOIN sys.database_principals roles ON database_role_members.role_principal_id = roles.principal_id JOIN sys.database_principals members ON database_role_members.member_principal_id = members.principal_id WHERE roles.name = ''' + @rightsaction + ''' AND members.name = ''' + @RoleName + ''') +BEGIN + EXEC sp_addrolemember N''' + @rightsaction + ''', N''' + @RoleName + ''' +END + +' +END +END + +FETCH NEXT FROM SecurablesCurs INTO @typeofobject, @grantordeny, @rightsaction, @objectname, @schemaid +END + +CLOSE SecurablesCurs +DEALLOCATE SecurablesCurs + +PRINT 'SET ALL SECURABLES ON ROLE [' + @RoleName + ']' +EXEC sp_executesql @Command + +/* ADD USER */ +DECLARE UsersCurs CURSOR FOR +SELECT username + FROM #UsersOnRole + +OPEN UsersCurs + +FETCH NEXT FROM UsersCurs INTO @Users +WHILE @@FETCH_STATUS = 0 +BEGIN + + SELECT @Command = ' +EXEC sp_addrolemember N''' + @RoleName + ''', N''' + @Users + ''' +PRINT ''ADD USER [' + @Users + '] ON ROLE [' + @RoleName + ']'' +' + +FETCH NEXT FROM UsersCurs INTO @Users +END + +CLOSE UsersCurs +DEALLOCATE UsersCurs + +EXEC sp_executesql @Command + + +/*============================================================================= + Drop temp tables +=============================================================================*/ +DROP TABLE #Securables +DROP TABLE #UsersOnRole + +/*============================================================================= + Script to create / map all users +=============================================================================*/ + +DECLARE @username varchar(255), + @Database VARCHAR(255) + +SET @username = '' +SET @Command = '' +SET @Database = '' + +CREATE TABLE #AllUsersAndRoles(databasename varchar(255), rolename varchar(255), username varchar(255)) + +INSERT INTO #AllUsersAndRoles +VALUES +('Arizona','dbRoleDevUsr','AMAVITA\L-AM-AP-SQL-AMA-Pharmacy_Servers_Development'), +('Arizona','dbRoleDevUsr','CENTRALINFRA\L-CI-AP-SQL-AMA-Pharmacy_Servers_Development'), +('Arizona','dbRoleDevUsr','CENTRALINFRA\L-CI-AP-SQL-CVI-Pharmacy_Servers_Development'), +('Arizona','dbRoleDevUsr','CENTRALINFRA\L-CI-AP-SQL-SUN-Pharmacy_Servers_Development'), +('Arizona','dbRoleDevUsr','COOP-VITALITY\L-CV-AP-SQL-CVI-Pharmacy_Servers_Development'), +('Arizona','dbRoleDevUsr','SUNSTORE\L-SU-AP-SQL-SUN-Pharmacy_Servers_Development') + +DECLARE MapUsersAndRolesCurs CURSOR FOR +SELECT databasename, rolename, username FROM #AllUsersAndRoles AUAR JOIN master.sys.databases D ON D.name = AUAR.databasename + +OPEN MapUsersAndRolesCurs +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +WHILE @@FETCH_STATUS = 0 +BEGIN + + SET @Command = 'USE ' + @Database + ' +IF EXISTS (SELECT 1 FROM master.dbo.syslogins WHERE name = ''' + @username + ''') +BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @rolename + ''' AND [type] = ''R'') + BEGIN + IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N''' + @username + ''') + BEGIN + ALTER USER [' + @username + '] WITH LOGIN = [' + @username + '] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + ELSE + BEGIN + CREATE USER [' + @username + '] FOR LOGIN [' + @username + '] WITH DEFAULT_SCHEMA=[dbo] + EXEC sp_addrolemember N''' + @rolename + ''', N''' + @username + ''' + END + END +END +' + +EXEC sp_executesql @Command + +FETCH NEXT FROM MapUsersAndRolesCurs INTO @Database, @rolename, @username +END + +CLOSE MapUsersAndRolesCurs +DEALLOCATE MapUsersAndRolesCurs + +DROP TABLE #AllUsersAndRoles +GO diff --git a/PII cleanup/roles revokes on pharmacy.sql b/PII cleanup/roles revokes on pharmacy.sql new file mode 100644 index 0000000..1c8b695 --- /dev/null +++ b/PII cleanup/roles revokes on pharmacy.sql @@ -0,0 +1,34 @@ +USE [Arizona] + +BEGIN TRANSACTION +SET XACT_ABORT ON; + +--dbRoleDevUsr +REVOKE SELECT ON [wkl].[DocumentSignature] TO [dbRoleDevUsr] +REVOKE UPDATE ON [wkl].[DocumentSignature] TO [dbRoleDevUsr] +EXEC [sys].[sp_addrolemember] @rolename = 'db_datawriter', + @membername = 'dbRoleDevUsr' +EXEC [sys].[sp_addrolemember] @rolename = 'db_datareader', + @membername = 'dbRoleDevUsr' + + +--dbRoleIttechUsr +REVOKE SELECT ON [wkl].[DocumentSignature] TO [dbRoleIttechUsr] +REVOKE UPDATE ON [wkl].[DocumentSignature] TO [dbRoleIttechUsr] + +--dbRoleTPPos +REVOKE SELECT ON [wkl].[DocumentSignature] TO [dbRoleTPPos] +REVOKE INSERT ON [wkl].[DocumentSignature] TO [dbRoleTPPos] +REVOKE SELECT ON [dbo].[Bmc_application_default] TO [dbRoleTPPos] +REVOKE UPDATE ON [dbo].[Bmc_application_default] TO [dbRoleTPPos] +REVOKE SELECT ON [dbo].[Bmc_application_key] TO [dbRoleTPPos] +REVOKE UPDATE ON [dbo].[Bmc_application_key] TO [dbRoleTPPos] +REVOKE SELECT ON [dbo].[Bmc_application_default] TO [dbRoleTPPos] +REVOKE UPDATE ON [dbo].[Bmc_application_default] TO [dbRoleTPPos] +REVOKE SELECT ON [dbo].[IT_config_setting] TO [dbRoleTPPos] +REVOKE UPDATE ON [dbo].[IT_config_setting] TO [dbRoleTPPos] +REVOKE SELECT ON [dbo].[Organizational_unit] TO [dbRoleTPPos] +REVOKE UPDATE ON [dbo].[Organizational_unit] TO [dbRoleTPPos] + +--ROLLBACK TRANSACTION +COMMIT TRANSACTION diff --git a/PULL replication perf validation/.vs/PULL replication perf validation/v15/.ssms_suo b/PULL replication perf validation/.vs/PULL replication perf validation/v15/.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..ddf013a56cfe2a0ebf1c9c10ad51bc3ea9aae847 GIT binary patch literal 29696 zcmeHQU5p!76`oC+HZ6tzK?tR#(>6`Buy*~w-lQ$@&u+3|x9h~4AE-+*wr3M3-u1@g z-6YMXm5_KrRRdC=P?6g51V}(%5D!Q^Qjk!KctHrEf`BK)6R$LU-^|>d8QWuz?Qzmg zeOG5@Jagxsd(S=h-gC}9XZC~lANcU?cOU+n)Rdl=wo4z~xLdl@c7M!vE!{6kJMo+M zKDu$^1|RVnm!q_WC~!=w;jbad(zLXKb6vW^uJoLCNjoAW-x>`S`P@!>`oRAg6jt75l(-0A6(rw8vo$Q zkJI=UoUsG-;yl3dBF6V4xX0&W{6C1_lm~dvo;d!S$35o-<`Lt67k+d6-wPOxe>?SV z?KS&Hz#ZrtaV^fAi^aA5%((2v3e)cBhX98G z%zFgqubJ2LIKKc`0OSBi0mlG&z#`x{-~`|#;1uBNfNua^1QY--0lo=14LAd^*9oWw zN)42^W|nygXG&5mzf(#>;;Bg&q-97ub)3D*Jt$gFk3jwy!xedfc#ON9kI&=r_bIR- zEds9wymOFsG)O{u>6|WuHKdX*8EHl~*CXX0@-5{FulS!sUg|DPCxCTPr$JRJ;(Qr3 zp!~Ov`jom#f0SLeNtB^DuX)A)Eb_9>Oq4q*W!544DUbtafVYa@8o0}lj8)X50sgEZ z2XpdhQDr~yQ@$c@CcV%u2l9l-l1J$!6BpZD*6R`k6>6vlWz&j|Ifx!&Pc<-F>bP3L zTjx;7LEzUBn+H*Dr?VY@r+i+Y^@`tXxnA>aW&Bz6cM<)37JuYI!H+9CCzSQy90#kL zoM7=D>65_tw)Zipd@S z70ij85voQ;mm~1&`qvY9?iIhC|C{m8gVxKyNERKoC%~8$(e9+aypqwMXqh+j?c}>b#=8`DJhLg zZAD&H>s$dA0D$x|U3aXM&fP z^-*=_vny-WD#d|bN=S#J@wO$fPKAc5HRRdZ*_={utf=+Vvki6mbXILBm8!-HFKI#T zVs&HVYB8?FLy5;Q8Bmtp39G})IHMV5b-jRA*0jQ6y`n6vsD=E|xx$fJQ7h!mDfMNg zbfu7;3WuU0IUuK%(uK8EIaO*@*4121JAF)5$~uOtAu|PdZaRo(*ET{Ep^X`(s;O^T z*z@`Myu4bkomWc@AZX>=-8qwM~IwpQ%r_2fjvc>O1CHTQ#WwMMP3%8EX^Fd|Ra zF}h^TJaTR!-%D-7A<^3NZq=PWm780bT?DbK6-*%{XHn5qP1Y(etHz|^wO1n(k*GnO zU%6o$oH$OR1k1%*Faz>5)Xljlw^kHWwJWVU*`Fy3Ms)2Ot#C;~{-MtARsLB=-fx@b zor1Jeh5n&H(z}2orO*XeX|uHw!v0O%OszRu@66)XYv%2FXz#}*xkcZRZJJnX3DzCT zp9W^*XgzVin!_WmJ50UkUp3IDtZRa6x)#XypNITO``aFX*Y+#OE9CEy{=en*|FK)F z|LgjX7z1FfuF0pU-EBnmqNcO;D`yjR2g!2LMG8eySG_A&nK_^p!q zzY=ZtI{x~{)c(yu@Q>#IEkFP3`>*}Z|A#T6%J`#QF^`pa1?wJd9=ua`wK`aQ2>a(4 zZT{RJ_R9bE@s~DN{{%I+z0lGpY~er8!$E7Ifb2- zwW)fLM1pYx~((!v5^UzldH~)2+P3 zPk)TMzBAA|?}|EvK!3^-PXfH+xA%Xu{p+OO=d>-;2Hri%ebAr#nS%b!_-Wl%QHKkl zbxpUw*{$uZ_1TB^b3d2+TVC5wdePRv)Qq1pcPD$R@s@QI@;7laSx?-rC@%{6Z__qm zStP=dX* ze=?HT5cIUpoGoav9ZqWIzxMoZw?sSZ5$j|8(OxL{uNl9AiTg~3CsqpMa8;VeFZxFr zckMOc{)55!#?k)F?RpFk#QbM(**wNQcj1hkkRY^D?nSI%J}6^VA zjz89my~@;G{^BmTd!qiyJ$M=56+h=yp?{CYe~U@GSKF#{Lfqoxe+%yajosq?KYiSZ zIS50mYw9Hb-0c0ok^JxUbJ&9NzwS>>pDM5Ozu)q|;C-+7JMsTkl>d8ezu)pdP079Z zKiK7ez3v0}e>BVQT_-gs@O`5v z8tp=s#kBxw_&BT+b9hb-nXwY|kh5}hFM;n_lD&*~>Dg8RK9*O*v(u*bT?Q6P{4)M> zkdgB?CxtNwi=D~9y|aL-X()sSs{)u=!KPIR?*EfGhH%GFB7`}qpc`3O^(vk%;=N^{ zFG#PTA{yRG!Z+?6(@A~bI-${RHs(%JVpkJQ`Psj>Lamm%w(5kcjO6kZof=>IMHz=6o+$J4kUhnM6^M3fR*~V(fe@kfbSx|*Kzi7P^ulNP}kFhEAA@Yi!w(29MNoN5*hUa15 zp#59Op2ElX1g4^HiS~Em<(ldhKlcl1gJEj6zidJK&nEAAZ9i8KAMHOq<0sueF7_YR z!?~ieb~i8ifm`shz1D-=vzIgM>#+f;FZj6MdXoO!Q8L6RuEFaNh4T2D2T-Q7MQ2~7Re1$=gobnvyxKi__)bm+&|e{p^HE3duNLqYE% zuYn&IW74TXsY_>G4XZhibm|rTw|#g;zf2Bc40*v^!DulzBzwy68e*@8)vCIM`Y4ub zY5){shl!HGTkK!L-g%(Y&{h?crX0Xe}~sh z?cNai7)2-Y?M2?J@Vbd3s$&YWM+Q=72yaKA4y7Q22Jm|l&!V_W;V+5%+tbv zl*f^AWDVR|-IV1e={a);>wqrD_KG8bn4^S_EsWzNYRI~!P_JuHbIQ0u|ClT~i48KY1Dcp_qKy9PdeqyDR+H0%HAFTf* z>OQS=Z(6@5_lEJ8)!UlVpQUh*qaX#y=D+p_yZ_`5nCPfR5<_r=72$ zrY&m-rC^-G#*jAGEgxrumcZ#<_i|RsW%#OVrFvzR5g)p1vk2!n(mV!j&Z)iI0!pTx_r2;=%2s|BOCeIHoO3ol?OWanqAe(5d%1Z%dM6>U4{@YBNji z!CLE#z^CkZLSK!-kZ!ngbGM>77wS;x8mU=L&b7AQk8dRr^u_^}A45#fYk(@wZgT>NMA{-x>fCll;i$2%><7wWkGxl};$HOhP zDd?b9dnj`c15W~Ui`eiyH55E)Xmv@fDM9I{P>tD^JEZU3hWbMf3voMj;mzBUB;EWK z5gVV5ry%oAr=d)xr%h!lC6p=Q3;xz^NF8s}{pQyLx+qU?+{P4Y6Q|!sylpqCoJ#m; z+G(*;+#zL0RB55gQJ2ZQPuVLmKJI^sE1iWc+jmnO`eIj&)1~PHYR1{o4BpNBHFWWO z=m@&V|9!Khx0P~G4jrwa?N-o5LHyQ5xWCyj9vvSaN}(5rG$FbZU{H=5$^4yU{+9U9 z)^MjjIS?V5LoIw1{|PO>H3|E5>l1HxyxFha%cAe3|8^Aa?PeTy6#7Z|k0%bR5O>Qh zyAa(v{l}BVZgEO?>K32sqkr3fO}pJ7UR$C(#-#XP@1(x>K53&53MkHn)0+bBp!us>APbL8OhLSG|(xw?d}r54bRDbOqgTWtt?XaRuux(L0I zWYE;wdop&CPUGue{Mtj=Mge-#uQt`JlRxA%zVn?!-4^gaOcqVN+?&$il_R5Mdgmyp zGovi%nkEA(`2GX0ExOZx`;3WI_`MGv%#zi;TP!S${M!XO(b})+yJ*(4C-BVwo~JLF zlf$@QIt)BFXC{uIkLZJD(T!eXulK+&S}~hY{q|<@E=bc{lgxz+QVp4|MAcd zk)E{{9!kG{NO58-zk3Yk;2s>DjkvZM-)9*ligOqgj$!qW+9>?kP2?kCq+J-KHn zc%slQsL5D(_ + +$ErrorActionPreference = "Stop" + +$phcy="SWCVI501VM01" +$phcyDB = $phcy+"\APSSQL" +$phcySnapshotFolder="\\cvi501aps-replinibackup\Replinibackup" + +$publicationTpl=@" +-- Enabling the replication database +use master +exec sp_replicationdboption @dbname = N'ActivePos_read', @optname = N'publish', @value = N'true' + + +-- Adding the transactional publication +use [ActivePos_read] + +EXEC [sys].[sp_addpublication] @publication = N'tst', + @description = N'Transactional publication of database ''ActivePos_Read''', + @sync_method = N'concurrent', + @retention = 120, + @allow_push = N'true', --refuse push distribution + @allow_pull = N'true', --accept pull distribution + @allow_anonymous = N'true', + @enabled_for_internet = N'false', + @snapshot_in_defaultfolder = N'true', --snapshot is made in local folder... + @alt_snapshot_folder = N'$($phcySnapshotFolder)', --and then pushed to alternate folder + @compress_snapshot = N'true', --snapshot is compressed + @ftp_port = 21, + @ftp_login = N'anonymous', + @allow_subscription_copy = N'false', + @add_to_active_directory = N'false', + @repl_freq = N'continuous', + @status = N'active', + @independent_agent = N'true', + @immediate_sync = N'true', + @allow_sync_tran = N'false', + @autogen_sync_procs = N'false', + @allow_queued_tran = N'false', + @allow_dts = N'false', + @replicate_ddl = 1, + @allow_initialize_from_backup = N'false', + @enabled_for_p2p = N'false', + @enabled_for_het_sub = N'false' + + +EXEC [sys].[sp_addpublication_snapshot] @publication = N'tst', + @frequency_type = 4, --frequency of automatic exec, 4 = daily + @frequency_interval = 1, --interval between auto execution, 1 = use freqency_interval + @frequency_relative_interval = 1, --the date the Snapshot Agent runs + @frequency_recurrence_factor = 0, --the recurrence factor used by frequency_type + @frequency_subday = 1, --the unit for freq_subday_interval, 1 = once + @frequency_subday_interval = 1, --the interval for frequency_subday, 1 = every minute + @active_start_time_of_day = 63000, --start time of the agent. 06:30:00 + @active_end_time_of_day = 235959, --end time of the agent. 23:59:59 + @active_start_date = 0, --the date when the Snapshot Agent is first scheduled, formatted as YYYYMMDD, default = 0 + @active_end_date = 0, -- the date when the Snapshot Agent stops being scheduled, formatted as YYYYMMDD + @job_login = NULL, + @job_password = NULL, + @publisher_security_mode = 1;--the security mode used by the agent when connecting to the Publisher, 0 = sql server auth, 1 = Windows Authentication, default 1 + + +-- Adding the transactional articles +-- region articles +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Brand', @source_owner = N'dbo', @source_object = N'Brand', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Brand', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboBrand]', @del_cmd = N'CALL [sp_MSdel_dboBrand]', @upd_cmd = N'SCALL [sp_MSupd_dboBrand]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'BrevierText', @source_owner = N'dbo', @source_object = N'BrevierText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'BrevierText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboBrevierText]', @del_cmd = N'CALL [sp_MSdel_dboBrevierText]', @upd_cmd = N'SCALL [sp_MSupd_dboBrevierText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ClinicalCheck', @source_owner = N'dbo', @source_object = N'ClinicalCheck', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ClinicalCheck', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboClinicalCheck]', @del_cmd = N'CALL [sp_MSdel_dboClinicalCheck]', @upd_cmd = N'SCALL [sp_MSupd_dboClinicalCheck]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ClinicalCheckToPatient', @source_owner = N'dbo', @source_object = N'ClinicalCheckToPatient', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ClinicalCheckToPatient', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboClinicalCheckToPatient]', @del_cmd = N'CALL [sp_MSdel_dboClinicalCheckToPatient]', @upd_cmd = N'SCALL [sp_MSupd_dboClinicalCheckToPatient]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ClinicalCheckType', @source_owner = N'dbo', @source_object = N'ClinicalCheckType', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ClinicalCheckType', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboClinicalCheckType]', @del_cmd = N'CALL [sp_MSdel_dboClinicalCheckType]', @upd_cmd = N'SCALL [sp_MSupd_dboClinicalCheckType]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'CommonVar', @source_owner = N'dbo', @source_object = N'CommonVar', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'CommonVar', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboCommonVar]', @del_cmd = N'CALL [sp_MSdel_dboCommonVar]', @upd_cmd = N'SCALL [sp_MSupd_dboCommonVar]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Criteria', @source_owner = N'dbo', @source_object = N'Criteria', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Criteria', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboCriteria]', @del_cmd = N'CALL [sp_MSdel_dboCriteria]', @upd_cmd = N'SCALL [sp_MSupd_dboCriteria]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'CustomerCard', @source_owner = N'dbo', @source_object = N'CustomerCard', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'CustomerCard', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboCustomerCard]', @del_cmd = N'CALL [sp_MSdel_dboCustomerCard]', @upd_cmd = N'SCALL [sp_MSupd_dboCustomerCard]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'CustomerReminder', @source_owner = N'dbo', @source_object = N'CustomerReminder', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'CustomerReminder', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboCustomerReminder]', @del_cmd = N'CALL [sp_MSdel_dboCustomerReminder]', @upd_cmd = N'SCALL [sp_MSupd_dboCustomerReminder]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DatabaseHistory', @source_owner = N'upd', @source_object = N'DatabaseHistory', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'DatabaseHistory', @destination_owner = N'upd', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_updDatabaseHistory]', @del_cmd = N'CALL [sp_MSdel_updDatabaseHistory]', @upd_cmd = N'SCALL [sp_MSupd_updDatabaseHistory]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucher', @source_owner = N'dbo', @source_object = N'DiscountVoucher', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucher', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucher]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucher]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucher]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherActionDefinition', @source_owner = N'dbo', @source_object = N'DiscountVoucherActionDefinition', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherActionDefinition', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherActionDefinition]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherActionDefinition]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherActionDefinition]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherActionDefinitionSpecificTargetItem', @source_owner = N'dbo', @source_object = N'DiscountVoucherActionDefinitionSpecificTargetItem', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherActionDefinitionSpecificTargetItem', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherActionDefinitionSpecificTargetItem]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherActionDefinitionSpecificTargetItem]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherActionDefinitionSpecificTargetItem]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherCondition', @source_owner = N'dbo', @source_object = N'DiscountVoucherCondition', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherCondition', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherCondition]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherCondition]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherCondition]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherCouponActionDefinition', @source_owner = N'dbo', @source_object = N'DiscountVoucherCouponActionDefinition', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherCouponActionDefinition', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherCouponActionDefinition]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherCouponActionDefinition]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherCouponActionDefinition]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherCouponActionDefinitionPrinting', @source_owner = N'dbo', @source_object = N'DiscountVoucherCouponActionDefinitionPrinting', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherCouponActionDefinitionPrinting', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherCouponActionDefinitionPrinting]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherCouponActionDefinitionPrinting]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherCouponActionDefinitionPrinting]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherCouponActionDefinitionText', @source_owner = N'dbo', @source_object = N'DiscountVoucherCouponActionDefinitionText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherCouponActionDefinitionText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherCouponActionDefinitionText]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherCouponActionDefinitionText]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherCouponActionDefinitionText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherPackageElement', @source_owner = N'dbo', @source_object = N'DiscountVoucherPackageElement', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherPackageElement', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherPackageElement]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherPackageElement]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherPackageElement]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'DiscountVoucherText', @source_owner = N'dbo', @source_object = N'DiscountVoucherText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'DiscountVoucherText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboDiscountVoucherText]', @del_cmd = N'CALL [sp_MSdel_dboDiscountVoucherText]', @upd_cmd = N'SCALL [sp_MSupd_dboDiscountVoucherText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIBill_Pharmacists_Header', @source_owner = N'dbo', @source_object = N'IIIBill_Pharmacists_Header', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIBill_Pharmacists_Header', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIBill_Pharmacists_Header]', @del_cmd = N'CALL [sp_MSdel_dboIIIBill_Pharmacists_Header]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIBill_Pharmacists_Header]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICommon_Bank_PTT_Master', @source_owner = N'dbo', @source_object = N'IIICommon_Bank_PTT_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICommon_Bank_PTT_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICommon_Bank_PTT_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIICommon_Bank_PTT_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICommon_Bank_PTT_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICommunicationItem', @source_owner = N'dbo', @source_object = N'IIICommunicationItem', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICommunicationItem', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICommunicationItem]', @del_cmd = N'CALL [sp_MSdel_dboIIICommunicationItem]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICommunicationItem]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICountry_Master', @source_owner = N'dbo', @source_object = N'IIICountry_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICountry_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICountry_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIICountry_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICountry_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICoverage_Documents', @source_owner = N'dbo', @source_object = N'IIICoverage_Documents', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICoverage_Documents', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICoverage_Documents]', @del_cmd = N'CALL [sp_MSdel_dboIIICoverage_Documents]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICoverage_Documents]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICurrency_Master', @source_owner = N'dbo', @source_object = N'IIICurrency_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICurrency_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICurrency_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIICurrency_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICurrency_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICustomer', @source_owner = N'dbo', @source_object = N'IIICustomer', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICustomer', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICustomer]', @del_cmd = N'CALL [sp_MSdel_dboIIICustomer]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICustomer]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICustomerCategory', @source_owner = N'dbo', @source_object = N'IIICustomerCategory', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICustomerCategory', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICustomerCategory]', @del_cmd = N'CALL [sp_MSdel_dboIIICustomerCategory]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICustomerCategory]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICustomerGroup', @source_owner = N'dbo', @source_object = N'IIICustomerGroup', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIICustomerGroup', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICustomerGroup]', @del_cmd = N'CALL [sp_MSdel_dboIIICustomerGroup]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICustomerGroup]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIICustomerToPerson', @source_owner = N'dbo', @source_object = N'IIICustomerToPerson', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'IIICustomerToPerson', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIICustomerToPerson]', @del_cmd = N'CALL [sp_MSdel_dboIIICustomerToPerson]', @upd_cmd = N'SCALL [sp_MSupd_dboIIICustomerToPerson]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIDelivery_Note_Header', @source_owner = N'dbo', @source_object = N'IIIDelivery_Note_Header', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIDelivery_Note_Header', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIDelivery_Note_Header]', @del_cmd = N'CALL [sp_MSdel_dboIIIDelivery_Note_Header]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIDelivery_Note_Header]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIDiscountOperation', @source_owner = N'dbo', @source_object = N'IIIDiscountOperation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIDiscountOperation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIDiscountOperation]', @del_cmd = N'CALL [sp_MSdel_dboIIIDiscountOperation]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIDiscountOperation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIDiscountSchemaDetail', @source_owner = N'dbo', @source_object = N'IIIDiscountSchemaDetail', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIDiscountSchemaDetail', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIDiscountSchemaDetail]', @del_cmd = N'CALL [sp_MSdel_dboIIIDiscountSchemaDetail]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIDiscountSchemaDetail]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIExchange_rate', @source_owner = N'dbo', @source_object = N'IIIExchange_rate', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIExchange_rate', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIExchange_rate]', @del_cmd = N'CALL [sp_MSdel_dboIIIExchange_rate]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIExchange_rate]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIGaldatCode11', @source_owner = N'dbo', @source_object = N'IIIGaldatCode11', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIGaldatCode11', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIGaldatCode11]', @del_cmd = N'CALL [sp_MSdel_dboIIIGaldatCode11]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIGaldatCode11]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsurance_Master', @source_owner = N'dbo', @source_object = N'IIIInsurance_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsurance_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsurance_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsurance_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsurance_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsuranceAgreement', @source_owner = N'dbo', @source_object = N'IIIInsuranceAgreement', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsuranceAgreement', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsuranceAgreement]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsuranceAgreement]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsuranceAgreement]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsuranceCodeException', @source_owner = N'dbo', @source_object = N'IIIInsuranceCodeException', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsuranceCodeException', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsuranceCodeException]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsuranceCodeException]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsuranceCodeException]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsuranceGroup', @source_owner = N'dbo', @source_object = N'IIIInsuranceGroup', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsuranceGroup', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsuranceGroup]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsuranceGroup]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsuranceGroup]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsuranceGroupLink', @source_owner = N'dbo', @source_object = N'IIIInsuranceGroupLink', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsuranceGroupLink', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsuranceGroupLink]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsuranceGroupLink]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsuranceGroupLink]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIInsuranceTaxLink', @source_owner = N'dbo', @source_object = N'IIIInsuranceTaxLink', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIInsuranceTaxLink', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIInsuranceTaxLink]', @del_cmd = N'CALL [sp_MSdel_dboIIIInsuranceTaxLink]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIInsuranceTaxLink]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIItemCommercialRule', @source_owner = N'dbo', @source_object = N'IIIItemCommercialRule', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIItemCommercialRule', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIItemCommercialRule]', @del_cmd = N'CALL [sp_MSdel_dboIIIItemCommercialRule]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIItemCommercialRule]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIItemLink', @source_owner = N'dbo', @source_object = N'IIIItemLink', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIItemLink', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIItemLink]', @del_cmd = N'CALL [sp_MSdel_dboIIIItemLink]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIItemLink]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIItemRelation', @source_owner = N'dbo', @source_object = N'IIIItemRelation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIItemRelation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIItemRelation]', @del_cmd = N'CALL [sp_MSdel_dboIIIItemRelation]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIItemRelation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIManufacturer', @source_owner = N'dbo', @source_object = N'IIIManufacturer', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIManufacturer', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIManufacturer]', @del_cmd = N'CALL [sp_MSdel_dboIIIManufacturer]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIManufacturer]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIINetwork_Registration_Detail', @source_owner = N'dbo', @source_object = N'IIINetwork_Registration_Detail', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIINetwork_Registration_Detail', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIINetwork_Registration_Detail]', @del_cmd = N'CALL [sp_MSdel_dboIIINetwork_Registration_Detail]', @upd_cmd = N'SCALL [sp_MSupd_dboIIINetwork_Registration_Detail]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIINetworkDiscount', @source_owner = N'dbo', @source_object = N'IIINetworkDiscount', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIINetworkDiscount', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIINetworkDiscount]', @del_cmd = N'CALL [sp_MSdel_dboIIINetworkDiscount]', @upd_cmd = N'SCALL [sp_MSupd_dboIIINetworkDiscount]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPartner_Item_Details', @source_owner = N'dbo', @source_object = N'IIIPartner_Item_Details', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPartner_Item_Details', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPartner_Item_Details]', @del_cmd = N'CALL [sp_MSdel_dboIIIPartner_Item_Details]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPartner_Item_Details]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPartner_Stock_Details', @source_owner = N'dbo', @source_object = N'IIIPartner_Stock_Details', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPartner_Stock_Details', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPartner_Stock_Details]', @del_cmd = N'CALL [sp_MSdel_dboIIIPartner_Stock_Details]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPartner_Stock_Details]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPatient_Insurance', @source_owner = N'dbo', @source_object = N'IIIPatient_Insurance', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPatient_Insurance', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPatient_Insurance]', @del_cmd = N'CALL [sp_MSdel_dboIIIPatient_Insurance]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPatient_Insurance]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPayment', @source_owner = N'dbo', @source_object = N'IIIPayment', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'IIIPayment', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPayment]', @del_cmd = N'CALL [sp_MSdel_dboIIIPayment]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPayment]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPerson', @source_owner = N'dbo', @source_object = N'IIIPerson', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPerson', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPerson]', @del_cmd = N'CALL [sp_MSdel_dboIIIPerson]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPerson]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPerson_Title', @source_owner = N'dbo', @source_object = N'IIIPerson_Title', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPerson_Title', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPerson_Title]', @del_cmd = N'CALL [sp_MSdel_dboIIIPerson_Title]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPerson_Title]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPharmaceutical_Master', @source_owner = N'dbo', @source_object = N'IIIPharmaceutical_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPharmaceutical_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPharmaceutical_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIIPharmaceutical_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPharmaceutical_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPharmacy', @source_owner = N'dbo', @source_object = N'IIIPharmacy', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPharmacy', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPharmacy]', @del_cmd = N'CALL [sp_MSdel_dboIIIPharmacy]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPharmacy]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPhysician', @source_owner = N'dbo', @source_object = N'IIIPhysician', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPhysician', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPhysician]', @del_cmd = N'CALL [sp_MSdel_dboIIIPhysician]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPhysician]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPrescription_hdr', @source_owner = N'dbo', @source_object = N'IIIPrescription_hdr', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPrescription_hdr', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPrescription_hdr]', @del_cmd = N'CALL [sp_MSdel_dboIIIPrescription_hdr]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPrescription_hdr]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPrice', @source_owner = N'dbo', @source_object = N'IIIPrice', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPrice', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPrice]', @del_cmd = N'CALL [sp_MSdel_dboIIIPrice]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPrice]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPriceCode', @source_owner = N'dbo', @source_object = N'IIIPriceCode', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPriceCode', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPriceCode]', @del_cmd = N'CALL [sp_MSdel_dboIIIPriceCode]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPriceCode]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIPriceModifier', @source_owner = N'dbo', @source_object = N'IIIPriceModifier', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIPriceModifier', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIPriceModifier]', @del_cmd = N'CALL [sp_MSdel_dboIIIPriceModifier]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIPriceModifier]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIProduct_Form', @source_owner = N'dbo', @source_object = N'IIIProduct_Form', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIProduct_Form', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIProduct_Form]', @del_cmd = N'CALL [sp_MSdel_dboIIIProduct_Form]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIProduct_Form]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIRayon_Code_Master', @source_owner = N'dbo', @source_object = N'IIIRayon_Code_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIRayon_Code_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIRayon_Code_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIIRayon_Code_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIRayon_Code_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIRefundException', @source_owner = N'dbo', @source_object = N'IIIRefundException', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIRefundException', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIRefundException]', @del_cmd = N'CALL [sp_MSdel_dboIIIRefundException]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIRefundException]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIRepetition_Info', @source_owner = N'dbo', @source_object = N'IIIRepetition_Info', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIRepetition_Info', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIRepetition_Info]', @del_cmd = N'CALL [sp_MSdel_dboIIIRepetition_Info]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIRepetition_Info]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISales_Order_Detail', @source_owner = N'dbo', @source_object = N'IIISales_Order_Detail', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISales_Order_Detail', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISales_Order_Detail]', @del_cmd = N'CALL [sp_MSdel_dboIIISales_Order_Detail]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISales_Order_Detail]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISales_Order_Detail_Additional_Info', @source_owner = N'dbo', @source_object = N'IIISales_Order_Detail_Additional_Info', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISales_Order_Detail_Additional_Info', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISales_Order_Detail_Additional_Info]', @del_cmd = N'CALL [sp_MSdel_dboIIISales_Order_Detail_Additional_Info]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISales_Order_Detail_Additional_Info]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISales_Order_Header', @source_owner = N'dbo', @source_object = N'IIISales_Order_Header', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISales_Order_Header', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISales_Order_Header]', @del_cmd = N'CALL [sp_MSdel_dboIIISales_Order_Header]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISales_Order_Header]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIService_Master', @source_owner = N'dbo', @source_object = N'IIIService_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIService_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIService_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIIService_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIService_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISmall_Expense_Master', @source_owner = N'dbo', @source_object = N'IIISmall_Expense_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISmall_Expense_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISmall_Expense_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIISmall_Expense_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISmall_Expense_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISpecialDiscountSchema', @source_owner = N'dbo', @source_object = N'IIISpecialDiscountSchema', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISpecialDiscountSchema', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISpecialDiscountSchema]', @del_cmd = N'CALL [sp_MSdel_dboIIISpecialDiscountSchema]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISpecialDiscountSchema]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIISpecialDiscountSchemaDetail', @source_owner = N'dbo', @source_object = N'IIISpecialDiscountSchemaDetail', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIISpecialDiscountSchemaDetail', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIISpecialDiscountSchemaDetail]', @del_cmd = N'CALL [sp_MSdel_dboIIISpecialDiscountSchemaDetail]', @upd_cmd = N'SCALL [sp_MSupd_dboIIISpecialDiscountSchemaDetail]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIStorage_Area', @source_owner = N'dbo', @source_object = N'IIIStorage_Area', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIStorage_Area', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIStorage_Area]', @del_cmd = N'CALL [sp_MSdel_dboIIIStorage_Area]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIStorage_Area]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIITax', @source_owner = N'dbo', @source_object = N'IIITax', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIITax', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIITax]', @del_cmd = N'CALL [sp_MSdel_dboIIITax]', @upd_cmd = N'SCALL [sp_MSupd_dboIIITax]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIUserDetails', @source_owner = N'dbo', @source_object = N'IIIUserDetails', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIUserDetails', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIUserDetails]', @del_cmd = N'CALL [sp_MSdel_dboIIIUserDetails]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIUserDetails]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIVat_Code_Master', @source_owner = N'dbo', @source_object = N'IIIVat_Code_Master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIVat_Code_Master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIVat_Code_Master]', @del_cmd = N'CALL [sp_MSdel_dboIIIVat_Code_Master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIVat_Code_Master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'IIIZip_master', @source_owner = N'dbo', @source_object = N'IIIZip_master', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'IIIZip_master', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboIIIZip_master]', @del_cmd = N'CALL [sp_MSdel_dboIIIZip_master]', @upd_cmd = N'SCALL [sp_MSupd_dboIIIZip_master]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'InsuranceNetwork', @source_owner = N'dbo', @source_object = N'InsuranceNetwork', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'InsuranceNetwork', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboInsuranceNetwork]', @del_cmd = N'CALL [sp_MSdel_dboInsuranceNetwork]', @upd_cmd = N'SCALL [sp_MSupd_dboInsuranceNetwork]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Interaction', @source_owner = N'dbo', @source_object = N'Interaction', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Interaction', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboInteraction]', @del_cmd = N'CALL [sp_MSdel_dboInteraction]', @upd_cmd = N'SCALL [sp_MSupd_dboInteraction]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemComposition', @source_owner = N'dbo', @source_object = N'ItemComposition', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemComposition', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemComposition]', @del_cmd = N'CALL [sp_MSdel_dboItemComposition]', @upd_cmd = N'SCALL [sp_MSupd_dboItemComposition]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemInformation', @source_owner = N'dbo', @source_object = N'ItemInformation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemInformation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemInformation]', @del_cmd = N'CALL [sp_MSdel_dboItemInformation]', @upd_cmd = N'SCALL [sp_MSupd_dboItemInformation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemInteraction', @source_owner = N'dbo', @source_object = N'ItemInteraction', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemInteraction', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemInteraction]', @del_cmd = N'CALL [sp_MSdel_dboItemInteraction]', @upd_cmd = N'SCALL [sp_MSupd_dboItemInteraction]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemLimitation', @source_owner = N'dbo', @source_object = N'ItemLimitation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemLimitation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemLimitation]', @del_cmd = N'CALL [sp_MSdel_dboItemLimitation]', @upd_cmd = N'SCALL [sp_MSupd_dboItemLimitation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemLocation', @source_owner = N'dbo', @source_object = N'ItemLocation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemLocation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemLocation]', @del_cmd = N'CALL [sp_MSdel_dboItemLocation]', @upd_cmd = N'SCALL [sp_MSupd_dboItemLocation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemRegulation', @source_owner = N'dbo', @source_object = N'ItemRegulation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemRegulation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemRegulation]', @del_cmd = N'CALL [sp_MSdel_dboItemRegulation]', @upd_cmd = N'SCALL [sp_MSupd_dboItemRegulation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemSearch', @source_owner = N'dbo', @source_object = N'ItemSearch', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemSearch', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemSearch]', @del_cmd = N'CALL [sp_MSdel_dboItemSearch]', @upd_cmd = N'SCALL [sp_MSupd_dboItemSearch]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemSite', @source_owner = N'dbo', @source_object = N'ItemSite', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemSite', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemSite]', @del_cmd = N'CALL [sp_MSdel_dboItemSite]', @upd_cmd = N'SCALL [sp_MSupd_dboItemSite]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ItemText', @source_owner = N'dbo', @source_object = N'ItemText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ItemText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboItemText]', @del_cmd = N'CALL [sp_MSdel_dboItemText]', @upd_cmd = N'SCALL [sp_MSupd_dboItemText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'MigrationScriptHistory', @source_owner = N'upd', @source_object = N'MigrationScriptHistory', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'MigrationScriptHistory', @destination_owner = N'upd', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_updMigrationScriptHistory]', @del_cmd = N'CALL [sp_MSdel_updMigrationScriptHistory]', @upd_cmd = N'SCALL [sp_MSupd_updMigrationScriptHistory]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ModifierDefinition', @source_owner = N'dbo', @source_object = N'ModifierDefinition', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ModifierDefinition', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboModifierDefinition]', @del_cmd = N'CALL [sp_MSdel_dboModifierDefinition]', @upd_cmd = N'SCALL [sp_MSupd_dboModifierDefinition]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'ModifierExclusion', @source_owner = N'dbo', @source_object = N'ModifierExclusion', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'ModifierExclusion', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboModifierExclusion]', @del_cmd = N'CALL [sp_MSdel_dboModifierExclusion]', @upd_cmd = N'SCALL [sp_MSupd_dboModifierExclusion]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'NumeraryValue', @source_owner = N'dbo', @source_object = N'NumeraryValue', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'NumeraryValue', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboNumeraryValue]', @del_cmd = N'CALL [sp_MSdel_dboNumeraryValue]', @upd_cmd = N'SCALL [sp_MSupd_dboNumeraryValue]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Operation', @source_owner = N'dbo', @source_object = N'Operation', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Operation', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboOperation]', @del_cmd = N'CALL [sp_MSdel_dboOperation]', @upd_cmd = N'SCALL [sp_MSupd_dboOperation]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'OperationRole', @source_owner = N'dbo', @source_object = N'OperationRole', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'OperationRole', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboOperationRole]', @del_cmd = N'CALL [sp_MSdel_dboOperationRole]', @upd_cmd = N'SCALL [sp_MSupd_dboOperationRole]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'OuManager', @source_owner = N'dbo', @source_object = N'OuManager', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'OuManager', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboOuManager]', @del_cmd = N'CALL [sp_MSdel_dboOuManager]', @upd_cmd = N'SCALL [sp_MSupd_dboOuManager]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'PatientQuickInfo', @source_owner = N'dbo', @source_object = N'PatientQuickInfo', @type = N'view schema only', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @destination_table = N'PatientQuickInfo', @destination_owner = N'dbo', @status = 16 +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'PharmacyItemLink', @source_owner = N'dbo', @source_object = N'PharmacyItemLink', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'PharmacyItemLink', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboPharmacyItemLink]', @del_cmd = N'CALL [sp_MSdel_dboPharmacyItemLink]', @upd_cmd = N'SCALL [sp_MSupd_dboPharmacyItemLink]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'PointOfSale', @source_owner = N'dbo', @source_object = N'PointOfSale', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'PointOfSale', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboPointOfSale]', @del_cmd = N'CALL [sp_MSdel_dboPointOfSale]', @upd_cmd = N'SCALL [sp_MSupd_dboPointOfSale]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Posology', @source_owner = N'dbo', @source_object = N'Posology', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Posology', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboPosology]', @del_cmd = N'CALL [sp_MSdel_dboPosology]', @upd_cmd = N'SCALL [sp_MSupd_dboPosology]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'PrescriberRole', @source_owner = N'dbo', @source_object = N'PrescriberRole', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'PrescriberRole', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboPrescriberRole]', @del_cmd = N'CALL [sp_MSdel_dboPrescriberRole]', @upd_cmd = N'SCALL [sp_MSupd_dboPrescriberRole]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'QrCodes', @source_owner = N'dbo', @source_object = N'QrCodes', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'QrCodes', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboQrCodes]', @del_cmd = N'CALL [sp_MSdel_dboQrCodes]', @upd_cmd = N'SCALL [sp_MSupd_dboQrCodes]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Report', @source_owner = N'dbo', @source_object = N'Report', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Report', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboReport]', @del_cmd = N'CALL [sp_MSdel_dboReport]', @upd_cmd = N'SCALL [sp_MSupd_dboReport]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Role', @source_owner = N'dbo', @source_object = N'Role', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Role', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboRole]', @del_cmd = N'CALL [sp_MSdel_dboRole]', @upd_cmd = N'SCALL [sp_MSupd_dboRole]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'RunOnceScriptHistory', @source_owner = N'upd', @source_object = N'RunOnceScriptHistory', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'RunOnceScriptHistory', @destination_owner = N'upd', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_updRunOnceScriptHistory]', @del_cmd = N'CALL [sp_MSdel_updRunOnceScriptHistory]', @upd_cmd = N'SCALL [sp_MSupd_updRunOnceScriptHistory]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'StandardText', @source_owner = N'dbo', @source_object = N'StandardText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'StandardText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboStandardText]', @del_cmd = N'CALL [sp_MSdel_dboStandardText]', @upd_cmd = N'SCALL [sp_MSupd_dboStandardText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'StandardTextText', @source_owner = N'dbo', @source_object = N'StandardTextText', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'StandardTextText', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboStandardTextText]', @del_cmd = N'CALL [sp_MSdel_dboStandardTextText]', @upd_cmd = N'SCALL [sp_MSupd_dboStandardTextText]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'Substance', @source_owner = N'dbo', @source_object = N'Substance', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'Substance', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboSubstance]', @del_cmd = N'CALL [sp_MSdel_dboSubstance]', @upd_cmd = N'SCALL [sp_MSupd_dboSubstance]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'UserRole', @source_owner = N'dbo', @source_object = N'UserRole', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'UserRole', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboUserRole]', @del_cmd = N'CALL [sp_MSdel_dboUserRole]', @upd_cmd = N'SCALL [sp_MSupd_dboUserRole]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'VestaVersion', @source_owner = N'vesta', @source_object = N'VestaVersion', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'manual', @destination_table = N'VestaVersion', @destination_owner = N'vesta', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_vestaVestaVersion]', @del_cmd = N'CALL [sp_MSdel_vestaVestaVersion]', @upd_cmd = N'SCALL [sp_MSupd_vestaVestaVersion]' +GO +use [ActivePos_read] +exec sp_addarticle @publication = N'tst', @article = N'WebService', @source_owner = N'dbo', @source_object = N'WebService', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x00000000080351FF, @identityrangemanagementoption = N'none', @destination_table = N'WebService', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboWebService]', @del_cmd = N'CALL [sp_MSdel_dboWebService]', @upd_cmd = N'SCALL [sp_MSupd_dboWebService]' +GO +-- endregion + +"@ + +$subTplOnServer=@" +use ActivePos_read +--exec sp_replicationdboption @dbname = N'ActivePos_read', @optname = N'publish', @value = N'true' + +EXEC sp_addsubscription @publication = N'tst' +, @subscriber = N'@@posName@@' +, @destination_db = N'activepos_read' +, @sync_type = N'Automatic' +, @subscription_type = N'pull' +, @update_mode = N'read only' + +"@ + +$subTplOnPos = @" +USE [activepos_read]; + +-----------------BEGIN: Script to be run at Subscriber ----------------- +EXEC [sys].[sp_addpullsubscription] @publisher = N'@@phcy@@', + @publication = N'tst', + @publisher_db = N'activepos_read', + @independent_agent = N'True', + @subscription_type = N'pull', + @description = N'', + @update_mode = N'read only', + @immediate_sync = 0; + + +--even on express edition is needed, will create metadata that must be present for repli to work +EXEC [sys].[sp_addpullsubscription_agent] @publisher = N'@@phcy@@', + @publisher_db = N'activepos_read', + @publication = N'tst', + @distributor = N'@@phcy@@', + @distributor_security_mode = 1, + @distributor_login = N'svc-APH-repl@CENTRALINFRA', + @distributor_password = 'TWdZItCqjU!uLgws', + @enabled_for_syncmgr = N'False', + @frequency_type = 64, --the frequency with which to schedule the Distribution Agent, 64 = Autostart (continuous) + @frequency_interval = 0, + @frequency_relative_interval = 0, + @frequency_recurrence_factor = 0, + @frequency_subday = 0, + @frequency_subday_interval = 0, + @active_start_time_of_day = 0, + @active_end_time_of_day = 235959, + @active_start_date = 20230814, + @active_end_date = 99991231, + @alt_snapshot_folder = N'', + @working_directory = N'', + @use_ftp = N'False', + @job_login = null, + @job_password = null, + @publication_type = 0; + + +"@ + +$posLst = Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query " +SELECT [pos].[POS_hostname], [pos].[POS_MAC_address], [pos].[POS_number], [pos].[POS_type] +FROM [Arizona].[dbo].[Point_of_sale] [pos] +WHERE [pos].[POS_active]=1 +AND [pos].[POS_type] IN (1,2) +AND [pos].[POS_number] < 99 +ORDER BY [pos].[POS_number]; +" +### prep: restore ActivePos_read on every POS +# $posLst | ForEach-Object { +# $posName = $_.POS_hostname +# Write-Output "Restoring activePos_Read on $posName" +# Invoke-Sqlcmd -ServerInstance $posName -Database master -Query @" + +# RESTORE DATABASE ActivePos_read +# FROM DISK = 'c:\temp\ActivePos_read.23.4.23.28503.bak' +# WITH MOVE N'ActivePos_read_Data' +# TO 'C:\SQLDataBase\Data\ActivePos_Read.mdf', +# MOVE N'ActivePos_read_Log' +# TO 'C:\SQLDataBase\Log\ActivePos_Read.ldf', STATS = 10, REPLACE + +# "@ +# Write-Output "ActivePos_read restored on $posName" +# } + + +### prep: ensure ActiveposClientService is stopped on server and every POS +Write-Output "--- Stop service ActiveposClientService everywhere " +Invoke-Command -ComputerName $phcy -ArgumentList $phcy { + param($posName) + $svc = Get-Service -Name "ActiveposClientService" + + if( $svc.Status -ne "running"){ + $svc | Stop-Service + Write-Output "service stopped on $posName" + } + else { + Write-Output "service not running on $posName" + } +} +$posLst | ForEach-Object -Parallel { + $posName = $_.POS_hostname + Invoke-Command -ComputerName $posName -ArgumentList $posName{ + param($posName) + $svc = Get-Service -Name "ActiveposClientService" + + if( $svc.Status -eq "running"){ + $svc | Stop-Service + Write-Output "service stopped on $posName" + } + else { + Write-Output "service not running on $posName" + } + } +} + +###prep drop all replication agents +Write-Output "--- Stop all distrib agents on pharmacy server " +Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query " +DECLARE @jobname sysname + +DECLARE crsr_job CURSOR FAST_FORWARD READ_ONLY FOR + SELECT sj.name + FROM msdb.dbo.sysjobactivity AS sja + INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id + WHERE sja.start_execution_date IS NOT NULL + AND sja.stop_execution_date IS NULL + AND ( + [sj].[name] LIKE '%distribu%' + OR [sj].[name] LIKE 'SWCVI501VM01\APSSQL-ActivePos_read%' + ) +OPEN crsr_job + +FETCH NEXT FROM crsr_job INTO @jobname + +WHILE @@FETCH_STATUS = 0 +BEGIN + EXEC msdb.dbo.sp_stop_job @job_name = @jobname; + print 'stopped job '+cast(@jobname as varchar(8000)) + + EXEC msdb.dbo.[sp_delete_job] @job_name = @jobname, @delete_unused_schedule = 1 + print 'dropped job '+cast(@jobname as varchar(8000)) + FETCH NEXT FROM crsr_job INTO @jobname +END + +CLOSE crsr_job +DEALLOCATE crsr_job + +" + +### prep Drop all pull subscribers +foreach ($posRow in $posLst) { + $posName = $posRow.POS_hostname + Write-Output "--- Drop subscriptions on POS $posName " + Invoke-Sqlcmd -ServerInstance $posName -Database ActivePos_Read -Query " + + IF(OBJECT_ID('[dbo].[MSsubscription_properties]')) IS NULL + BEGIN + PRINT 'no subscription' + END + ELSE + BEGIN + IF OBJECT_ID('tempdb..#sub')IS NOT NULL BEGIN; + DROP TABLE #sub; + END; + + SELECT [publisher], [publisher_db], [publication] + INTO #sub + FROM [dbo].[MSsubscription_properties] + + /* declare variables */ + DECLARE @publisher sysname, @publisher_db sysname, @publication sysname + + DECLARE csr_sub CURSOR FAST_FORWARD READ_ONLY FOR + SELECT [publisher], [publisher_db], [publication] + FROM [#sub] + + + OPEN csr_sub + + FETCH NEXT FROM csr_sub INTO @publisher, @publisher_db, @publication + + WHILE @@FETCH_STATUS = 0 + BEGIN + EXEC [sys].[sp_droppullsubscription] @publisher = @publisher, + @publisher_db = @publisher_db, + @publication = @publication; + + FETCH NEXT FROM csr_sub INTO @publisher, @publisher_db, @publication + END + + CLOSE csr_sub + DEALLOCATE csr_sub + + END + " +} + +### prep drop subscriber on the distributor +# foreach ($posRow in $posLst) { +# $posName = $posRow.POS_hostname +# Write-Output "--- Drop subscribers on distributor for $posName " +# $query=" +# EXEC sp_dropsubscription +# @publication = 'tst', +# @article = N'all', +# @subscriber = '$posName'; +# " +# Invoke-Sqlcmd -ServerInstance $phcyDB -Database ActivePos_Read -Query $query +# } + +### prep Drop publication ActivePosTran if it exists +Write-Output "--- Drop publication ActivePosTran " +Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query " +IF EXISTS( + SELECT * + FROM [distribution].dbo.[MSpublications] + WHERE [publication] = 'ActivePosTran' +) +BEGIN + + DECLARE @publicationDB AS sysname; + DECLARE @publication AS sysname; + SET @publicationDB = N'ActivePos_read'; + SET @publication = N'ActivePosTran'; + + -- Remove a transactional publication. + IF EXISTS( + SELECT 1 + FROM sys.databases d + WHERE d.[name]=@publicationDB + AND [d].[is_published] = 1 + )BEGIN + exec(' + USE [ActivePos_read] + EXEC sp_droppublication @publication = ''ActivePosTran''; + ') + + --Remove replication objects from the database. + exec(' + USE [master] + EXEC sp_replicationdboption + @dbname = ''ActivePos_read'', + @optname = N''publish'', + @value = N''FALSE''; + ') + + PRINT 'publication ActivePosTran dropped' + END + ELSE + PRINT 'publication does not exists' +END +ELSE +PRINT 'publication does not exists' +" + +###prep Drop publication tst if it exists +Write-Output "--- Drop publication tst " +Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query " +IF EXISTS( + SELECT * + FROM [distribution].dbo.[MSpublications] + WHERE [publication] = 'tst' +) +BEGIN + DECLARE @publicationDB AS sysname; + DECLARE @publication AS sysname; + SET @publicationDB = N'ActivePos_read'; + SET @publication = N'tst'; + + -- Remove a transactional publication. + IF EXISTS( + SELECT 1 + FROM sys.databases d + WHERE d.[name]=@publicationDB + AND [d].[is_published] = 1 + )BEGIN + exec(' + USE [ActivePos_read] + EXEC sp_droppublication @publication = ''tst''; + ') + + --Remove replication objects from the database. + exec(' + USE [master] + EXEC sp_replicationdboption + @dbname = ''ActivePos_read'', + @optname = N''publish'', + @value = N''FALSE''; + ') + PRINT 'publication tst dropped' + END + ELSE + PRINT 'publication does not exists' +END +ELSE + PRINT 'publication does not exists' +" + +### step 1: create the publication +$query = $publicationTpl +Write-Output "--- Create publication " +Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query $query + +foreach ($posRow in $posLst) { + $posName = $posRow.POS_hostname + $query = $subTplOnServer.replace("@@posName@@", $posName) + Write-Output "--- Add subscriber for $posName on distributor" + Invoke-Sqlcmd -ServerInstance $phcyDB -Database master -Query $query +} + +###step 2 Add metadata on subscriber +foreach ($posRow in $posLst) { + $posName = $posRow.POS_hostname + $query = $subTplOnPos.Replace("@@phcy@@", $phcyDB) + #Write-Output $query + Write-Output "--- Add pull subscribtion on subscriber $posName" + Invoke-Sqlcmd -ServerInstance $posName -Database ActivePos_Read -Query $query +} + +##flush job queue +Get-Job | Where-Object state -eq running | Stop-Job +Get-Job | Where-Object state -ne running | Remove-Job + +### step 3: create the distrib.exe script on every POS +foreach ($posRow in $posLst) { + $posName = $posRow.POS_hostname + + $script = @" +"C:\Program Files\Microsoft SQL Server\160\COM\Distrib.exe" -Publisher [SWCVI501VM01\APSSQL] -PublisherDB [activepos_read] -Publication [tst] -Distributor [SWCVI501VM01\APSSQL] -SubscriptionType 1 -Subscriber [$($posName)] -SubscriberSecurityMode 1 -SubscriberDB [activepos_read] -AltSnapshotFolder "$($phcySnapshotFolder)" -continuous +"@ + + $script | Out-File -FilePath "\\$posName\c$\users\ua208700\desktop\repli.cmd" -Force + write-output "---- file repli.cmd copied on desktop of TSC on $posName" +} + + + +# while ($true) { +# foreach ($jobItem in Get-Job) { +# $jobId = $jobItem.Id +# Write-Output "vvvvvvvvvvvvvvvvvvvvvvvvv $posName vvvvvvvvvvvvvvvvvvvvvvvvv " +# Receive-Job -id $jobId +# } + +# Start-Sleep -Seconds 3 +# } \ No newline at end of file