如何将SQL数据库备份到网络共享

如何将SQL数据库备份到网络共享,第1张

定期备份SQL数据库是必须的。 我们已经覆盖的方式就可以轻松备份您的所有SQL Server数据库到本地硬盘中,但这并不能防止驱动器和/或系统故障。 作为针对此类灾难的额外保护层,您可以在网络共享上复制或直接创建备份。

在本地备份,然后复制到网络共享

完成此任务的首选和最直接的方法是简单地创建数据库的本地备份,然后将相应的备份文件复制到网络共享。您可以通过创建如下所示的批处理脚本来完成此操作:

SET LocalFolder = C:Program Files Microsoft SQL ServerMSSQL1MSSQLBackup 

SqlCmd -E -Q“备份数据库MyDB到磁盘=%LocalFolder%MyDBbak” 

XCopy“%LocalFolder%MyDBbak”“\ 1921681655BackupDatabases”/ Z / V 

DEL“%LocalFolder%MyDBbak”

此脚本执行以下操作(逐行):

将变量设置为本地SQL备份目录。

创建MyDB的SQL备份(使用Windows身份验证)到本地SQL备份目录。

将本地备份文件复制到网络共享。

删除本地备份文件。

同样,这是首选方法,因为它的工作原理和备份失败的可能性是最小的,因为备份是在本地磁盘上创建。 但是,如果没有足够的磁盘空间来存储备份文件的本地副本,则此操作将失败。 在这种情况下,您需要添加额外的磁盘空间或直接备份到网络共享。

直接备份到网络共享

通常,当您尝试使用以下命令直接创建备份到网络共享时:

SqlCmd -E -Q“备份数据库MyDB到磁盘=\ 1921681655BackupDatabasesMyDBbak”

你很可能会得到一个错误的行:

消息3201,级别16,状态1,服务器JF,行1 

无法打开备份设备\ 1921681655BackupDatabasesMyDBbak。 操作系统错误5(访问被拒绝。)。 

消息3013,级别16,状态1,服务器JF,第1行 

BACKUP DATABASE异常终止。

尽管使用Windows身份验证(-E开关)和Windows帐户作为通过Windows资源管理器访问和复制文件到共享的能力运行SQL备份命令,仍会出现此错误。

此操作失败的原因是SQL命令在SQL Server服务运行的帐户的边界内执行。 当您在计算机上查看服务列表时,很可能您将看到运行为(登录为)列的SQL Server服务本地系统或网络服务,它们是没有网络访问权限的系统帐户。

在我们的系统上,网络共享命令的备份失败,因为我们有SQL Server服务作为本地系统运行,再也无法获得任何网络资源。

为了允许SQL直接备份到网络共享,我们必须将SQL Server服务作为可访问网络资源的本地帐户运行。

编辑SQL Server服务的属性,并在“登录”选项卡上将服务配置为作为具有网络访问权限的备用帐户运行。

单击“确定”后,您将收到一条提示,指示在重新启动服务之后,设置才会生效。

重新启动服务。

服务列表现在应显示SQL Server服务正在作为您配置的帐户运行。

现在当您运行命令直接备份到网络共享:

SqlCmd -E -Q“备份数据库MyDB到磁盘=\ 1921681655BackupDatabasesMyDBbak”

您应该会看到一个成功消息:

处理数据库MyDB的152页,文件1上的文件MyDB。 

为数据库MyDB处理2页,文件1上的文件MyDB_log。 

BACKUP DATABASE在0503秒(2493 MB /秒)中成功处理了154页。

使用备份文件现在在网络共享目录:

网络共享注意事项请务必注意,备份命令希望能够直接连接到网络共享,而不会提示您输入凭据。 您配置要运行的SQL Server服务的帐户必须与网络共享具有可信连接,其中相应的凭据允许访问,否则可能会发生以下错误:

消息3201,级别16,状态1,服务器JF,行1 

无法打开备份设备\ 1921681655BackupDatabasesMyDBbak。 操作系统错误1326(登录失败:未知用户名或密码错误。)。 

消息3013,级别16,状态1,服务器JF,第1行 

BACKUP DATABASE异常终止。

此错误表示网络共享不接受帐户的用户名和密码,并且命令失败。

另一个要记住的问题是备份直接执行到网络资源,因此网络连接中的任何打嗝可能会导致您的备份失败。 因此,您只应该备份到稳定的网络位置(即可能不是***)。

安全隐患

如前所述,使用在本地备份然后复制到网络共享的方法是首选,因为它允许您将SQL服务作为仅具有本地系统访问权限的帐户运行。

通过将服务作为备用帐户运行,您打开了潜在的安全问题的大门。 例如,恶意SQL脚本可以在备用帐户下执行并攻击网络资源。 此外,对相应帐户(密码更改/到期或帐户的删除/禁用)的任何更改将导致SQL Server服务无法启动。

如果您使用备用帐户运行SQL Server实例,请务必记住这些要点。 如果采取适当的预防措施,则这些不显示阻止程序,则应考虑添加额外的硬盘驱动器空间,然后实施本地备份和复制,以便可以使用本地帐户运行SQL服务。

1、找到需要备份的数据库,右键单击选中的数据库,点击任务,再点击备份。

2、选择备份数据库的路径并点击确定。

3、备份完成后,点击菜单上的确定。

4、备份完成后,打开数据库界面,右键数据库选择还原数据库。

5、在当前界面找到刚才备份的文件,点击确定。

6、选中覆盖现有数据库复选框,点击确定,数据库开始还原。

7、此时就还原成功了,点击确定即可。

sqlserver2005自动备份数据库到其他服务器:

SQL Server 2005中可以使用维护计划来为数据库自动备份,减少数据库管理员的工作负担。其使用方法如下:

(1)启动sql server Management Studio,在对象资源管理器窗口里选择管理——维护计划选项。

2)右击维护计划,在弹出的快捷菜单里选择维护计划向导选项

3)弹出如图所示的维护计划向导对话框,单击下一步按钮

4)弹出如图所示选择目标服务器对话框,在名称文本框里可以输入维护计划的名称;在说明文本框里可以输入维护计划的说明文字;在服务器文本框里可以输入要使用的服务器名;最后选择正确的身份证信息,单击下一步按钮。

5)弹出如图所示选择维护任务对话框,在该对话框

里可以选择多种维护任务:检查数据库完整性、收缩数据库、重新生成或组织索引、更新统计信息、清除历史记录、执行sql

Server代理作业、备份数据库等。在本例中选择备份数据库(完整)复选框,其他维护任务的设置都大同小异。

1、A服务器作 主sql server2012数据库服务器。B服务器作 SQL 的备份服务器。

2、B服务器打开文件共享功能,共享一个目录,共享权为可写入。

3、A服务器作“映射网络驱动器”操作,将B服务器共享的那个文件夹映射为一个驱动器。

4、A服务器 SQL Server 中的数据库维护中,依向导作备份计划,设定备份文件的位置为刚做好的“网络驱动器”的位置。

5、操作完成,手动起动维护计划,试一试,备份的文件就在“网络驱动器”中了,也就是真实存放处为B的那个被共享的文件夹中了。

6、注意,这里指的不是双机热备,双机热备实现比较难,不在这里讨论了。

作为程序员或者数据库维护人员,可能大家经常 要做的事情就是备份数据库,并且为了安全起见最好是异地备份,但是如果要经常备份,然后把他们传到本地,是一件非常费时费力的事情,尤其像我这种比较懒的程序员,甚至有时候会忘记备份',所以比较好的解决办法就是让SQL Server自动备份,同时自动下载。同时由于SQL Server自动备份的bak文件通常都比较大,如果直接传到本地,要花比较久的时间,因此为了提高效率最好在备份后先压缩,并且为了安全起见,下载下来的文件还要加密。那么有没有可能让SQL自动备份,加密压缩,自动下载的所有流程都自动完成呢,答案是肯定的。下面我就将我使用到的工具、方法和代码共享出来,供大家参考。

第一个步骤就是让SQL Server自动备份数据库,这方面的文章比较多,最常用的是使用SQL Server的代理,定时执行一个“作业”。基本步骤就是先编写一个执行备份的存储过程,然后在SQL Server的企业管理器中,选择“管理——>SQL Server代理——>新建作业”,然后在新建作业步骤中类型选择Transact-SQL,再在命令中输入执行备份的存储过程(或者开始不建立存储过程,在这里直接输入备份的SQL代码也可)就可以了。

第二个步骤就是加密并压缩备份的数据库文件。我自己试了一下,一个200M的SQL 备份文件,用WinRAR压缩之后的大小是18M左右,所以为了快速传到本地,压缩是非常有必要的。为了在备份后,马上进行压缩,最方便的就是直接使用SQL命令执行压缩,由于WinRAR可以通过命令行调用,所以我们可以使用SQL Server中的xp_cmdshell命令来执行压缩指令,同时通过其中的一些参数指定压缩密码,这样加密压缩就实现了。(为了实现此功能,服务器上要安装WinRAR)

最后还需要定时自动下载。要实现这个功能可以使用windows的任务计划,再结合系统自带的ftp命令即可实现。

下面给出实现此功能的完整步骤和代码:

服务器端:

1、 在要备份的数据库中建立存储过程:

CREATE PROCEDURE [do_backup] AS

declare

@prefix nvarchar(100),

@datefile nvarchar(100),

@bakfile nvarchar(100),

@rarfile nvarchar(100),

@delcmd nvarchar(100),

@rarcmd nvarchar(150)

set @prefix='E:\Bak\databasename\' --备份文件夹

set @datefile='fzjs'+cast(Year(GetDate()) as varchar(4))+cast(Month(GetDate()) as varchar(2))+cast(Day(GetDate()) as varchar(2))

set @bakfile=@prefix+@datefile+'bak'

set @rarfile=@prefix+'RAR\'+@datefile+'rar'

BACKUP DataBASE databasename2 TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'databasename数据备份', NOSKIP , STATS = 10, NOFORMAT

set @delcmd = 'del '+@prefix+ 'RAR\rar' --先清空RAR备份文件夹

set @rarcmd ='C:\Progra~1\WinRAR\WinRARexe a -pyourpw '+@rarfile+' '+@bakfile --将yourpw改为您要设置的密码,进行加密压缩

exec masterxp_cmdshell @delcmd

exec masterxp_cmdshell @rarcmd

GO

2、 数据库管理器——管理——>作业——>新建作业——设置作业的执行程序和运行时间,根据自己的备份需要进行设置,然后启用作业。

3、 在服务器的FTP中将数据压缩备份的目录设置好。

4、 在本地建立一个ftp命令的文本文件:c:\ftptxt

文件中输入以下内容(替换成您自己的内容并去掉[]):

open [您的服务器IP地址]

[数据库备份压缩目录FTP登录用户名]

[数据库备份压缩目录FTP登录密码]

verbose off

lcd [本地保存路径]

prompt off

mget rar

bye

5、 然后建立一个autoftpbat的批处理文件,执行ftp命令。

ftp -s:c:\ftptxt

6、 在控件面板的任务计划管理中,添加批处理文件的定时自动运行时间,并注意要与服务器数据库备份时间相衔接。

这样,调试成功以后,整个过程就大功告成了,以后就不用去经常去做这些繁琐的事情啦!

如果大家在使用的过程中,有什么问题,或者更好的一些方法,欢迎与本人交流。

1、打开SqlServer数据库,选中要备份的数据库,右键选择任务,点击备份。

2、输入数据集名称,选择备份路径,点击确定就完成了数据库的备份。

3、右键选择任务,点击还原,选择数据库。

4、选择之前备份的数据库,点击确定。

5、至此SqlServer备份还原的操作就已完成。

一、自动备份数据库

1、在电脑开始菜单中选择“SQL Server Management Studio”双击。在出现的界面中点击“连接”按钮。

SQL Server 2008怎么自动备份数据库

2、在出现的“ Microsoft SQL Server Management Studio”界面中选择“管理”下的“维护计划”右击维护计划,点击“维护计划向导”,

SQL Server 2008怎么自动备份数据库

3、在出现的“SQL Server维护计划向导”界面中点击“下一步”

在出现的界面中把名称和说明写上。然后点击“更改”设顶备份计划

在出现的“作业计划属性”界面中,更改执行时间,也就是多久备份一次。这里该为每天备份。间隔时间更改为“1”更改执行一次时间为0:00:00也就是在每天的0点自动备份数据。

更改好以后,就可以在下面看到“在每天的 0:00:00 执行。将从 2014-5-16 开始使用计划。”然后点击“下一步”按钮

在选择维护任务界面中选择要备份的数据库文件。然后点击下一步。

在选择维护任务顺序中,可以移动要备份的数据库文件的顺序。然后点击“下一步”

在定义“备份数据库完整”界面中,选择数据库后面下拉菜单中的数据库文件。然后点击“确定”按钮

在定义“备份数据库完整”界面里选择备份路径。然后点击“下一步”

在“选择报告选项”界面中设置好“报告文本文件”的路径。然后点击“下一步”

在出现的“完成该向导”界面中会看到设置备份的详细信息。

这样数据库自动备份就成功了。

二、语句备份方式

declare 

@name varchar(250) 

set @name='C:\DB1_'+ convert(varchar(50),getdate(),112)+'bak' 

BACKUP DATABASE [你的数据库名称] TO  

DISK=@name 

WITH NOFORMAT, NOINIT,  

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

SKIP, NOREWIND, NOUNLOAD

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何将SQL数据库备份到网络共享

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情