SQL Server 合并复制如何把备份的发布端或订阅端BAK文件还原为数据库
SQL Server的合并复制,是可以备份发布端和订阅端数据库为BAK文件的,但是问题是合并复制在数据库中自动创建的系统表、触发器、表中的RowGuid列等也会被一起备份。
这里我们举个例子,下面图中的EFDemo数据库就是由一个合并复制发布端的备份BAK文件还原的:

我们可以看到合并复制自动创建的系统表也被自动还原了。。。
我们再来看看数据库中的其它用户表,例如下面的[dbo].[Person]表,其中合并复制自动创建的RowGuid列、约束、触发器等也被还原了:

最大的问题是,SQL Server的Instance中,居然合并复制也被自动还原了。在还原数据库EFDemo前,Replication下的Local Publications文件夹是空的,但是还原后现在自动多了一个合并复制发布端。。。

而且最关键的是这个发布端实际上是坏的,无法使用,也无法删除。。。。,如下所示:


然后我想尝试去删除刚才还原的数据库EFDemo,结果也删不掉,提示Replication正在使用该数据库。。。

而且数据库EFDemo还莫名其妙的变为了SINGLE_USER模式,点击这里查看怎么将数据库使用的线程Kill掉,再变为MULTI_USER。
解决办法
究其根本还是因为SQL Server在还原数据库EFDemo时,将数据库上的合并复制对象(系统表、触发器、表中的RowGuid列等)也一起还原了,那么我们就要想办法在数据库EFDemo被还原后,移除合并复制对象,其实很简单,运行下面的存储过程即可(关于怎么用存储过程来移除数据库的合并复制,可以查看这篇文章):
USE master
EXEC sp_removedbreplication @dbname='EFDemo'
GO
运行该存储过程后,我们再查看EFDemo数据库:

可以看到,合并复制自动创建的系统表、触发器、表中的RowGuid列等都被移除了,EFDemo瞬间变为了一个没有使用合并复制的数据库。
再看看Replication下的Local Publications文件夹,也空了:

好了现在数据库EFDemo总算顺利被还原了~
SQL Server 合并复制如何把备份的发布端或订阅端BAK文件还原为数据库的更多相关文章
- SQL Server 合并复制遇到identity range check报错的解决 (转载)
最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, State ...
- SQL Server 合并复制的Article可以指定单个对象的更新方向
如下所示,这是SQL Server中一个合并复制发布端的Article: 我们可以在Article中选择一个对象,比如这里我们选择MD.Car表,点击鼠标右键,选择"Set Properti ...
- SQL Server 合并复制遇到identity range check报错的解决
最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, S ...
- SQL Server 2012复制教程以及复制的几种模式
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
- sql server 本地复制订阅 实现数据库服务器 读写分离(转载)
转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下S ...
- sql server 本地复制订阅 实现数据库服务器 读写分离
再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下SQL Server的复制订阅实现数据的读写分离 比起mysql的复制,SQL server 复制相对强大 ...
- SQL Server 2012 复制(发布订阅的研究)
原文:SQL Server 2012 复制(发布订阅的研究) 已实现发布订阅功能,可以实现局域网内双击备份. 一.注意事项: a) 使用[事务复制]功能 b) 必须是相同的SqlServer 帐号和密 ...
- SQL Server 事务复制爬坑记
SQL Server 复制功能折腾了好几天了,现特将其配置过程以及其间遇到的问题记录下来,以备日后查阅.同时,也让“同道”同学们少走不必要的弯路.如果有不对之处,欢迎大家指正,欢迎沟通交流. 一.复制 ...
- SQL Server 2014新特性-原生备份加密
注:本篇文章是IT68找我的约稿,原文地址:http://tech.it168.com/a2014/0610/1633/000001633147.shtml SQL Server 2014 ...
随机推荐
- 深入了解preventDefault与stopPropagation
event.preventDefault()用法介绍(阻止默认事件) 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "subm ...
- gcc编译时对’xxxx’未定义的引用问题
gcc编译时对’xxxx’未定义的引用问题 原因 解决办法 gcc 依赖顺序问题 在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行 ...
- php交叉合并数组
如数组 array1 = array('a', 'b', 'c'); array2 = array('1', '2', '3'); 希望能实现结果 array3 = array('a', '1 ...
- 使用netfilter_queue改包笔记
系统:centos 7 准备:安装libnetfilter_queue模块,可以yum安装,也可以网上下载rpm包安装 简介:使用iptables在NAT表上创建DNAT与SNAT规则,对数据包进行转 ...
- Linux入门练习2
export命令用来设置环境变量. 使用单引号时,变量不会被扩展,将依照原样显示.示例: 如果变量未定义过,则什么都不打印: 获得变量值长度 识别当前所使用得shell: 检查是否为超级用户: UID ...
- 未能找到路径E:\项目文件\W\vbc.exe”的一部分
网上找的说要引用Microsoft.CodeDom.Providers.DotNetCompilerPlatform, 我已经引用了,是差roslyn文件夹,从别的项目考一份过来就好了
- Java - HashMap 多线程安全解析
HashMap多线程并发问题分析 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题.后来,我们的程序性能有问 ...
- 一台电脑配置多个tomcat过程
方法1:https://jingyan.baidu.com/article/76a7e409edbb4dfc3b6e1516.html 方法2:https://www.cnblogs.com/yiyi ...
- 上传文件Base64格式(React)
记录一下上传文件时将文件数据转为Base64的方法 通过 FileReader对象创建一个实例,然后使用 readAsDataURL方法将数据转为Base64格式 注意: 读取过程是异步的 绑定onl ...
- python学习笔记之——unittest框架
unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...