distribution 分發數據庫 災難恢復 備份恢復

參考:
前提:
    準備一臺電腦,主機名和之前的分發數據庫一致。而且安裝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=2   
5.修改[MSpublications]中的publisher_id爲publisher服務器在sys.servers中的server_id
UPDATE t set t. publisher_id  = 2 from dbo.MSpublications  t WHERE publication_id=2
6.修改[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 = 4
7.修改[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=2
8.修改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
相關文章
相關標籤/搜索