经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » MS SQL Server » 查看文章
distribution 分发数据库 灾难恢复 备份恢复
来源:cnblogs  作者:Fanr_Zh  时间:2018/9/25 19:51:51  对本文有异议
参考:
前提:
    准备一台电脑,主机名和以前的分发数据库一致。并且安装sql server
 
恢复步骤:
在新的distribution服务器上
1.配置distribution,增加之前的publisher
2.使用备份还原distribution数据库
3.创建job,主要是快照agent和logreadagent,可以从老的distribution直接复制
3.修改发布服务器属性
  1. EXEC sp_changedistpublisher 'TESTSYNCDBSERV', 'active', 'true'
4.修改[MSpublisher_databases]中的publisher_id为publisher服务器在sys.servers中的server_id
  1. UPDATE t set t. publisher_id = 2 from dbo.[MSpublisher_databases] t WHERE id=2
5.修改[MSpublications]中的publisher_id为publisher服务器在sys.servers中的server_id
  1. 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,如果没有订阅的可以直接创建。
  1. EXEC master.dbo.sp_addlinkedserver @server = N'TESTSYNCRPTSERV', @srvproduct=N'SQL Server'
  2. EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TESTSYNCRPTSERV',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
  3. 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,如果没有订阅的可以直接创建。
  1. update dbo.MSsubscriptions SET publisher_id =2,subscriber_id=3 WHERE publication_id=2
8.修改logreadagent,snapshotagent的publish_id和对应的job信息
  1. update [MSlogreader_agents] SET publisher_id =2 WHERE id = 2
  2. update [MSsnapshot_agents] SET publisher_id =2 WHERE id = 2
  3. update t
  4. set t.job_id = sj.job_id, t.job_step_uid = sjs.step_uid
  5. from dbo.MSlogreader_agents t
  6. left join dbo.MSreplication_monitordata sm on sm.agent_name = t.name
  7. left join msdb.dbo.sysjobs sj on sj.name = t.name
  8. left join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id and sjs.step_id = 2
  9. update t
  10. set t.job_id = sj.job_id, t.job_step_uid = sjs.step_uid
  11. from dbo.[MSsnapshot_agents] t
  12. left join dbo.MSreplication_monitordata sm on sm.agent_name = t.name
  13. left join msdb.dbo.sysjobs sj on sj.name = t.name
  14. left join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id and sjs.step_id = 2
在发布上运行
修改发布数据库中的syspublications,syssubscriptions中job的id
  1. update [dbo].[syspublications] set snapshot_jobid=0xD2E257AFD287304CA2FC14F3D7C1AECF
  2. update [dbo].[syssubscriptions] set distribution_jobid=0x0E79D3A2A36F73409DB3F4261723F37A

 

 
 
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号