准备工作

两台装有的Windows Server 2012R2以及SQL Server 2012的服务器

下载评估版 Windows Server 2012 R2

下载 Microsoft SQL Server 2012 SP1

两台机器可以相互Ping 通,测试环境为了不必要的麻烦请关闭Windows 防护墙

IP:192.168.100.101 Servername: SQL1\SQL1

IP:192.168.100.102 Servername: SQL2\SQL2

开始SQL Server 代理服务 并设置为自动开启

SQL Agent 登入设置:在服务管理中改成使用Administrator,如自建用户请确保两边用户名以及密码相同。并启动服务。

准备共享文件夹

事务日志传送的就是由主库不断产生事务日志文件的备份(或者叫归档日志,可能更好理解)而备库不断还原这些事务日志备份文件的过程。

中间需要一个文件夹作为双方的访问的共享文件夹。

如果这个共享文件夹位于主库的服务器上,主库的备份路径可以不写成UNC路径的形式,而备库则必须写成UNC路径的形式。

如果这个共享文件夹位于备库的服务器上,主库的备份路径就要写成UNC路径,而备库可以写成本地路径的形式。

如果共享文件夹即不在主库也不在备库的服务器上面,那么备份、还原目录的名称都要写成UNC路径了。

在SQL1的C 盘创建一个名为primaryBackupLog的文件夹,并设置为共享文件夹。 NUC:\\SQL1\primaryBackupLog

在SQL2的C 盘创建一个名为secondaryBackup

SQL Server 请使用SQL Server账号进行登录的,

UserName:sa Password 相同

测试环境为了不必要的麻烦,请使用Administrator账号

将SQL1的 AdventureWorks2012 恢复模式改为完整

1 USE [master]
2 GO
3 ALTER DATABASE [AdventureWorks2012] SET RECOVERY FULL WITH NO_WAIT
4 GO

对SQL1的AdventureWorks2012进行全备

1 USE [master]
2 BACKUP DATABASE [AdventureWorks2012] TO  DISK = N'C:\primaryBackupLog\AdventureWorks.BAK' WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorks2012-FullBackup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
3 GO

在SQL2上进行还原,并以STANDBY的方式进行恢复

1 USE [master]
2 RESTORE DATABASE [AdventureWorks2012]
3 FROM  DISK = N'C:\secondaryBackup\AdventureWorks.BAK' WITH  FILE = 1,
4 MOVE N'AdventureWorks2012_Data' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2\MSSQL\DATA\AdventureWorks2012_Data.mdf',
5 MOVE N'AdventureWorks2012_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2\MSSQL\DATA\AdventureWorks2012_log.ldf',
6 STANDBY = N'C:\secondaryBackup\AdventureWorks.BAK_S',
7 NOUNLOAD,  STATS = 10
8 GO

设置备份选项

配置复制作业

以下为代码方式实现

  1 -- 在主服务器上执行下列语句,以便为数据库 [192.168.100.101\SQL1].[AdventureWorks2012]
  2 -- 配置日志传送。
  3 -- 需要在主服务器上 [msdb] 数据库的上下文中运行该脚本。
  4 -------------------------------------------------------------------------------------
  5 -- 添加日志传送配置
  6
  7 -- ****** 开始: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本 ******
  8
  9
 10 DECLARE @LS_BackupJobId    AS uniqueidentifier
 11 DECLARE @LS_PrimaryId    AS uniqueidentifier
 12 DECLARE @SP_Add_RetCode    As int
 13
 14
 15 EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database
 16         @database = N'AdventureWorks2012'
 17         ,@backup_directory = N'C:\primaryBackupLog'
 18         ,@backup_share = N'\\SQL1\primaryBackupLog'
 19         ,@backup_job_name = N'LSBackup_AdventureWorks2012'
 20         ,@backup_retention_period = 4320
 21         ,@backup_compression = 2
 22         ,@backup_threshold = 60
 23         ,@threshold_alert_enabled = 1
 24         ,@history_retention_period = 5760
 25         ,@backup_job_id = @LS_BackupJobId OUTPUT
 26         ,@primary_id = @LS_PrimaryId OUTPUT
 27         ,@overwrite = 1
 28
 29
 30 IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)
 31 BEGIN
 32
 33 DECLARE @LS_BackUpScheduleUID    As uniqueidentifier
 34 DECLARE @LS_BackUpScheduleID    AS int
 35
 36
 37 EXEC msdb.dbo.sp_add_schedule
 38         @schedule_name =N'LSBackupSchedule_192.168.100.101\SQL11'
 39         ,@enabled = 1
 40         ,@freq_type = 4
 41         ,@freq_interval = 1
 42         ,@freq_subday_type = 4
 43         ,@freq_subday_interval = 15
 44         ,@freq_recurrence_factor = 0
 45         ,@active_start_date = 20141015
 46         ,@active_end_date = 99991231
 47         ,@active_start_time = 0
 48         ,@active_end_time = 235900
 49         ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT
 50         ,@schedule_id = @LS_BackUpScheduleID OUTPUT
 51
 52 EXEC msdb.dbo.sp_attach_schedule
 53         @job_id = @LS_BackupJobId
 54         ,@schedule_id = @LS_BackUpScheduleID
 55
 56 EXEC msdb.dbo.sp_update_job
 57         @job_id = @LS_BackupJobId
 58         ,@enabled = 1
 59
 60
 61 END
 62
 63
 64 EXEC master.dbo.sp_add_log_shipping_alert_job
 65
 66 EXEC master.dbo.sp_add_log_shipping_primary_secondary
 67         @primary_database = N'AdventureWorks2012'
 68         ,@secondary_server = N'192.168.100.102\SQL2'
 69         ,@secondary_database = N'AdventureWorks2012'
 70         ,@overwrite = 1
 71
 72 -- ****** 结束: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本  ******
 73
 74
 75 -- 在辅助服务器上执行下列语句,以便为数据库 [192.168.100.102\SQL2].[AdventureWorks2012]
 76 -- 配置日志传送。
 77 -- 需要在辅助服务器上 [msdb] 数据库的上下文中运行该脚本。
 78 -------------------------------------------------------------------------------------
 79 -- 添加日志传送配置
 80
 81 -- ****** 开始: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ******
 82
 83
 84 DECLARE @LS_Secondary__CopyJobId    AS uniqueidentifier
 85 DECLARE @LS_Secondary__RestoreJobId    AS uniqueidentifier
 86 DECLARE @LS_Secondary__SecondaryId    AS uniqueidentifier
 87 DECLARE @LS_Add_RetCode    As int
 88
 89
 90 EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary
 91         @primary_server = N'192.168.100.101\SQL1'
 92         ,@primary_database = N'AdventureWorks2012'
 93         ,@backup_source_directory = N'\\SQL1\primaryBackupLog'
 94         ,@backup_destination_directory = N'C:\secondaryBackup'
 95         ,@copy_job_name = N'LSCopy_192.168.100.101\SQL1_AdventureWorks2012'
 96         ,@restore_job_name = N'LSRestore_192.168.100.101\SQL1_AdventureWorks2012'
 97         ,@file_retention_period = 4320
 98         ,@overwrite = 1
 99         ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT
100         ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT
101         ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT
102
103 IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
104 BEGIN
105
106 DECLARE @LS_SecondaryCopyJobScheduleUID    As uniqueidentifier
107 DECLARE @LS_SecondaryCopyJobScheduleID    AS int
108
109
110 EXEC msdb.dbo.sp_add_schedule
111         @schedule_name =N'DefaultCopyJobSchedule'
112         ,@enabled = 1
113         ,@freq_type = 4
114         ,@freq_interval = 1
115         ,@freq_subday_type = 4
116         ,@freq_subday_interval = 1
117         ,@freq_recurrence_factor = 0
118         ,@active_start_date = 20141015
119         ,@active_end_date = 99991231
120         ,@active_start_time = 0
121         ,@active_end_time = 235900
122         ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT
123         ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT
124
125 EXEC msdb.dbo.sp_attach_schedule
126         @job_id = @LS_Secondary__CopyJobId
127         ,@schedule_id = @LS_SecondaryCopyJobScheduleID
128
129 DECLARE @LS_SecondaryRestoreJobScheduleUID    As uniqueidentifier
130 DECLARE @LS_SecondaryRestoreJobScheduleID    AS int
131
132
133 EXEC msdb.dbo.sp_add_schedule
134         @schedule_name =N'DefaultRestoreJobSchedule'
135         ,@enabled = 1
136         ,@freq_type = 4
137         ,@freq_interval = 1
138         ,@freq_subday_type = 4
139         ,@freq_subday_interval = 1
140         ,@freq_recurrence_factor = 0
141         ,@active_start_date = 20141015
142         ,@active_end_date = 99991231
143         ,@active_start_time = 0
144         ,@active_end_time = 235900
145         ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT
146         ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT
147
148 EXEC msdb.dbo.sp_attach_schedule
149         @job_id = @LS_Secondary__RestoreJobId
150         ,@schedule_id = @LS_SecondaryRestoreJobScheduleID
151
152
153 END
154
155
156 DECLARE @LS_Add_RetCode2    As int
157
158
159 IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
160 BEGIN
161
162 EXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database
163         @secondary_database = N'AdventureWorks2012'
164         ,@primary_server = N'192.168.100.101\SQL1'
165         ,@primary_database = N'AdventureWorks2012'
166         ,@restore_delay = 0
167         ,@restore_mode = 0
168         ,@disconnect_users    = 0
169         ,@restore_threshold = 45
170         ,@threshold_alert_enabled = 1
171         ,@history_retention_period    = 5760
172         ,@overwrite = 1
173
174 END
175
176
177 IF (@@error = 0 AND @LS_Add_RetCode = 0)
178 BEGIN
179
180 EXEC msdb.dbo.sp_update_job
181         @job_id = @LS_Secondary__CopyJobId
182         ,@enabled = 1
183
184 EXEC msdb.dbo.sp_update_job
185         @job_id = @LS_Secondary__RestoreJobId
186         ,@enabled = 1
187
188 END
189
190
191 -- ****** 结束: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ******

View Code

在SQL1 上进行测试

 1 use AdventureWorks2012
 2 CREATE TABLE testtable( number int ,  3 num nvarchar( 50  4  )  5  );  6 INSERT INTO testtable  7 VALUES( 1 ,  8 'aaa'  9  ); 10 GO 11 select * from testtable;

Step By Step SQL Server Log Shipping

Configure Log Shipping (SQL Server)

转载于:https://www.cnblogs.com/SignalTips/p/3999673.html

Configure Log Shipping相关推荐

  1. SQL Server Log Shipping学习总结

      SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的 ...

  2. SQL Server数据库log shipping 灾备(Part2 )

    3.配置步骤: 主服务器(A机)设置 (1) 启用Log Shipping Configuration 右键单击需要配置日志传输的数据库->Tasks-> Ship Transaction ...

  3. SQLServer主从同步配置(Log Shipping方式)

    SQLServer主从同步配置(Log Shipping方式) 目录 SQLServer主从同步配置(Log Shipping方式)

  4. sql server发布订阅和log shipping日志传送的优缺点

    快照传送 备份模式 可选方式 选项参数说明 可发布对象 逻辑说明 适合场景 缺点 PUB/SUB(发布和订阅) 快照发布 发布服务器按照预定的时间间隔向订阅服务器发布快照 表 存储过程 视图等 通过源 ...

  5. Microsoft Azure 中的 SharePoint Server 2013 灾难恢复

    摘要: 使用 Azure,你可以为内部部署 SharePoint 服务器场创建灾难恢复环境.本文介绍如何设计和实施此解决方案. 观看 SharePoint Server 2013 灾难恢复概述视频 当 ...

  6. SQL FILESTREAM与数据库快照,镜像,TDE和日志传送的兼容性

    This article is the continuation of the SQL FILESTREAM series. 本文是SQL FILESTREAM系列的继续. SQL FILESTREA ...

  7. 数据库镜像怎么还原数据库_镜像数据库上的日志传送

    数据库镜像怎么还原数据库 Both log shipping and mirroring are high availability and disaster recovery options ava ...

  8. 各类web服务器 http access log获取用户和代理ip

    IIS.apache.nginx日志中获取访客真实IP的解决方案 http://bbs.jiasule.com/thread-3957-1-1.html 一.        IIS Web服务器解决方 ...

  9. The Log: What every software engineer should know about real-time data's unifying abstraction

    分布式经典文章,先mark,后面慢慢总结一下读书心得. 原文链接:The Log: What every software engineer should know about real-time d ...

  10. SQL Server中的文件流

    This article will discuss SQL Server FILESTREAM including installation, configuration, enabling and ...

最新文章

  1. 为什么「反向传播」一定要在生物学上有对应?
  2. Linux Bash 笔记
  3. PHP正则表达式快速学习方法
  4. 10.2 运算符重载函数作为类成员函数和友元函数
  5. 蓝牙a2dp硬件卸载是什么意思_索尼这项音频黑科技 让蓝牙音质从此不输有线
  6. 普通java项目配置mybatis是总是显示数据库驱动找不到
  7. QlikSense移动端使用攻略
  8. ASP.NET与JavaScript联合操作之一 选择DataGrid中的CheckBox控件后该行背景变色
  9. perl学习之:函数总结
  10. SpringCloud学习笔记014---可以使用json对rabbitmq进行封装,方便数据传输
  11. sql as关键字_SQL AS关键字概述和示例
  12. HMAC加密的消息摘要码
  13. 怎么判断子元素距离父元素顶部位置_css子元素如何相对父元素定位?
  14. linux 下竟有想大白菜软件,大白菜U盘做PE及CDLINUX镜像共存的启动盘.pdf
  15. unity PC 、安卓修改数据库文件
  16. python中index什么意思_Python中index()和seek()的用法(详解)
  17. dbeaver(下载、安装图文过程)
  18. 【原创】快速上手使用思维导图
  19. iOS 直播技术及Demo
  20. RN学习和开发笔记(一)

热门文章

  1. new Date()浏览器兼容性问题
  2. 帆软:不使用 __parameters__ 传参,问题。
  3. TIPS:My导入数据中文乱码解决方案
  4. 希捷发布新NAS产品为小型企业提供存储便利性
  5. 动态规划------平均切分数组之和为两部分
  6. 【转载】BitSet
  7. ubuntu的无比注意事项
  8. XMarks 书签王者
  9. eclipse 查看jar包源代码两种方式
  10. linux crontab 每隔一段时间执行一次