SQLServer 以备份初始化订阅
在创建事务复制时,如果发布数据库很大,使用快照初始化时,将等待很久,如果出现问题可能又得重新初始化。使用备份初始化会省很多时间,但是数据库在创建发布订阅期间不能访问。使用备份代替快照迁移数据,备份可以压缩或使用 FTP 传输,若在同一个机房,拷贝复制更快。
现在测试:
创建测试库(发布服务器)
-- 创建测试库(发布服务器)
USE [master]
GO
CREATE DATABASE [PubDB]
ON PRIMARY
(
NAME = N'PubDB',
FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\PubDB.mdf' ,
SIZE = 5120KB ,
FILEGROWTH = 1024KB )
LOG ON
(
NAME = N'PubDB_log',
FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\PubDB_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%)
GO -- 创建测试表(发布服务器)
USE [PubDB]
GO
CREATE TABLE [dbo].[PubTab](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](20) NOT NULL,
[Value] [decimal](18, 4) NULL,
CONSTRAINT [PK_PubTab] PRIMARY KEY CLUSTERED ([id] ASC),
) ON [PRIMARY]
GO INSERT INTO [dbo].[PubTab]([name],[Value])
VALUES('aa',99),('bb',100)
GO
添加复制用的登录账户和数据库用户。订阅不是同一个实例的添加登录账户(发布服务器/订阅服务器)
-- 添加复制用的登录账户和数据库用户。订阅不是同一个实例的添加登录账户(发布服务器/订阅服务器)
USE [master]
GO
CREATE LOGIN [ReplUser] WITH PASSWORD=N'ReplUser', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
ALTER SERVER ROLE [sysadmin] ADD MEMBER [ReplUser]
GO
USE [PubDB]
GO
CREATE USER [ReplUser] FOR LOGIN [ReplUser]
GO
创建发布(发布服务器)
创建完备份后,设置允许从备份文件初始化(发布服务器发布数据库)
-- 允许从备份文件初始化(发布服务器发布数据库)
USE [PubDB]
GO
EXEC sp_changepublication
@publication = N'PublName',
@property = N'allow_initialize_from_backup',
@value = true
GO
备份数据库(发布服务器)
USE [master]
GO
BACKUP DATABASE [PubDB]
TO DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\PubDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'PubDB-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
还原最新的备份数据库,将作为订阅库(订阅服务器)
USE [master]
GO
RESTORE DATABASE [SubDB]
FROM DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\PubDB.bak'
WITH FILE = 1,
MOVE N'PubDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\SubDB.mdf',
MOVE N'PubDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\SubDB_log.ldf',
NOUNLOAD, STATS = 5
GO
添加订阅,指定备份文件(发布服务器发布数据库)
USE [PubDB]
GO
EXEC sp_addsubscription
@publication = N'PublName',
@subscriber = N'HZC',
@destination_db = N'SubDB',
@subscription_type = N'Push',
@sync_type = N'initialize with backup',
@backupdevicetype='disk',
@backupdevicename='D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\PubDB.bak'
创建订阅后,更改订阅服务器连接账号
至此,发布订阅据配置完成了,现在看看表中的数据。
SELECT * FROM [PubDB].[dbo].[PubTab]
SELECT * FROM [SubDB].[dbo].[PubTab]
增加一行记录再查看,复制正常!
INSERT INTO [PubDB].[dbo].[PubTab]([name],[Value]) VALUES('cc',0)
GO SELECT * FROM [PubDB].[dbo].[PubTab]
SELECT * FROM [SubDB].[dbo].[PubTab]
但是,当添加新表发布时,不能使用快照发布来同步了!~
创建测试表(发布服务器发布数据库),新表 identity 字段需要增加 NOT FOR REPLICATION
-- 创建测试表(发布服务器发布数据库)
USE [PubDB]
GO
CREATE TABLE [dbo].[PubTab02](
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Name] [varchar](20) NOT NULL,
[Value] [decimal](18, 4) NULL,
CONSTRAINT [PK_PubTab02] PRIMARY KEY CLUSTERED ([id] ASC),
) ON [PRIMARY]
GO
正常的添加发布(发布服务器发布数据库)
这时不能启用快照同步了,快照没有用。
右键发布的表查看创建表的结构(发布服务器发布数据库),接着到订阅服务器数据库执行。
USE [SubDB]
GO
CREATE TABLE [dbo].[PubTab02](
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Name] [varchar](20) NOT NULL,
[Value] [decimal](18, 4) NULL,
CONSTRAINT [PK_PubTab02] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
好了,添加算是完成了,现在测试添加数据(发布服务器发布数据库)
USE [PubDB]
GO
INSERT INTO [dbo].[PubTab02]([name],[Value]) VALUES('aa',99)
GO SELECT * FROM [PubDB].[dbo].[PubTab02]
SELECT * FROM [SubDB].[dbo].[PubTab02]
若是添加 / 删除 字段,按正常添加 / 删除即可,直接在发布服务器数据库执行,如。
USE [PubDB]
GO
ALTER TABLE [dbo].[PubTab02] ADD InsertDate DATETIME NULL
GO INSERT INTO [dbo].[PubTab02]([name],[Value],[InsertDate]) VALUES('aa',99,GETDATE())
GO SELECT * FROM [PubDB].[dbo].[PubTab02]
SELECT * FROM [SubDB].[dbo].[PubTab02]
参考:
SQLServer 以备份初始化订阅的更多相关文章
- Replication--使用备份初始化订阅--推送订阅
1. 修改发布属性"许从备份文件初始化"置为TRUE2. 备份数据库并在订阅服务器上还原3. 创建订阅 -------------------------------------- ...
- Replication--使用备份初始化订阅--请求订阅
1. 修改发布属性"许从备份文件初始化"置为TRUE 脚本修改:USE [DB01]GODECLARE @publication AS sysnameSET @publicatio ...
- SQLSERVER数据库备份操作和还原操作做了什么
SQLSERVER数据库备份操作和还原操作做了什么 看了这篇文章:还原/备份时做了些什么 自己也测试了一下,下面说的错误日志指的是SQLSERVER ERRORLOG 一般在C:\Program Fi ...
- SQLServer 2008 R2 发布订阅配置指南
原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...
- mysql 和 sqlserver中备份一张表的区别
sqlserver中备份一张表 SELECT * into qa_buglist_bak FROM qa_buglist 不管表的数据有多大,速度很快: mysql中上述语句就无效了,须得新建一张表, ...
- 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件
通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的脾气秉性(二). 前言 读完上篇<通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的本质(一).>,相信大家对sp ...
- 将服务器上的SqlServer数据库备份到本地
如何将服务器上的SqlServer数据库备份到本地电脑 http://bbs.csdn.net/topics/370051204 有A数据库服务器,B本机: 我现在想通过在B机器上通过代码调用S ...
- SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...
- SQLSERVER 数据库备份脚本-支持多库备份
原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...
随机推荐
- java 线程排查问题流程
1. 通过top命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过ps aux | grep PID命令进一步确定具体的线程信息:3. 通过ps -mp pid -o ...
- HDU 4870 Rating 高斯消元法
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 题意:用两个账号去參加一种比赛,初始状态下两个账号都是零分,每次比赛都用分数低的账号去比赛.有P的概 ...
- 【u203】文件夹计数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 可以用路径来描述文件夹,路径为一个包含若干部分的字符串,之间用'/'分隔.每部分均为一个文件夹的名称, ...
- Web前端实践经验总结
最近用了不少业余时间,在加强Web前端.有个很大的感触就是,web前端比较麻烦,主要是布局和样式.最主要的原因,还是之前实践得比较少,熟能生巧,不得不服啊. 自己从头开始写布局和css太费心思了,比较 ...
- 【codeforces 782D】 Innokenty and a Football League
[题目链接]:http://codeforces.com/contest/782 [题意] 每个队名有两种选择, 然后第一个选择队名相同的那些队只能选第二种; 让你安排队名 [题解] 首先全都选成第一 ...
- SCM文章9类:外部中断示例程序
JP3遇见P0口,JP5遇见P3口,P1接受该发光二极管,什么时候P1所有的都是高时,,全亮度发光二极管.因为外部中断0和1用同样的方法.这里只是外部中断0计划. #include<reg51. ...
- 英文构词法 —— circum- 前缀
1. - circum-:表示环绕,周围,圆周: circle:圆:循环: circumference:圆周,周长,胸围: circumstance:环境: circumnavigation:环球航行 ...
- AndroidStudio封装SDK的那些事
来自自己简书博客:原文地址:https://www.jianshu.com/p/4d092c915ef1 首先SDK是提供给别人调用的工具.所以常见的SDK都是以jar包,so库,aar包等方式导入A ...
- 全文检索(elasticsearch入门)
Elasticsearch篇: Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elastics ...
- events(事件): 基础1
1 所有能触发事件的对象都是 EventEmitter 类的实例. 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上. 事件名称通 ...