sql server 2008数据库怎么定时备份

sql server 2008数据库怎么定时备份,第1张

在SQL

Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库 *** 作的时候进行,所以我们不可能要求管理员

每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server

Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库

TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。

declare@namevarchar(250)

set@name='C:\Backup\TestDB1_'+

convert(varchar(50),getdate(),112)+'.bak'

BACKUPDATABASE[TestDB1]TO

DISK=@name

WITH NOFORMAT, NOINIT,

NAME = N'TestDB1-完整 数据库 备份',

SKIP, NOREWIND, NOUNLOAD

创建好步骤以后,接下来就是创建计划,创建计划的 *** 作十分简单,界面上说明的很详细了,我就不多说了。另外还可以配置警报和通知,不过一般很少用这个。

使用SQL作业中执行SQL脚本进行备份的方法虽然已经很简单了,但是至少还是要去写BACKUP脚本,这点有些人觉得不爽,那有没有更简单,更懒的方法来实现数据库的自动定时备份呢?有,那就是“维护计划”。

“维护计划”是在SSMS的对象资源管理中“管理”节点下面。使用维护计划可以通过可视化的 *** 作,只点点鼠标就可以创建数据库维护的SSIS包,然

后仍然是通过SQL Server作业的方式来运行。维护计划与前面说到的备份方法本质的不同就是:维护计划是SSIS包,上面的是T-SQL脚本。

假设我们现在有一个生产系统的数据库需要进行备份,由于数据库中的数据很多,数据文件很大,如果每次都进行完整备份那么硬盘占用了很大空间,而且备

份时间很长,维护起来也很麻烦。对此我们可以采用完整备份+差异备份的方式,每周日进行一次完整备份,每天晚上进行一次差异备份。使用差异备份可以减小备

份文件的大小,同时还可以提高备份的速度,不过缺点就是必须使用上一次完整备份的文件和差异备份的文件才能还原差异备份时刻的数据库,单独只有差异备份文

件是没有意义。

下面我来讲一下如何通过维护计划来实现完整备份+差异备份:

(1)在SSMS的对象资源管理器中右击“维护计划”,选择“维护计划向导”,系统将d出向导窗口,如图:

这里向导已经告诉我们维护计划到底能够干什么了,其中最后一项“执行数据库备份”正是我们所需要的。

(2)点击“下一步”按钮,进入选择计划属性窗口,输入计划的名称,由于我们的计划包括2部分:完整备份和差异备份,这2部分的执行计划是不一样的,一个是一周执行一次,另一个是一天执行一次,所以要选择“每项任务单独计划”,如图:

(3)单击“下一步”按钮,选择维护任务,这里就是可以在维护计划中执行的任务,如果你想执行的任务在这里没有,那就还是不用维护计划来做,自己写SSIS包或者SQL语句吧。我们要执行的任务都在这里,选中这2个任务,如图:

(4)单击“下一步”进入选择维护任务顺序的界面,这里我们可以看到选中的任务出现在列表中,但是我们并不能调整其顺序,那是因为在步骤2中我们选

择的是每项任务单独计划,所以这2个任务是独立的,没有先后顺序可言。如果当时选择的是另一个选项,那么这里就可以调整顺序了。

(5)选中“备份数据库(完整)”然后单击“下一步”按钮,系统将转到定义完整备份任务的界面,如图:

这个界面实在太长了,我把任务栏隐藏了都显示不完,出现了滚动条,这里我们选择要进行备份的数据库,选择为每个数据库创建备份文件,文件保存在C盘

Backup目录下,扩展名是bak,出于安全起见,我们可以选中“验证备份完整性”,当然也可以不选。在SQL2008中提供了压缩备份的新特性,使得

备份文件更小,备份速度更快,这里我们就是由压缩备份。最后是选择执行计划,我这里选的是每周日晚上0点的时候执行。

(6)单击“下一步”按钮,进入差异备份任务的设置界面,和上一步的界面是一样的, *** 作也是一样的,计划这里我们可以选择除了周日以外的每天进行差异备份,如图:

(7)单击“下一步”按钮,进入选择报告选项,这里我们可以将这个维护计划的执行报告写入文本文件中,也可以讲报告通过电子邮件发送给管理员。如果

要发送邮件的话,那么需要配置SQL Server的数据库邮件,另外还要设置SQL

Server代理中的 *** 作员,关于邮件通知 *** 作员的配置网上也讲的比较多,我这里就不详述了。

(8)单击“下一步”按钮,进入“完成该向导”的界面,系统列出了向导要完成的工作,如图:

(9)单击“完成”按钮,向导将创建对应的SSIS包和SQL作业:

(10)完成后,我们再刷新下对象资源管理器,我们可以看到对应的维护计划和该计划对应的作业:

现在维护计划是创建好了,急着想看看执行后的效果如何,不需要等到晚上12点去了,在“作业”下面,右击

DbBackupPlan.Subplan_1,选择“作业开始步骤”系统便立即执行该作业,系统运行完成后,我们便可在C:\Backup文件夹下面有

我们做的完整备份的备份文件。

以上的 *** 作可以是纯粹的无键盘 *** 作,不用写任何脚本,只需要点点鼠标即可。

这里需要注意的是,我们如果不是周日制定的该维护计划,那么制定该维护计划前一定要做个完整备份,而且该备份至少要保留到下周,不然到时候出了问题,发现只有这几个工作日的差异备份,而上一次的完整备份又被删了,那就郁闷了。

除了使用维护计划向导以外,我们还可以直接新建维护计划,也可以修改意见创建的维护计划。我们就以修改维护计划为例。对于前面创建好的完整备份+

差异备份维护计划,现在我们需要每周对数据库备份进行一次清理,在完整备份完成后,要将1个月前的备份删除掉。那么我们只需要修改一下维护计划即可,具体

*** 作如下:

(1)右击我们的维护计划,在d出式菜单中选择“修改”选项,系统将新建一个选项卡来显示当前的维护计划。如图:

左下角是可用的维护计划组件,右下面板是维护计划的流程设置面板,其上面就是该计划的子计划列表。

(2)选中Subplan_1子计划,也就是每周完整备份的子计划,将“清除历史记录”任务从工具箱中拖拽到计划面板中,然后在面板中单击“备份数据库(完整)”组件,系统将显示一个绿色的箭头,将绿色箭头拖拽到“清除历史记录”组件上,如图:

也就是说在成功完整备份了数据库后,接下来才执行清除历史记录任务。

(3)右击“清除历史记录”任务,在d出式菜单中选择“编辑”选项,系统将d出清除历史记录任务设置窗口,如图:

这里既可以清除历史记录日志,也可以删除硬盘上的历史数据。这里我们要删除4周前的历史备份数据,单击“确定”回到计划面板,我们可以看到原本“清

除历史记录”任务上的小红叉不见了。单击“保存”按钮,该计划便保存起来。(说明:我在SQL2008中文版虚拟机里面做的时候一旦修改维护计划,保存的

时候就报错灾难性故障,不过我本机的英文版是正常的,不知道是我虚拟机的问题还是中文版的Bug,反正在英文版里面是对的。)

这样修改后,以后我们都不用手动去删除那些很久以前的数据库备份了,系统在执行完备份后就会删除那些满足条件的备份数据。

数据库备份可以分为4个备份类型。

l 全备份:创建备份完成时数据库内存在的数据的副本。

l 差异备份:只记录自上次数据库备份后发生更改的数据。差异数据库备份比数据库备份小,而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。

l 日志备份:是自上次备份事务日志后对数据库执行的所有事务的一系列记录。可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。

l 文件组备份:可以备份和还原数据库中的个别文件。可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。

不同的备份类型适用的范围也不同。全备份,可以只用一步 *** 作完成数据的全部备份,但执行时间比较长。差异备份和日志备份,都不能独立作为一个备份集来使用,需要进行一次全备份。文件备份必须与事务日志备份一起使用,所以文件备份只适用于完全恢复模型和大容量日志记录恢复模型。

每一种备份类型都有不足之处,要针对需要选择备份类型,或者使用几种备份方式的配合来完成数据库的备份。

经常使用备份方式组合有以下几种:

l 全备份+差异备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行差异备份。

l 全备份+日志备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行日志备份。

l 文件组备份+日志备份:备份周期取决于数据库的大小和能力,每周期分别进行一部分数据文件备份,每天进行日志备份。

sql server数据库备份方案2008-08-05 13:15SQL Server 数据库备份方案

为了保证SQL Server 数据的安全,数据库管理员应定期备份数据库,在不同情况下应采用不同备份数据库备份策略,一方面维持数据的安全性,另一方面也可保持SQL Server 能顺畅运行。尽最大的努力减少由于数据的损坏对客户造成的损失。

概念

1) 备份工作规划

计算机软硬件的稳定性还未达到非常稳定的状态,计算机中的数据仍有损失或毁坏的情况发生。存在于计算机内的数据不安全,即使采用容错设备,也无法保证数据库 100%安全。 计算机硬件的费用可能很高,但计算机数据更珍贵,做好数据备份,可保证在各种意外发生情况时,仍能保持有数据库的完整性。 管理员必须花时间来备份数据库,但 SQL SERVER也提供不少自动化功能。

2)备份方式

数据库——完全

就是备份整个数据库的内容。若将整个数据库的内容都备份下来,需很多的存储空间来存放备份数据,但其好处是在还原数据库时,也只要将整个数据库从一份数据库备份还原到 SQL SERVER 中就可以了。它是其他备份的基础,在做其他备份之前,必须得做此种方式的备份。

数据库——差异 (Differential)

只备份从上一次执行“完全”数据库备份后有改动的数据,因此所需要的备份时间和备份空间都比“完全” 方式少,所以此方式最适合作为经常性的备份方式。

事务日志(Transaction Log)

只备份事务记录文件的内容,由于事务日志文件只会记录我们在前一次数据库备份或事务日志记录备份之后,对数据库所做的变动过程,也就是只记录某一段时间的数据库变动情况,因此在做事务记录备份之前,必须做一次“完全”的数据库备份

文件和文件组:

如果数据库的内容分散存储于多个文件或文件组,而且数据库已非常大,大到进行一次完整的数据库备份会有时间和存储空间上的问题。这时就可以使用此方式来备份数据库的部分文件或文件组。由于每次只备份部分的文件或文件组,因此需做数次不同的备份才能完成整个数据库的备份。才用此方式备份也有个好处,就是当毁坏的数据只是数据库中的某个文件或文件组时,也只要还原坏的文件或文件组备份就可以了。

3)备份方案制订原则

规划数据库的备份策略,需要考虑备份的各项变量,必须同时考虑到还原作业的进行。在做备份时,可考虑以下几点。

(1) 有多少时间以及在那些时段可进行备份

(2) 数据库变动的频率如何

(3) 数据库大小

(4) 当数据库出问题时,用户愿意等待多久让数据库还原完毕

(5) 应采用何种备份方式,做怎样的搭配

(6) 要使用哪种存储介质

4)备份方案

(1)完全数据库备份配合事务日志备份

对于数据库数据比较大,但每天的变动的内容小,可考虑采用此方式。可定期做一次完整的数据库备份,例如:每周或每月做一次“完全”数据库备份。然后再以较段短的周期,如每天或每两天做一此事务日志备份。这样平时备份工作负担比较轻,发生以外时,可将数据还原到最近期的状态。

(2)完全数据库备份配合差异式备份

此方式是将前一种方式中的事务日志备份方式改成差异式备份。其优点是在做还原时,只需在做完最近一次数据库备份的还原后,再用前一天的差异备份来还原就可以了,不像使用事务记录备份时,需一天一天还原。缺点是在比较后的日子里,每次做差异备份所需的时间和空间会增加。

(3)三种备份方式的综合使用

由于事务记录备份和差异备份各有其优缺点,因此我们可以将两种方法结合起来使用。对于数据信息非常重要,每1、2小时备份一次,可能的损失只是1、2个小时的数据。

(4)当数据库过大,有不易备份的问题时,可以采用文件或文件组备份方式,可考虑将数据库分开存于不同的文件和文件组中,然后以文件和文件组的方式将整个数据库分数次备份。此外,如果数据库中只有部分表经常变动,另一部分很少变动,也可考虑将这两部分存于不同的文件和文件组中,然后用不同的备份频率来备份其内容。 采用此方式备份数据的缺点是:必须数次 *** 作才能备份完数据。

(5)使用备用服务器

采用此方式是再准备一台服务器,先在原服务器上做完全的备份,再把此备份放到备份服务器上做还原,使两边的数据同步,以后可以定期对原数据库做事务日志备份,把事务日志放到备份服务器上还原。当原服务器出现问题既可使用备份服务器接上网络提供服务。

注意:系统数据库的备份与还原是很多用户在定义数据库备份方案中容易忽略的,系统数据库中虽然不保存业务数据,但它保存了很多SQL Server的设置,如果不备份系统数据库,那么在服务器发生故障导致系统损坏时,重新配置所有的SQL Server设置将是一个噩梦DEMO

方案一 数据库备份(常用方案)

在SQL Server备份窗口,可以通过调度设置,将当前进行的备份处理设置为定时自动处理的作用。具体的步骤如下:

1. 展开一个服务器组。

2. 展开一个服务器( SQL Server实例)。

3. 展开【数据库】,右单击要备份的数据库,在d出的菜单中选择【所有任务】—〉【备份数据库】命令。

4. 在随后打开的SQL Server备份窗口中,设置备份的相关选项。参见前面的备份方案

单击【常规】选项卡,在【调度】项中,选中【调度】复选框,然后单击【调度】复选框后的【…】按钮。在随后出现的【编辑调度】对话框中,设置时间调度安排。

5. 设置完成后,单击【确定】按钮,SQL Server将执行备份 *** 作,同时在【SQL Server 代理】—〉【作业 】中自动建立对应的作业。

6. 在【SQL Server 代理】—〉【作业 】窗口中,可以像处理普通作业一样修改或删除数据库备份窗口中定义的备份计划。

演示

方案二 数据转换法(DTS)

具体的方案就是:

1.主服务器和备份服务器装载完全一样的 *** 作系统和数据库软件,以及相应编制的管理软件;

2.事先选定需要定期更新的表、视图、存储过程等等,必要时可选择全部数据库更新;

3.使用SQL Server 提供的数据转换服务导入/ 导出向导(以SQL Server2000 为例) ,利用复制 SQL Server 对象任务,将 Microsoft SQL Server 对象从SQL Server 的一个实例复制到另一个SQL Server 中;

4.编辑反复出现的作业调度,确定发生的频率和具体时间,一般情况下,由于数据量较大,不提倡每日发生多次,尽量安排在网络空余时间发生。

这个方案优点是:

1.成本低、可靠性高, *** 作简单,较易维护;

2.系统转换时间短,备份系统替换主服务器只需几分钟。即使出现意外,备份系统很快就会恢复正常,只损失少量数据,重新输入即可;

3.本地和异地备份都是利用晚上网络空闲时间进行的,没有增加日常网络流量,不会增加网络负担。

注意选择传输对象,相同版本的SQL Server 可以相互,或者由低版本向高版本SQL Server 备份,如:

SQL Server 7.0 的实例备份到 SQLServer 2000 的实例。

SQL Server 2000 的实例备份到另一个 SQL Server 2000 的实例。

备份的 *** 作步骤:

1.打开企业管理器,选择SQLServer 服务器的数据库,单击鼠标右键,选择“所有任务”,并点选“导入数据”或“导出数据”。 如果是在主服务器上进行 *** 作,选导出数据;在备份服务器上进行 *** 作,则选导入数据。

2.第一步 *** 作后,调出“数据转换服务导入/ 导出向导”界面,单击“下一步”,进入“DTS 导入/ 导出向导”的选择数据源界面,选择“目的”,选择“制定表复制或查询”,选择要复制的对象。 弱

做选择时,首先根据具体的客户端选择数据源,如果是OLE DB客户端,选择“用于SQL Server的Microsoft提供的OLEDB 程序”。

然后选择提供数据源的服务器,接下来选择进入数据库的方式,可选择“使用Windows 身份验证”或“使用SQL Server 身份验证”。 如果选“使用SQL Server 身份验证”,须填写SQL Server 认可并对数据有修改权的用户,一般可选“SA”及其密码。最后选择要复制的数据库。

3.在“制定表复制和查询”中,选择“在SQL Server数据库之间复制对象和数据”,然后单击下一步。选择具体复制对象和相应的选项等等.。

4.通过保存调度和复制包,定制进行复制的时间和频率。

5.全部设置完成后,提示会列出源、目的、采用的方式、数据库等选项,由你确认完成。

6.如果设置结束后要进行定制时间修改,在企业管理器中,通过服务器、数据库、管理、SQL server 代理、作业,然后选择具体的作业,调出界面进行修改。

至此,你就可以在自己的中小企业环境中,轻松实现多台数据库服务器间的定时自动数据备份了。

演示

方案三 数据库维护计划+Xcopy命令(推荐使用)

1. 展开一个服务器组

2. 展开一个服务器实例(SQL Server实例)。

3. 展开【管理】,右击【数据库维护计划】,在d出的快捷菜单中选择【新建维护计划】命令。

4. 在随后出现的【数据库维护计划 —(Local)】对话框中,单击【下一步】按钮跳过欢迎页,在接下来的【选择数据库】步骤中,定义要备份的数据库。

5. 单击【下一步】按钮,跳过与数据库备份无关的步骤,在【指定数据库备份计划】步骤中,选择【作为维护计划的一部分来备份数据库】复选框;通过单击【磁带】或者【磁盘】单选按钮来选择备份设备;单击【调度】选项右边的【更改】按钮,可以在随后出现的【编辑反复出现的作业调度】对话框中设置维护计划的时间安排。

6. 单击【下一步】按钮,如果在步骤(5)中,备份设备选择的是【磁盘】设备,则会进入【指定备份磁盘目录】步骤,根据实际情况,设置此步骤中的内容。

7. 单击【下一步】按钮,进入【指定事务日志备份计划】步骤,如果需要进行事务日志备份,则选择【作为维护计划的一部分来备份事务日志】复选框。备份事务日志的其他设置步骤参考(5)~(6)。

8. 根据需要设置其他步骤,最后进入【正在完成数据库维护计划向导】步骤,设置好【计划名】,单击【完成】按钮完成数据库维护计划的定义。

9. 完成步骤(1)~(8)后,单击【数据库维护计划】,在企业管理器控制台右边的详细信息窗口中就可以看到定义好的数据库维护计划,同时,展开【SQL Server代理】—〉【作业】,可以【作业】右边的详细窗口中,可以看到维护计划自动建立的备份出路作业。

10. 通过有机维护计划,选择【属性】命令,可以修改已经定义的维护计划。

11. 通过右击维护计划,选择【删除】命令,可以删除已经定义的维护计划,同时【SQL Server 代理】—〉【作业】中的相关作业也会自动删除。

新建一个批文件 Copy.bat具体脚本如下:

@echo off

title 正在传输数据库备份文件到远程备份服务器上!

echo 提示:开始验证服务器上是否存在备份文件!

echo 请稍候!

if exist F:\DBback\*.bak (goto Process ) else goto UnFound

:Process

echo 提示:在服务器上找到了备份文件!

echo -------------------------------------------------------------------------------

echo 提示:开始删除远程备份服务器上的原始文件!

rem 备注:下列IP地址为远程备份服务器的IP地址!

del \\192.168.244.24\DBback /q /s /f

del \\192.168.244.24\DBback\*.* /q /s /f

if errorlevel 0 goto success

:success

echo 提示:成功删除原始文件!

echo -------------------------------------------------------------------------------

echo 提示:开始复制数据库备份文件到远程备份服务器\\192.168.244.24\DBback!

echo 请稍候!

rem 备注:请具体更改\\192.168.244.1\DBback为服务器备份文件存放的位置。\\192.168.244.24\DBback为备份服务器上存放的位置!

xcopy \\192.168.244.1\DBback \\192.168.244.24\DBback /y /f

rem 备注:当Xcopy命令结束后返回的Errorlevel为4说明磁盘控件不足。当Xcopy命令返回0时说明成功完成 *** 作!

if errorlevel 4 goto lowmemory

if errorlevel 0 goto showmessage

:lowmemory

echo 警告:请查看磁盘空间是否不足!

:UnFound

echo 警告:在服务器上找不到备份文件,批任务将要结束。服务器备份工作似乎没有正常进行,请确认服务器是否正常生成备份文件!

goto exit

:showmessage

echo 提示:批任务完成!

echo 提示:成功复制数据库备份到远程服务器\\192.168.244.24\DBback!

echo 按任意键结束退出!

echo --------------------------------------------------------------------------------

:exit

pause

echo 成功复制PersonnelM数据库备份到远程服务器\\192.168.244.24\1上!

Pause

利用Windows 任务计划来调度批任务

1. 单击“开始”—〉“程序”—〉“附件”—〉“系统工具”—〉“任务计划”

2. 双击“新建任务计划”,d出“任务计划向导”单击“下一步”。在选择任务窗体中选择“浏览”。我们选择要调度执行的Copy.bat文件。

3. 在接下来d出的窗体中为我们的任务计划起个名称并且选择执行频率。这里我们选择“每天”

4. 在密码确认窗体中输入本机的密码。单击“下一步”选择“完成”。至此任务计划设置完成。(有需要的话可以单击选择“在单击完成时,打开此任务的高级属性”复选框以便对此任务进行高级设置!)

方案四 同步备份服务器(脚本)

/*该部分参考了邹建的脚本*/

/*--说明:

下面的代码演示了如何利用日志还原功能,将主数据库中的数据变化及时反馈到备用数据库中

备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。

--*/

--首先,创建一个演示用的数据库(主数据库)

CREATE DATABASE Db_test

ON

( NAME = Db_test_DATA,

FILENAME = 'c:\Db_test.mdf' )

LOG ON

( NAME = Db_test_LOG,

FILENAME = 'c:\Db_test.ldf')

GO

--对数据库进行备份

BACKUP DATABASE Db_test TO DISK='c:\test_data.bak' WITH FORMAT

GO

--把数据库还原成备用数据库(演示主数据库与这个备用数据库之间的同步)

RESTORE DATABASE Db_test_bak FROM DISK='c:\test_data.bak'

WITH REPLACE,STANDBY='c:\db_test_bak.ldf'

,MOVE 'Db_test_DATA' TO 'c:\Db_test_data.mdf'

,MOVE 'Db_test_LOG' TO 'c:\Db_test_log.ldf'

GO

--启动 SQL Agent 服务

EXEC master..xp_cmdshell 'net start sqlserveragent',no_output

GO

--创建主服务器数据训与备用服务器数据库之间同步的作业

DECLARE @jogid uniqueidentifier

EXEC msdb..sp_add_job

@job_id = @jogid OUTPUT,

@job_name = N'数据同步处理'

--创建同步处理步骤

EXEC msdb..sp_add_jobstep

@job_id = @jogid,

@step_name = N'数据同步',

@subsystem = 'TSQL',

@command = N''

--主数据库中进行日志备份

BACKUP LOG Db_test TO DISK="c:\test_log.bak" WITH FORMAT

--备用数据库中还原主数据库的日志备份(应用主数据库中的最新变化

--实际应该时主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,并且备份文件应该放在主服务器和备用都能访问的共享目录中

RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak' WITH STANDBY='c:\test_log.ldf',

@retry_attempts = 5,

@retry_interval = 5

--创建调度(每分钟执行一次)

EXEC msdb..sp_add_jobschedule

@job_id = @jogid,

@name = N'时间安排',

@freq_type=4,

@freq_interval=1,

@freq_subday_type=0x4,

@freq_subday_interval=1,

@freq_recurrence_factor=1

-- 添加目标服务器

EXEC msdb.dbo.sp_add_jobserver

@job_id = @jogid,

@server_name = N'(local)'

GO

--通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成

--下面开始测试是否能实现同步

--在主数据库中创建一个测试用的表

CREATE TABLE Db_test.dbo.TB_test(ID int)

GO

--等待1分钟30秒(由于同步的时间间隔设置为1分钟,所以要延时才能看到效果)

WAITFOR DELAY '00:01:30'

GO

--查询一下备用数据库,看看同步是否成功

SELECT * FROM Db_test_bak.dbo.TB_test

/*--结果:

ID

-----------

(所影响的行数为 0 行)

--*/

--测试成功

GO

--最后删除所有的测试

DROP DATABASE Db_test,Db_test_bak

EXEC msdb..sp_delete_job @job_name=N'数据同步处理'

GO

/*===========================================================*/

/*--服务器宕机处理说明

使用这种方式建立的数据库同步,当主数据库不可用时(例如,主数据库损坏或者停机检修)

可以使用以下两种方法使备用数据库可用。

--*/

--1. 如果主数据库损坏,无法备份出最新的日志,可以直接使用下面的语句使备用数据库可读写(丢失最近一次日志还原后的所有数据)。

RESTORE LOG Db_test_bak WITH RECOVERY

--2. 如果主数据库可以备份出最新日志,则可以使用下面的语句。

--先备份主数据库的最新的事务日志

BACKUP LOG Db_test TO DISK=''c:\test_log.bak'' WITH FORMAT

--再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写(升级为主数据库)

RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak'

方案五 复制订阅

开始学习之前我们先搞清楚以下几个概念:

复制(Replication)就是将数据由某处复制到一个或多个目的地,由于对数据库分散式应用的需求日渐增加,SQL Sever也提供了复制的功能。

SQL Server 的复制功能基本上是使用“发布服务器(Publisher) ”和“订阅服务器”(Subscriber)的结构,这整个结构中包含了数个不同的组件。

(1) 发布服务器(Publisher):在复制中,发布服务器就是负责发布数据库内容给其他服务器的SQL Server (一般的我们把主服务器当作发布服务器,形象一点比喻发布服务器就好像是一本书的作者)

(2) 订阅服务器(Subscriber):订阅服务器就是指受发布服务器所发布数据的SQL SERVER,通常发布服务器只有一个,但订阅服务器可以有多个。(形象比喻订阅服务就像是读者,购买相同图书的读者可以有很多。)

(3) 分发服务器(Distributor):除了发布服务器和订阅服务器这两个基本外,另一个可以由 SQL SERVER 在整个复制结构中扮演的角色就是分发服务器。分发服务器是负责将发布服务器所发布的数据库发布、传输到各订阅服务器的服务器。在简单的复制结构中,发布服务器和分发服务器通常是使用同一个 SQL SERVER。设置为分发服务器的 SQL SERVER,会有个名为 distribution 的系统数据库存放复制信息。

(4) 发布项(Article):发布服务器所发布的数据称为发布项,发布项是进行复制时的复制单位,发布项可以是表或存储过程等数据库对象,也可以知识表中的某几列或某几项数据。

(5) 发布(Publish):一组特定的发布项组合就称为发布,也就是 SQL SERVER进行复制时所复制的数据合。当订阅服务器向发布服务器订阅数据时,是以发布为单位,而不是以发布项为单位的。即,订阅服务器只能接收整个发布中的所有 article。而不能只选择其中几个发布项类订阅,每个发布只有来自单一数据库的内容,但我们可以为数据库设置多个发布。

(6) 为适应不同的复制需求,SQL SERVER提供了发送(Push)和请求(Pull)两种不同的订阅方式。区别如下:

(a) 发送订阅(Push Subscription也称为强制订阅):所谓的发送订阅就是由发布服务器主动传送发布给订阅服务器,也就是由发布服务器控制复制的 *** 作,只要指定进行复制的时间一到,不管订阅服务器有没有提出要求,发布服务器都会将数据传送给订阅服务器。

(b) 请求订阅(Pull Subscription):请求订阅和发送订阅相反,是由订阅服务器自行根据排定的日程向发布服务器要求订阅发布,通常在订阅服务器数量较多,或是不需要即时取的最新的数据内容时,可采用此种订阅方式。

步骤:

下介绍实现复制的步骤。(以快照复制为例)

准备工作:

1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户

--我的电脑

--控制面板

--管理工具

--计算机管理

--用户和组

--右键用户

--新建用户

--建立一个隶属于administrator组的登陆windows的用户

2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录, *** 作:

我的电脑--D:\ 新建一个目录,名为: BakPUB

--右键这个新建的目录

--属性--共享

--选择"共享该文件夹"

--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限

--确定

3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

开始--程序--管理工具--服务

--右键SQLSERVERAGENT

--属性--登陆--选择"此账户"

--输入或者选择第一步中创建的windows登录用户名

--"密码"中输入该用户的密码

4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)

企业管理器

--右键SQL实例--属性

--安全性--身份验证

--选择"SQL Server 和 Windows"

--确定

5.在发布服务器和订阅服务器上互相注册

企业管理器

--右键SQL Server组

--新建SQL Server注册...

--下一步--可用的服务器中,输入你要注册的远程服务器名--添加

--下一步--连接使用,选择第二个"SQL Server身份验证"

--下一步--输入用户名和密码

--下一步--选择SQL Server组,也可以创建一个新组

--下一步--完成

6.对于只能用IP,不能用计算机名的,为其注册服务器别名

(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)

开始--程序--Microsoft SQL Server--客户端网络实用工具

--别名--添加

--网络库选择"tcp/ip"--服务器别名输入SQL服务器名

--连接参数--服务器名称中输入SQL服务器ip地址

--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

==============================================================================

正式开始:

1.配置发布服务器

a. 选中指定 [服务器] 节点

b. 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令

c. 系统d出一个对话框点 [下一步] 然后看着提示 *** 作

--直到"指定快照文件夹"

--在"快照文件夹"中输入准备工作中创建的目录: \\<服务器名>\ BakPUB

一[下一步] 直 *** 作到完成。

d. 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器

同时也生成一个分发数据库(distribution)

---------------------------------------------------------------------------

2.创建发布

a. 选中指定的服务器

b. 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会d出

一个对话框

c. 选择要创建发布的数据库,然后单击 [创建发布]

d. 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会d出一个对话框。对话

框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个

大家可以去看看帮助)

e. 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在

不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行

"SQL SERVER 2000"的数据库服务器

f. 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)

g. 然后 [下一步] 直到 *** 作完成。当完成出版物的创建后创建出版物的数据库也就变成了

一个共享数据库。

---------------------------------------------------------------------------

3.设计订阅

a. 选中指定的订阅服务器

b. 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]

c. 按照提示单击 [下一步] *** 作直到系统会提示检查SQL SERVER代理服务的运行状态,执行

复制 *** 作的前提条件是SQL SERVER代理服务必须已经启动。

d. 单击 [完成] 完成订阅 *** 作。

----------------------------------------------------------------------------

完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?

这里可以通过这种方法来快速看是否成功。

展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度

把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。

接下来就是判断复制是否成功了打

开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\下面

看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10031481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存