逐浪云主机

立即开通

SQL Server 服务器同步或定时同步数据库以及“因为它正用于复制错误”解决方案

作者:Q葩小玉 发布时间:2017-12-02 来源:佚名 点击数:

 在本地局域网内或者外网有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被sqlserver2005订阅)

1.在要发布的数据库上创建一个数据库(这里叫做dnt_new),然后在该数据库实例的左侧导航的“复制”--“本地发布”上击右键,然后选择“新建发布”,如下:

  这样,系统就会启动‘发布向导’来引导大家,点击"下一步”,然后在当前窗口中选择要发布的数据库,如下:

点击下一步,然后在接下来的窗口中选择“事务发布”,如下图:

然后点击下一步,选择要同步的数据对象(数据表,存储过程,自定义函数等),如下:

然后就是“项目问题窗口”,因为之前已用dbo身份登陆,所以这里只要点击下一步即可,如下图:

这里可以通过“添加”方式来过滤要同步的数据信息,因为要做全表数据同步,所以这里不设置

然后在‘代理安全性’窗口中,点击“安全设置”按钮:

在弹出的‘安全设置’子窗口中设置如下信息,并点击‘确定’按钮:

然后点击下一步按钮:

选择“创建发布”复选框,然后点击下一步,这时向导会让您输入“发布名称”,这里命名为“dnt_new_snap”:

点击“完成按钮”,这里系统就开始根据之前收集的信息来创建该发布对象信息了,如下:

  到这里,‘创建发布’的工作就完成了。下面介绍一下创建订阅的流程。在另一个机器的sqlserver实例上,打开该实例并使用“复制”—“新建订阅”,如下图:

这时系统就会启动“新建订阅”向导,点击下一步,并在“发布”窗口中的“发布服务器”下拉框中选择“查打发布sqlserver服务器”项,如下

然后在弹出窗口中选择之前创建发布时所使用的数据库实例并进行验进登陆,这时,发布服务器的信息就会出现在下方的列表框中:

 选择之前我们创建的那个发布对象“dnt_new_snap”,接着点击下一步:

在分发代理位置窗口中,选择在分布服务器上运行所有代理,然后点击下一步,然后在订阅服务器窗口中的订阅数据库列表框中选择一下要同步的订阅数据库名称(可新建):

 点击下一步,然后在分发代理安全性窗口中,点击列表框中的‘…’来设置安装性,并做如下设置(注意红框部分):

然后点击确定按钮,之后在向导上点击下一步按钮,这时系统就会显示代理计划执行方式窗口,选择连续运行或者自定义时间(自定义可以实现定时备份数据):

点击下一步,在窗口中选择立即执行

完成了这一步,点击下一步按钮,然后就可以创建该订阅对象了,如果一切运行正常,sqlserver就会从发布服务器那边,将之前指定的数据表和存储过程等同步到当前的订阅数据库中了。这时我们可以在源数据库(发布服务器)上的表中添加或修改指定表数据信息,在等待1-3秒(或设定的时间)之后,所做的添加和修改就会同步到订阅数据库上的相应表中

注:本文中的两台机器必定是可以使用sqlserver客户端互联(在sqlserver studio中设置'允许远程链接',同时要设置相应的ip地址,以及在配置管理器中开启tcp/ip协议即可)

注:

局域网SQL远程连接方法:

SQL2005 SQL2008远程连接配置方法

第一步(SQL2005SQL2008):

开始-->程序-->Microsoft SQL Server 2008(或2005-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->MSSQLSERVER(这个名称以具体实例名为准的协议-->TCP/IP-->右键-->启用

第二步:

SQL2005:

开始-->程序-->Microsoft SQL Server 2005-->配置工具-->SQL Server 2005外围应用配置器-->服务和连接的外围应用配置器  -->Database Engine -->远程连接,选择本地连接和远程连接并选上同时使用Tcp/Ipnamed pipes.

SQL2008:

打开SQL Server Management Studio-->在左边[对象资源管理器]中选择第一项(主数据库引擎)-->右键-->方面-->在方面的下拉列表中选择[外围应用配置器]-->RemoteDacEnable置为True.

Express

如果XP有开防火墙,在例外里面要加入以下两个程序:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe,
C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe

不仅要关闭Windows防火墙,杀毒软件防火墙也要关闭。

第三步:

开始-->程序-->Microsoft SQL Server 2008(或2005-->配置工具-->SQL Server 配置管理器-->SQL Server服务-->右击SQL Server(MSSQLSERVER) (注:括号内以具体实例名为准)-->重新启动 



对于连接服务器你可能要看这篇文章:

www.z01.com/help/DBA/3224.shtml



对于创建过数据库复制的数据库,删除时会报错,你可以执行

sp_removedbreplication 'dbname'



关于SQLServer无法对数据库''执行删除,因为它正用于复制错误:'3724' 的解决方案":关键词:关于  sqlserver  无法  数据库  39  39  执行  删除  因为  它  正  用于  复制  错误  39  3724'  解决方案


关于这个错误,是因为在服务器上想把数据库复制到本地,使用了“发布、订阅”方案,结果后来没成功,删除本地数据库的时候出现了这个错误,说“无法对数据库'xxx'执行删除,因为它正用于复制”。

解决方案:只需要执行 sp_removedbreplication 'xxx' 就可以了。

这个语句的解释是:该存储过程在发布服务器的发布数据库中或在订阅服务器的订阅数据库中执行。 该过程将从执行它的数据库中删除所有复制对象,但它不会从其他数据库(例如,分发数据库)中删除对象。

详细解释请参考msdn:

http://msdn.microsoft.com/zh-cn/library/ms188734.aspx


复制后的自增长值会出错,这有一篇补充阅读:

https://www.z01.com/help/DBA/3226.shtml



本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友