Hi,
i executed a Transaction Replica with pullsubscription using T-SQL:
ON Publisher = Distributor
declare @c_dbname nvarchar(250) = N'OneDatabase'; declare @c_dbname_dest nvarchar(250) = N'OneDatabase'; declare @c_lra_username nvarchar(250) = N'NODE1\SQL_DAPS'; declare @c_lra_password nvarchar(250) = N'password'; declare @c_pbl_host nvarchar(250) = N'NODE1'; declare @c_pbl_username nvarchar(250) = N'SQL_Distributor1'; declare @c_pbl_password nvarchar(250) = @c_lra_password; declare @c_pbl_name nvarchar(250) = N'Replica_OneDatabase_TC'; declare @c_pbl_desc nvarchar(250) = N'DW1_Pubb_TRANS_OneDatabase'; declare @c_pbl_ftp_username nvarchar(250) = N'SQL_Subscriber1'; declare @c_pbl_ftp_password nvarchar(250) = N'ftp_password'; declare @c_dist_username nvarchar(250) = N'NODE1\SQL_Distributor1'; declare @c_dist_password nvarchar(250) = @c_lra_password; declare @c_dist_login nvarchar(250) = N'SQL_Subscriber1'; declare @c_dist_login_pwd nvarchar(250) = @c_lra_password; declare @c_sub_host nvarchar(250) = N'NODE2'; declare @c_sub_username nvarchar(250) = N'NODE2\SQL_Subscriber1'; declare @c_sub_password nvarchar(250) = @c_lra_password; declare @c_ftp_host nvarchar(250) = N'node1.domain.tld'; USE master; exec sp_replicationdboption @dbname = @c_dbname, @optname = N'publish', @value = N'true'; IF (@c_dbname = N'OneDatabase') use ELearning; exec sys.sp_addlogreader_agent @job_login = @c_lra_username, @job_password = @c_lra_password, @publisher_security_mode = 0, @publisher_login = @c_pbl_username, @publisher_password = @c_pbl_password; exec sp_addpublication @publication = @c_pbl_name, @description = @c_pbl_desc, @ftp_login = @c_pbl_ftp_username, @ftp_password = @c_pbl_ftp_password, @ftp_address = @c_ftp_host, @sync_method = N'concurrent', @retention = 744, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', @enabled_for_internet = N'true', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'true', @ftp_port = 21, @ftp_subdirectory = N'/', @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'true', @enabled_for_p2p = N'false', @enabled_for_het_sub = N'false'; exec sp_addpublication_snapshot @publication = @c_pbl_name, @job_login = @c_lra_username, @job_password = @c_lra_password, @frequency_type = 1, @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 = 0, @active_end_date = 0, @publisher_security_mode = 1; exec sp_grant_publication_access @publication = @c_pbl_name, @login = @c_dist_username; exec sp_grant_publication_access @publication = @c_pbl_name, @login = @c_lra_username; exec sp_grant_publication_access @publication = @c_pbl_name, @login = @c_pbl_ftp_username; exec sp_addarticle @publication = @c_pbl_name, @article = N'Table1', @source_owner = N'dbo', @source_object = N'Table1', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000003444DFF7FDF, @identityrangemanagementoption = N'manual', @destination_table = N'Table1', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dboTable1]', @del_cmd = N'CALL [sp_MSdel_dboTable1]', @upd_cmd = N'SCALL [sp_MSupd_dboTable1]'; exec sp_addarticle @publication = @c_pbl_name, @article = N'StoredProcedure1', @source_owner = N'dbo', @source_object = N'StoredProcedure1', @type = N'proc schema only', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @destination_table = N'StoredProcedure1', @destination_owner = N'dbo', @status = 16; -- some other articles exec sp_addsubscription @publication = @c_pbl_name, @subscriber = @c_sub_host, @destination_db = @c_dbname_dest, @subscription_type = N'Pull', @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;
ON Subscriber
declare @c_dbname nvarchar(250) = N'OneDatabase'; declare @c_dbname_dest nvarchar(250) = N'OneDatabase'; declare @c_lra_username nvarchar(250) = N'NODE1\SQL_DAPS'; declare @c_lra_password nvarchar(250) = N'password'; declare @c_pbl_host nvarchar(250) = N'NODE1'; declare @c_pbl_username nvarchar(250) = N'SQL_Distributor1'; declare @c_pbl_password nvarchar(250) = @c_lra_password; declare @c_pbl_name nvarchar(250) = N'Replica_OneDatabase_TC'; declare @c_pbl_desc nvarchar(250) = N'DW1_Pubb_TRANS_OneDatabase'; declare @c_pbl_ftp_username nvarchar(250) = N'SQL_Subscriber1'; declare @c_pbl_ftp_password nvarchar(250) = N'ftp_password'; declare @c_dist_username nvarchar(250) = N'NODE1\SQL_Distributor1'; declare @c_dist_password nvarchar(250) = @c_lra_password; declare @c_dist_login nvarchar(250) = N'SQL_Subscriber1'; declare @c_dist_login_pwd nvarchar(250) = @c_lra_password; declare @c_sub_host nvarchar(250) = N'NODE2'; declare @c_sub_username nvarchar(250) = N'NODE2\SQL_Subscriber1'; declare @c_sub_password nvarchar(250) = @c_lra_password; declare @c_ftp_host nvarchar(250) = N'node1.domain.tld'; IF (@c_dbname_dest = N'OneDatabase') use OneDatabase exec sp_addpullsubscription @publisher = @c_pbl_host, @publication = @c_pbl_name, @publisher_db = @c_dbname, @independent_agent = N'True', @subscription_type = N'pull', @description = N'', @update_mode = N'read only', @immediate_sync = 1; exec sp_addpullsubscription_agent @publisher = @c_pbl_host, @publisher_db = @c_dbname, @publication = @c_pbl_name, @distributor = @c_pbl_host, @distributor_security_mode = 0, @distributor_login = @c_dist_login, @distributor_password = @c_dist_login_pwd, @enabled_for_syncmgr = N'False', @frequency_type = 64, @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 = 0, @active_end_date = 0, @alt_snapshot_folder = N'', @working_directory = N'', @use_ftp = N'True', @job_login = @c_sub_username, @job_password = @c_sub_password, @publication_type = 0;
These scripts are executed fine, but when i force snapshot job, history log return me following error:
2019-06-21 15:19:01.44 --------------------------------------------- 2019-06-21 15:19:01.44 Publication Server validation 2019-06-21 15:19:01.47 Connecting to publication server 'NODE1' 2019-06-21 15:19:01.52 Il livello di compatibilità del database del server di pubblicazione è impostato su 110. 2019-06-21 15:19:01.52 Recupero in corso delle informazioni sulla pubblicazione e sull'articolo dal database del server di pubblicazione 'NODE1.OneDatabase' 2019-06-21 15:19:01.60 [0%] Si è verificata un'eccezione nell'agente di replica. 2019-06-21 15:19:01.60 Origine: Unknown 2019-06-21 15:19:01.60 Tipo eccezione: System.ArgumentNullException 2019-06-21 15:19:01.60 Messaggio eccezione: Value is not be null. 2019-06-21 15:19:01.60 Nome parametro: strTargetFolder 2019-06-21 15:19:01.60 Codice messaggio: Not Applicable 2019-06-21 15:19:01.60Can anybody help me?