參考: http://www.sqlservercentral.com/articles/Replication/117265/ 前提: 準備一臺電腦,主機名和以前的分發資料庫一致。並且安裝sql server 恢復步驟: 在新的distribution伺服器上 1.配置distribution,增 ...
參考: http://www.sqlservercentral.com/articles/Replication/117265/ 前提: 準備一臺電腦,主機名和以前的分發資料庫一致。並且安裝sql server 恢復步驟: 在新的distribution伺服器上 1.配置distribution,增加之前的publisher 2.使用備份還原distribution資料庫 3.創建job,主要是快照agent和logreadagent,可以從老的distribution直接複製 3.修改發佈伺服器屬性
EXEC sp_changedistpublisher 'TESTSYNCDBSERV', 'active', 'true'4.修改[MSpublisher_databases]中的publisher_id為publisher伺服器在sys.servers中的server_id
UPDATE t set t. publisher_id = 2 from dbo.[MSpublisher_databases] t WHERE id=25.修改[MSpublications]中的publisher_id為publisher伺服器在sys.servers中的server_id
UPDATE t set t. publisher_id = 2 from dbo.MSpublications t WHERE publication_id=26.修改[MSdistribution_agents]中的publisher_id為publisher伺服器在sys.servers中的server_id,subscriber_id為訂閱伺服器在sys.servers中的server_id,如果沒有訂閱的可以直接創建。
EXEC master.dbo.sp_addlinkedserver @server = N'TESTSYNCRPTSERV', @srvproduct=N'SQL Server' EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TESTSYNCRPTSERV',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL update dbo.MSdistribution_agents SET publisher_id=2,subscriber_id=3 WHERE id = 47.修改[MSsubscriptions]中的publisher_id為publisher伺服器在sys.servers中的server_id,subscriber_id為訂閱伺服器在sys.servers中的server_id,如果沒有訂閱的可以直接創建。
update dbo.MSsubscriptions SET publisher_id =2,subscriber_id=3 WHERE publication_id=28.修改logreadagent,snapshotagent的publish_id和對應的job信息
update [MSlogreader_agents] SET publisher_id =2 WHERE id = 2 update [MSsnapshot_agents] SET publisher_id =2 WHERE id = 2 update t set t.job_id = sj.job_id, t.job_step_uid = sjs.step_uid from dbo.MSlogreader_agents t left join dbo.MSreplication_monitordata sm on sm.agent_name = t.name left join msdb.dbo.sysjobs sj on sj.name = t.name left join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id and sjs.step_id = 2 update t set t.job_id = sj.job_id, t.job_step_uid = sjs.step_uid from dbo.[MSsnapshot_agents] t left join dbo.MSreplication_monitordata sm on sm.agent_name = t.name left join msdb.dbo.sysjobs sj on sj.name = t.name left join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id and sjs.step_id = 2在發佈上運行 修改發佈資料庫中的syspublications,syssubscriptions中job的id
update [dbo].[syspublications] set snapshot_jobid=0xD2E257AFD287304CA2FC14F3D7C1AECF update [dbo].[syssubscriptions] set distribution_jobid=0x0E79D3A2A36F73409DB3F4261723F37A