基本概念 sql
可使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另外一个数据库(辅助数据库)。不间断地备份主数据库中的事务日志,而后将它们复制并还原到辅助数据库,这将使辅助数据库与主数据库基本保持同步。目标服务器充当备份服务器,并能够将查询处理从主服务器从新分配到一个或多个只读的辅助服务器。日志传送可与使用完整或大容量日志恢复模式的数据库一块儿使用。 shell
日志传送由三项操做组成:数据库
在主服务器实例中备份事务日志。服务器
将事务日志文件复制到辅助服务器实例。spa
在辅助服务器实例中还原日志备份。3d
日志可传送到多个辅助服务器实例。在这些状况下,将针对每一个辅助服务器实例重复执行操做 2 和操做 3。代理
日志传送配置不会自动从主服务器故障转移到辅助服务器。若是主数据库变为不可用,可手动使任意辅助数据库联机。日志
您能够为了实现报表目的而使用辅助数据库。code
配置过程blog
一、首先须要在辅助数据库建立用于备份的共享目录logbackup,主要用于存放从主数据备份来的日志文件,放在辅助数据库服务器方便读取备份日志文件,以下图
二、添加目录信任(这部很重要,由于共享目录之后在主数据服务器虽然能够读写共享目录,可是后来在经过SqlServer传输日志的时候老是由于权限的问题失败)
首先,是启用SqlServer的xp_cmdshell功能,能够经过命令启用,经过Management Studio执行如下脚本:
1 sp_configure 'show advanced options',1 2 reconfigure 3 go 4 sp_configure 'xp_cmdshell',1 5 reconfigure 6 go
可是脚本执行仅本次起做用,下次重启数据库会失效,因此能够经过界面设置来永久启用xp_cmdshell:
右击"SqlServer数据库"--方面--点击常规--选择外围应用配置器--而后将cmdshell的属性改成True,以下图
操做完以上步骤之后,开始经过Management Studio执行目录信任命令:
exec master..xp_cmdshell 'net use \\172.16.3.79\logbackup Envisi0n@#1 /user:172.16.3.79\ENADMIN';
\\172.16.3.79\logbackup--是共享目录
172.16.3.79\ENADMIN--辅助数据库服务器共享目录的用户
Envisi0n@#1--用户的密码
三、在辅助数据库服务添加防火墙程序和端口例外(SqlServer Studio和端口1433):
转到 防火墙--点击高级配置--新建规则--分步添加程序和端口的例外,这里很简单就不作说明,程序选择的目录(C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe)。
四、开始执行日志传输配置:
首先,打开主数据库的属性界面,选择“事务日志传输”,点击选择启用日志传输功能的复选框。
而后弹出主数据库日志备份相关的配置,备份文件夹的网路路径选择以前建立的共享目录,备份做业能够自行根据实际状况编辑选择。
而后,则是添加辅助数据,辅助数据库能够添加多个,在“初始化辅助数据库”界面,咱们选择在主数据库生成彻底备份,还原到辅助数据库中(辅助数据不存在,则建立它)。
在还原选项中须要选择文件夹存放数据库文件和日志文件,这些目录都是辅助数据库服务器上的目录。
在“复制文件”界面进行配置复制的一些任务,这里的任务主要是负责将主数据库的日志备份文件复制到辅助数据库服务的共享目录下,以下图
在“还原事务日志”界面配置还原备份日志的相关配置和任务计划,其中还原备份时数据库有2种状态,无恢复模式和备用模式,主要区别是无恢复模式不容许用户链接数据库查询,而备用模式容许用户查询数据(可是在数据库还原期间是不容许查询的)。通常选择备用模式,而且选择“在还原备份时断开数据库中的用户链接”。
使辅助数据库处于备用模式时,有两种配置方式:
还原事务日志备份时,能够选择使数据库用户断开链接。若是选中此选项,则日志传送还原做业每次尝试将事务日志还原到辅助数据库时,用户都将与数据库断开链接。断开链接将按为还原做业设置的计划发生。
能够选择不与用户断开链接。在这种状况下,若是用户链接到辅助数据库,则还原做业没法将事务日志备份还原到辅助数据库。事务日志备份将一直累积到没有用户链接到该数据库为止。
五、最后点击”肯定”按钮,会将主数据库备份而且还原到辅助数据库服务器,此步骤可能会执行一段较长时间,只要不报错就OK,最后能够查看辅助数据库服务器多出一个处于“备用/只读”的数据库,以下图:
六、注意,由于全部日志的备份、复制和还原都是计划任务,因此在主数据和辅助数据库服务器都要启用SQL Server代理。