准备工作

两台装有的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 恢复模式改为完整

 USE [master]
GO
ALTER DATABASE [AdventureWorks2012] SET RECOVERY FULL WITH NO_WAIT
GO

对SQL1的AdventureWorks2012进行全备

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

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

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

设置备份选项

配置复制作业

以下为代码方式实现

 -- 在主服务器上执行下列语句,以便为数据库 [192.168.100.101\SQL1].[AdventureWorks2012]
-- 配置日志传送。
-- 需要在主服务器上 [msdb] 数据库的上下文中运行该脚本。
-------------------------------------------------------------------------------------
-- 添加日志传送配置 -- ****** 开始: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本 ****** DECLARE @LS_BackupJobId AS uniqueidentifier
DECLARE @LS_PrimaryId AS uniqueidentifier
DECLARE @SP_Add_RetCode As int EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database
@database = N'AdventureWorks2012'
,@backup_directory = N'C:\primaryBackupLog'
,@backup_share = N'\\SQL1\primaryBackupLog'
,@backup_job_name = N'LSBackup_AdventureWorks2012'
,@backup_retention_period = 4320
,@backup_compression = 2
,@backup_threshold = 60
,@threshold_alert_enabled = 1
,@history_retention_period = 5760
,@backup_job_id = @LS_BackupJobId OUTPUT
,@primary_id = @LS_PrimaryId OUTPUT
,@overwrite = 1 IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)
BEGIN DECLARE @LS_BackUpScheduleUID As uniqueidentifier
DECLARE @LS_BackUpScheduleID AS int EXEC msdb.dbo.sp_add_schedule
@schedule_name =N'LSBackupSchedule_192.168.100.101\SQL11'
,@enabled = 1
,@freq_type = 4
,@freq_interval = 1
,@freq_subday_type = 4
,@freq_subday_interval = 15
,@freq_recurrence_factor = 0
,@active_start_date = 20141015
,@active_end_date = 99991231
,@active_start_time = 0
,@active_end_time = 235900
,@schedule_uid = @LS_BackUpScheduleUID OUTPUT
,@schedule_id = @LS_BackUpScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule
@job_id = @LS_BackupJobId
,@schedule_id = @LS_BackUpScheduleID EXEC msdb.dbo.sp_update_job
@job_id = @LS_BackupJobId
,@enabled = 1 END EXEC master.dbo.sp_add_log_shipping_alert_job EXEC master.dbo.sp_add_log_shipping_primary_secondary
@primary_database = N'AdventureWorks2012'
,@secondary_server = N'192.168.100.102\SQL2'
,@secondary_database = N'AdventureWorks2012'
,@overwrite = 1 -- ****** 结束: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本 ****** -- 在辅助服务器上执行下列语句,以便为数据库 [192.168.100.102\SQL2].[AdventureWorks2012]
-- 配置日志传送。
-- 需要在辅助服务器上 [msdb] 数据库的上下文中运行该脚本。
-------------------------------------------------------------------------------------
-- 添加日志传送配置 -- ****** 开始: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ****** DECLARE @LS_Secondary__CopyJobId AS uniqueidentifier
DECLARE @LS_Secondary__RestoreJobId AS uniqueidentifier
DECLARE @LS_Secondary__SecondaryId AS uniqueidentifier
DECLARE @LS_Add_RetCode As int EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary
@primary_server = N'192.168.100.101\SQL1'
,@primary_database = N'AdventureWorks2012'
,@backup_source_directory = N'\\SQL1\primaryBackupLog'
,@backup_destination_directory = N'C:\secondaryBackup'
,@copy_job_name = N'LSCopy_192.168.100.101\SQL1_AdventureWorks2012'
,@restore_job_name = N'LSRestore_192.168.100.101\SQL1_AdventureWorks2012'
,@file_retention_period = 4320
,@overwrite = 1
,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT
,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT
,@secondary_id = @LS_Secondary__SecondaryId OUTPUT IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
BEGIN DECLARE @LS_SecondaryCopyJobScheduleUID As uniqueidentifier
DECLARE @LS_SecondaryCopyJobScheduleID AS int EXEC msdb.dbo.sp_add_schedule
@schedule_name =N'DefaultCopyJobSchedule'
,@enabled = 1
,@freq_type = 4
,@freq_interval = 1
,@freq_subday_type = 4
,@freq_subday_interval = 1
,@freq_recurrence_factor = 0
,@active_start_date = 20141015
,@active_end_date = 99991231
,@active_start_time = 0
,@active_end_time = 235900
,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT
,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule
@job_id = @LS_Secondary__CopyJobId
,@schedule_id = @LS_SecondaryCopyJobScheduleID DECLARE @LS_SecondaryRestoreJobScheduleUID As uniqueidentifier
DECLARE @LS_SecondaryRestoreJobScheduleID AS int EXEC msdb.dbo.sp_add_schedule
@schedule_name =N'DefaultRestoreJobSchedule'
,@enabled = 1
,@freq_type = 4
,@freq_interval = 1
,@freq_subday_type = 4
,@freq_subday_interval = 1
,@freq_recurrence_factor = 0
,@active_start_date = 20141015
,@active_end_date = 99991231
,@active_start_time = 0
,@active_end_time = 235900
,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT
,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule
@job_id = @LS_Secondary__RestoreJobId
,@schedule_id = @LS_SecondaryRestoreJobScheduleID END DECLARE @LS_Add_RetCode2 As int IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
BEGIN EXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database
@secondary_database = N'AdventureWorks2012'
,@primary_server = N'192.168.100.101\SQL1'
,@primary_database = N'AdventureWorks2012'
,@restore_delay = 0
,@restore_mode = 0
,@disconnect_users = 0
,@restore_threshold = 45
,@threshold_alert_enabled = 1
,@history_retention_period = 5760
,@overwrite = 1 END IF (@@error = 0 AND @LS_Add_RetCode = 0)
BEGIN EXEC msdb.dbo.sp_update_job
@job_id = @LS_Secondary__CopyJobId
,@enabled = 1 EXEC msdb.dbo.sp_update_job
@job_id = @LS_Secondary__RestoreJobId
,@enabled = 1 END -- ****** 结束: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ******

在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)

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. SQL Server数据库log shipping 灾备(Part1 )

    1.概述 Log Shipping为SQL Server提供的数据库备份过程.它可以将数据库整个复制到另一台服务器上.在这种情况下,交易日志也会定期发送到备份服务器上供恢复数据使用,这使得服务器一直处 ...

  4. Log Shipping搭建

    1.    概述 SQL Server 使用日志传送,您可以自动将“主服务器”实例上“主数据库”内的事务日志备份发送到单独“辅助服务器”实例上的一个或多个“辅助数据库”.事务日志备份分别应用于每个辅助 ...

  5. 转 ORA-16191 "Primary log shipping client not logged on standby

    ###sample 0 原因未知: 解决办法,重建密码文件 primary db :alter system set log_archive_dest_state_2=defer sid='*' sc ...

  6. Microsoft SQL Server Version List [sqlserver 7.0-------sql server 2016]

    http://sqlserverbuilds.blogspot.jp/   What version of SQL Server do I have? This unofficial build ch ...

  7. Microsoft SQL Server Version List(SQL Server 版本)

    原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...

  8. SqlServer 版本号

    RTM (no SP) SP1 SP2 SP3 SP4 SQL Server 2014      codename Hekaton  12.00.2000.8 SQL Server 2012      ...

  9. How to configure Veritas NetBackup (tm) to write Unified and Legacy log files to a different directory

    Problem DOCUMENTATION: How to configure Veritas NetBackup (tm) to write Unified and Legacy log files ...

随机推荐

  1. 九 AIDL

      多进程 多线程 优点 安全 稳定 扩大内存空间 节约CPU时间 AIDL=Android Interface definition language   使用情况:做一个下载,不想让你的下载拖垮你 ...

  2. JQuery POST请求乱码...

    引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入: var regid = $('#oregion').combobox('getV ...

  3. 重构9-Extract Interface(提取接口)

    我们来介绍一个常常被忽视的重构:提取接口.如果你发现多于一个类使用另外一个类的某些方法,引入接口解除这种依赖往往十分有用.该重构实现起来非常简单,并且能够享受到松耦合带来的好处. public cla ...

  4. The requested URL Not Found问题

    遇到这么一个问题: 最近刚转到linux下工作 在本地运行localhost下的thinkphp程序时,出现 一开始以为是权限问题,把目录以及文件权限都改为777依然不起作用 后来发现是rewrite ...

  5. hdu1331 按着题目的公式直接写

    #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #d ...

  6. 转:怎么使用github(通俗易懂版)

    转:  https://www.zhihu.com/question/20070065 作者:珊姗是个小太阳链接:https://www.zhihu.com/question/20070065/ans ...

  7. JQuery Mobile 实战一

    今天我们来使用JQuery Mobile来开发一个web mobile app. 要实现的如下所示效果: 开始: 第一步:添加JS包等引用,直接去官网下载最新的JQuery Mobile 包,http ...

  8. hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...

  9. vim 高级使用技巧

    前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选.其实操作系统只是我们使用的一个工具, windows也好lin ...

  10. JQuery、js判断复选框是否选中状态

    JQuery: var $isChecked = $("#id").is(":checked"); alert($isChecked); JS: var $id ...