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. JDK8简化if-else

    简化if-else 1234567891011 User user = ...if (user != null) { String userName = user.getUserName(); if ...

  2. 18-hadoop-weather案例

    weather案例, 简单分析每年的前三个月的最高温即可, 使用自定义的分组和排序 设计分析 设定多个reduce 每年的数据都很多,如果按照默认情况处理,统计性能是非常慢(因为默认只有一个reduc ...

  3. Spring 注解方式引入配置文件

    配置文件,我以两种为例,一种是引入Spring的XML文件,另外一种是.properties的键值对文件: 一.引入Spring XML的注解是@ImportResource @Retention(R ...

  4. 版本管理(二)之Git和GitHub的连接和使用

    首先需要注册登录GitHub:https://github.com 然后 ①:下载Git 先从Git官网,由于我的系统是64位的所以选择64-bit Git for Windows Setup htt ...

  5. es6学习笔记9--函数的扩展

    函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接写在参 ...

  6. 解析js中( ( ) { } ( ) )的含义

    //实例var tensquared=(function(x) { return x*x; }(10)); 首先我们来拆解这一行语句: 一. var tensquared = xx; 这是赋值语句: ...

  7. OAuth2.0的理解&基础

    此文章是复制黏贴网上文章的,主要做自己备用着看(也加了自己的一点见解),喜欢的读者也可以看. OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2 ...

  8. TabControl控件在左侧绘制tabPage页面

    效果图:

  9. ASP.NET开发,且编且改,分清职责

    本篇Insus.NET使用一个实例,分享在ASP.NET开发时,一个功能一个方法(函数),且编且改,一步一个脚印把实例完成.在方法多变多形式的情况之下,怎样把写出来程序简单明了. 下面是一个Excel ...

  10. ASP.NET MVC获取上传的路径

    刚才有网友问及,怎样获取<input type='file'>的值? Insus.NET测试了一下,在Inetnet Explor之下似乎没有问题,但是FireFox获取到的只是文件名. ...