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文件还原为数据库的更多相关文章

  1. SQL Server 合并复制遇到identity range check报错的解决 (转载)

    最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, State ...

  2. SQL Server 合并复制的Article可以指定单个对象的更新方向

    如下所示,这是SQL Server中一个合并复制发布端的Article: 我们可以在Article中选择一个对象,比如这里我们选择MD.Car表,点击鼠标右键,选择"Set Properti ...

  3. SQL Server 合并复制遇到identity range check报错的解决

        最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, S ...

  4. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  5. sql server 本地复制订阅 实现数据库服务器 读写分离(转载)

    转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下S ...

  6. sql server 本地复制订阅 实现数据库服务器 读写分离

    再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下SQL Server的复制订阅实现数据的读写分离 比起mysql的复制,SQL server 复制相对强大 ...

  7. SQL Server 2012 复制(发布订阅的研究)

    原文:SQL Server 2012 复制(发布订阅的研究) 已实现发布订阅功能,可以实现局域网内双击备份. 一.注意事项: a) 使用[事务复制]功能 b) 必须是相同的SqlServer 帐号和密 ...

  8. SQL Server 事务复制爬坑记

    SQL Server 复制功能折腾了好几天了,现特将其配置过程以及其间遇到的问题记录下来,以备日后查阅.同时,也让“同道”同学们少走不必要的弯路.如果有不对之处,欢迎大家指正,欢迎沟通交流. 一.复制 ...

  9. SQL Server 2014新特性-原生备份加密

    注:本篇文章是IT68找我的约稿,原文地址:http://tech.it168.com/a2014/0610/1633/000001633147.shtml       SQL Server 2014 ...

随机推荐

  1. Tomcat学习总结(14)—— Tomcat常见面试题

    一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080. 修改Tomcat端口号: 1.找到Tomcat目录下的conf文件夹 2.进入conf文件夹里面找到server.xml文 ...

  2. 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]

    [来源]:腾讯2013实习生笔试   给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]-a[N-1] / a[j])空间复杂度和O(n)的时间复杂度:除遍历计数器与a ...

  3. 【sh文件权限】无法启动tomcat -bash: ./startup.sh: Permission denied

    今天在Linux上启动Tomcat,结果弹出:-bash: ./startup.sh: Permission denied 的提示. 这是因为用户没有权限,而导致无法执行, 用命令chmod 修改一下 ...

  4. string基本字符序列容器(竞赛时常用的使用方法总结)

    C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找 ...

  5. 【译】如何更好的使用javascript数组

    赶紧阅读读此文,我保证,在过去的几个月里我,我确定我在数组问题上犯过4次错误.于是我写下这篇文章,阅读这篇文章可以让你更准确的使用javascript数组的一些方法 使用Array.includes替 ...

  6. iOS开源项目周报0428

    由OpenDigg 出品的iOS开源项目周报第十八期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Bouncy ...

  7. Razor 中的@rendersection

    在使用布局页时,可以指定页面中某处的渲染,具体的用@rendersection来做.如在布局页中要渲染一段自定义的脚本, @RenderSection("scripts", req ...

  8. MyCAT全局序列号-数据库方式

    1.MyCat中的全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式. ...

  9. SQL Server T—SQL 表连接

    一  笛卡尔积 select  *  from  表1,表2 将两表的记录遍历显示 二表的横向连接 1   使用外键关系作为条件 select  *  from   表1,表2  where   表1 ...

  10. [日常] Go语言圣经-指针对象的方法-bit数组习题2

    练习 6.3: (*IntSet).UnionWith会用|操作符计算两个集合的交集,我们再为IntSet实现另外的几个函数IntersectWith(交集:元素在A集合B集合均出现),Differe ...