前阵子测试了下SQL Server 2008数据库同步,大概意思就是服务器上有一个数据库,与本地数据库进行同步,服务器上的数据库有什么改变,可以同步到本地数据库中。做之前百度了下,流程分以下三步,
第一步: 服务器上的数据库进行发布
第二步: 本地数据库进行订阅
第三步: 把冰箱门关上
看起来很简单,实际上远不是这么一回事,把哥都弄得上火了。
首先第一天,开始弄了,结果打开sql server 2008一看,死活没找到发布和订阅功能,复制一项里面空空如也,吊毛没有。看来是没装完整,没办法,只能卸了重装,卸过sql的都知道sql有多难卸,还要清除注册表什么的,搞了半天没搞好,一气之下,重装系统。
搞了半天终于装好了,首先在服务器端对指定数据库进行发布,具体步骤就不讲了,网上多得是,注意的是选择发布方式时要选择事务发布,这种发布方式可以实现数据的及时更新,比如说服务器端数据有更改时,会及时同步到本地端数据库,而快照发布并不能实现这一功能,因为这种发布方式原理是将数据库转成快照,然后发布的是快照,适用于数据稳定,几乎不会更改的情况下,若是要同步更改过的数据,那就得重新生成快照了。所以一般选择事务发步,其他不会有啥问题。
发布成功后,本地端即可进行订阅了,新建订阅的时候,若出现以下提示
这时候首先在sql中执行 select @@servername ,将得到的结果与计算机名称进行比较,你会发现两者是不一样的。呵呵,一样就见鬼了。出现这种情况一般是改过计算机名称,
接下来执行以下语句:
sp_dropserver 'old_server_name' // old_server_name就是上面执行select @@servername的 结果
go sp_addserver 'current_computer_name','local' //current_computer_name就是当前PC名称
修改完后,重启SQL SERVER服务。之后按照网上流程一步一步订阅即可,订阅成功后,可以测试一下 ,在服务器端改个数据,然后看下本地啊有同步,一看,果然没同步!!!继续找原因吧....
登录服务器端 ,查看订阅状态,显示错误:进程无法连接到 subscriber xxx-xxxxxx;网上百度了一大堆答案,有一个给了我提示。计算机名称中不能有特殊字符,比如 ’/’ , ’-’之类的,OK,修改计算机名称后,重新来一遍,大功告成!!!!!!!!!!