当前位置:首页 » 编程语言 » sql常用的备份设备
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql常用的备份设备

发布时间: 2022-08-30 07:51:12

A. sql数据库备份

SQL语句里有.
备份
backupdatabase[数据库名]todisk=[磁盘路径]
例如
backupdatabasedatatodisk='D:\1.bak'
恢复
restoredatabase[数据库名]fromdisk=[磁盘路径]
例如
restoredatabasedatafromdisk='D:\1.bak'
createPROCEDUREGY_DBBak
@bakequipint,--备份设备:磁盘&磁带
@bakpathvarchar(50),--带全路径的备份文件名
@baktypeint,--完全备份&增量备份
@baklogint,--‘0’备份日志
@bakdbint,--‘0’备份数据库
@kindvarchar(7),--备份还是恢复
@retmsgvarchar(20)output--返回信息
AS
DECLARE@DevName_datavarchar(50)
DECLARE@DevName_logvarchar(50)
declare@db_pathvarchar(100)
declare@log_pathvarchar(100)
DECLARE@RCINT
SELECT@db_path=@bakpath+'.dat'
SELECT@log_path=@bakpath+'log.dat'
SELECT@RC=0
DBCCCHECKDB(Northwind)
/***********************************************************
**CREATEBACKUPANDRESTOREDEVICES
************************************************************/
IF@RC=0
BEGIN
EXECsp_admpdevice'disk',@DevName_data,@db_path
execsp_admpdevice'disk',@DevName_log,@log_path
select@rc=@@error
IF@RC<>0
begin
EXECSP_DropDevice@Devname_data
execsp_dropdevice@devname_log
SELECT@RC=-1000
return@rc
end
END
IF@kind='backup'
BEGIN
IF@bakequip=0
BEGIN
IF@baktype=0
BEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@Devname_data
WITHINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHINIT,NO_TRUNCATE
END
END
ELSEBEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@DevName_data
WITHNOINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHNOINIT,NO_TRUNCATE
END
END
END
SELECT@retmsg='数据库备份成功!'
END
IF@kind='restore'
BEGIN
=@DevName_dataWITHREPLACE
SELECT@retmsg='恢复数据库成功!'
END
RETURN0

B. sql sever2000怎么备份数据库

准备材料:电脑、sqlserver2000

1、单击“开始”→“所有程序”→Microsoft SQL Server→“企业管理器”,打开“企业管理器”控制台窗口。

C. SQL 数据库备份

SQL语句里有.

备份
backup database [数据库名] to disk=[磁盘路径]

例如
backup database data to disk='D:\1.bak'

恢复
restore database [数据库名] from disk=[磁盘路径]

例如
restore database data from disk='D:\1.bak'

create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复

@retmsg varchar(20) output --返回信息
AS

DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0

DBCC CHECKDB(Northwind)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_admpdevice 'disk', @DevName_data,@db_path

exec sp_admpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END

RETURN 0

D. SQL在磁盘上创建了一个备份设备

USE [master] 使用master库
GO 执行
EXEC master.dbo.sp_admpdevice 执行master库中的master.dbo.sp_admpdevice 过程
@devtype = N'disk', 参数一:设备类型:硬盘
@logicalname = N'test_backup', 参数二:设备名称(逻辑名称):test_backup
@physicalname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1 \MSSQL\Backup\1.bak' 参数三:物理名称(备份文件路径)
GO 执行

E. SQL server 2008里的备份设备和备份是什么意思和区别

追加是可以在一个备份文件中存放多个备份集,还原的时候可以选定需要还原的备份,这种方式由于存放了多个备份,文件大小会根据备份集的数量而增长。而覆盖实际上是直接把备份文件覆盖了,就相当于把备份文件先删除,然后重新用那个名字存放备份。

F. 如何用SQL备份或还原数据库并且会出现的常见问题以及解决方案

一、备份数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录
3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库
4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份
二、还原数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称-->然后点上面菜单中的工具-->选择恢复数据库
4、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮
5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是zw0001.mdf,现在的数据库是zw0002,就改成zw0002.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\zw0002.mdf或者d:\sqldata\zw0002.ldf),否则恢复将报错
6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复

G. 什么是SQL Server的备份设备

肯定没设置好啦 不然怎么可能不执行自动备份

企业管理器中的Tools,Database Maintenance Planner,可以设置数据库的定期自动备份计划。并通过启动Sql server Agent来自动运行备份计划。具体步骤如下:
1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器
2、然后点上面菜单中的工具-->选择数据库维护计划器
3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择
4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定
5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:\databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名默认的是BAK
6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成
7、完成后系统很可能会提示Sql Server Agent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务
8、可以设置启动启动sql server Agent:运行Services.msc,设置sqlserverAgent为自动启动。 修改计划:打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划

H. SQL Server 数据库热备份怎么做

1、在要备份的数据库上鼠标右键单击,选择备份,见下图:

I. 怎样还备份和还原SQL数据库

首先,请问你使用的是什么数据库?(Oracle,SQL,MySQL,PostgreSQL or other DB),因为不同的DB备份的方式种类及命令可能有些不同。
基本来说大体可以分为2类:在线备份和离线备份:
离线备份:
1.可以直接 datafile and related files to your disk。
2.通过数据库带的备份工具或命令进行备份。
在线备份:
1.执行备份命令。
2.通过数据库带的备份工具进行备份。
像oracle还有一套数据库管理系统,可以通过网页浏览,然后进行对db的配置以及备份和恢复。

恢复:通过日志进行恢复!

1、备份位置

在SQL Server上,有多种备份位置可以选择,如本地磁盘,网络磁盘,远程地址,磁带等。

各种备份位置均有自己的优点和缺点。

2、逻辑备份设备

在SQL Server上,可以通过创建逻辑备份设备来完成备份。使用逻辑备份设备的好处是,当变更备份地址时,不需要更改备份脚本,只需要更改逻辑备份设备的定义即可。

创建逻辑备份设备的脚本如下:
SQL code
EXEC sp_addmpdevice @devtype=’disk’,@logicalname=’MYBackup’,@physicalname=’D:\backup\mydb.bak’

删除备份设备的脚本:
SQL code
Sp_dropdevice @logicalname=’MYBackup’

上述脚本只是删除逻辑备份设备的定义,下述脚本将同时删除备份文件:
SQL code
Sp_dropdevice @logicalname=’MYBackup’,@devfile=’DELFILE’

使用逻辑备份设备的方法如下:
SQL code
Backup database mydb to MYBackup

当然,还可在逻辑备份设备上指定过期时间等备份属性,如:

SQL code
Backup database mydb to MYBackup WITH EXPIREDATE=’13/01/2010’
或:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7

3、备份集与存储

每一份备份包含于一个备份集,而一个备份集包含于一个存储集。通过系统GUI进行备份时,SQL Server会自动指定备份集和存储集,目的则是为了简化管理。用T-SQL显示指定则用如下语法:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,

NAME=’FULL’,

MEDIANAME=’ALLBackups’

NAMEs是指备份集名称,MEDIANAME是指存储集名称。

4、全备份
不管恢复模式是哪一个,所有的备份都必须要有一个全备份,特别是日志备份和差异备份,如果没有全备份的话,将无法进行恢复。

简单的全备份脚本如下所示,也可以通过维护计划来指定全备份:
SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’

但需要注意的是,上述命令是将数据库备份附加到当前的存在的文件上,如果不存在则创建它,并不会覆盖原有文件。要覆盖同名的备份文件,需要指定INIT参数。

SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’ WITH INIT

5、日志备份

在完全恢复模式或者大容量日志恢复模式下,日志备份不仅仅是恢复的需要,同时也是手工管理事务日志文件的一种方式。如果从不进行备份的话,在完全恢复模式或者大容量恢复模式下,事务日志将会持续增长,直至消耗完所在磁盘。

日志备份的脚本如下:
SQL code
BACKUP LOG mydb_log TO DISK=’D:\backup\mydb.trn’

需要养成使用.trn为日志备份的扩展名的习惯。

每个在数据库上的动作都会被安排一个Log Sequence Number (LSN)。如果需要还原到指定的时间点,需要有持续的LSN记录。也就是说,在完全恢复模式或者大容量日志模式下,一个不被打断的事务日志备份链是恢复数据库的基本要求。

6、差异备份
使用日志备份来恢复时,无疑是一个很慢的过程,特别是上一个全备份的历史比较悠久时。使用差异备份,便能缩短恢复时间。事实上,差异备份只是BACKUP DATABASE的一个选项,如下:

SQL code
BACKUP DATABASE mydb TO DISK=’D:\backup\mydb.dif’ WITH DIFFERENTIAL,INIT

进行数据库恢复时,先恢复数据库全备份,再恢复数据库差异备份,最后才恢复日志备份。

差 异备份是与上一次全备份紧密相连的,不管期间有多少次日志备份和差异备份,差异备份还是会从上一次全备开始备份。因此,经常会遇到这样的一种情况,在生产 库上需要临时使用数据库时,便用BACKUP DATABASE … TO DISK=’..’进行了一个备份,下一次的差异备份便会以这回的全备为准,如果过后把这个临时全备删除掉后,后面的差异备份就没用了。

差异备份并不意味着磁盘空间肯定会少,这取决于实际情况。当期间大量操作发生时,差异备份还是会变得很大。
7、错误检测

在备份过程中,备份进程会同时验证数据,或者校验不完整页(torn page),或者验证校验和(checksum)。要使用该功能,需要激活该选项。

不完整页检测(Torn-page dection)仅仅检查每一个页看是否已经写完成。如果发现一个页只有部分被写入,那么就将其标记为torn。

校验和验证(checksum validation)是一种新的页验证机制。它会为每个页添加一个值来表明该页实际的大小。虽然看起来是个代价很高影响性能的操作,但事实上,它的效率非常高,与torn-page差不多。

备份进程在备份数据库时,会通过比较在数据库里的和随着备份页写入硬盘时这两个之间的值来进行验证。但是,这个验证并不是自动完成的,需要显示指定,在GUI页面上是个选项。如果通过T-SQL来备份的话,语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\data\mydb.bak’ WITH CHECKSUM

如果备份过程中,发现了错误,SQL Server会错误信息写入MSDB上的SUSPECT_PAGE表里面。同时,在默认情况下,备份行为会停止的(STOP_ON_ERROR),以便管理员排查错误。

但 备份过程中的校验和验证还有另外一个选项(CONTINUE_ON_ERROR),也就是说,如果发现错误,备份过程并不会中断,而是将错误页信息记录在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多只能达到1000行,如果达到了的话,备份同 样会失败。

激活校验和验证的话,很明显会影响备份的性能。但还是很有必要的。

8、安全备份

完全备份和日志备份语句还支持使用密码属性,如:

SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’ WITH PASSWORD=’mydb’

所指定的密码是很容易破解的。因此,如果确实需要对某些备份数据进行加密的话,可以将备份存放于加密的文件系统或者其它安全的存储设备上。

同时,SQL Server还提供了对真实列进行加密的功能。该加密功能是工业标准。

9、条带备份

有些情况下,单独一个硬盘无法存储一个完整的数据库备份时,可以将数据库备份分成多个部分存储在不同的磁盘上,这种备份方式成为条带备份。使用条带备份的优点很明确,就是能很好的利用空间,但如果某部分备份丢失或者损坏,那整个备份将无效。

其语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’,

DISK=’E:\mydb.bak’ WITH INIT,CHECKSUM,

CONTINUE_ON_ERROR

上述D盘和E盘上的备份是不可分割的。

10、镜像备份
与条带备份在多个磁盘上保留同一份备份不同的是,镜像备份是在不同磁盘上保留多份备份。其语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’

MIRROR TO DISK=’E:\mydb.bak’

WITH INIT,CHECKSUM,CONTINUE_ON_ERROR

在实际情况下,对日志备份采取镜像备份方式会比较合适。

11、COPY-ONLY 备份
在差异备份里曾提到过,差异备份是建立在上一个全备份的基础上的。因此如果在一个事先安排好的备份计划里,如果在全备份和差异备份之间再进行了一次全备份后,其差异备份会被打断,如果把临时全备份删除掉后,就产生了数据丢失。

在SQL SERVER 2005以后,SQL SERVER提供了一个选项-only.使用-only选项进行的全备份便不会打算原先的备份计划,语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’

WITH INIT,CHECKSUM,COPY_ONLY

三、文件和文件组备份

在SQL SERVER 7.0以后,SQL Server提供了filegroup的概念。文件组不仅仅提供了一个逻辑的存储地址,还允许将不同的表和索引放在不同的文件组上来提高性能和减少备份时间。

在数据存储概述上,提到了数据库有三类数据文件,一般来说,数据库至少需要两个(.mdf和.ldf)或者更多的文件。SQL Server不仅允许有多个文件存在(.ldf),还允许多个文件组存在。

一个文件组可以有多个文件,每个文件需要仔细规划好初始大小及增量。

1、默认文件组

在创建对象时,如果未明确指定文件组,那么该对象将会存放在默认的文件组上。在默认情况下,默认的文件组是primary,但由于primary文件组不仅可以包含用户数据,同时还存储着数据库结构等技术信息,因此一般建议添加额外的一个文件组,并将其指定为默认文件组。

SQL Server只能有一个默认的文件组。

修改默认文件组的语句如下:
SQL code
ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;

2、为对象指定文件组
当创建表或者索引时,不管是用户还是系统都需要将表或索引放在某个文件组上。如果在创建表或索引时指定文件组,那么表或索引将会存储在指定的文件组上,而不是默认的文件组。

其指定语句如下:
SQL code
CREATE TABLE test( [id] int,[notes] text) on mydbdata

也可以通过GUI创建表的页面来指定文件组。

3、将对象迁移至指定文件组
如果需要变更对象的存储位置,最简单的方式则是通过GUI属性页面来进行修改通过该方法,可以直观的看到对象的迁移过程。

同时也可以通过T-SQL来修改,例如:
SQL code
ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)

4、备份数据文件
备份数据文件同样可以通过BACKUP DATABASE语句来实现。如下:
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’ TO DISK=’E:\Backup\mydbdata.bak’

上述语句相当于数据文件级别的全备份,与数据库级别的备份类似,文件级别上的备份也有差异备份,当然前提是要有相对应的文件全备份。

差异备份的语句如下:
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’

WITH DIFFERENTIAL

TO DISK=’E:\Backup\mydbdata_dif.bak’

5、备份文件组
与单独备份文件类似,也可以对文件组进行类似的备份操作。备份文件组的方式也有两种,一种是通过GUI界面指定,一种则是通过T-SQL。

T-SQL的语句如下:
SQL code
BACKUP DATABASE mydb FILEGROUP=’PRIMARY’ TO DISK=’E:\Backup\mydbpri.bak’

6、不完全备份(partial backup)
在文件组备份上,不完全备份其实相当于完全备份,可以通过指定关键字READ_WRITE_FILEGROUPS来实现不完全备份。

语句如下:
SQL code
BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=’D:\mydb.bak’