SQLSERVER备份与恢复
- 格式:doc
- 大小:239.50 KB
- 文档页数:24
sqlserver 数据库备份方法SQL Server是一款常用的关系型数据库管理系统,用于存储和管理大量的数据。
在使用SQL Server数据库时,数据备份是非常重要的一项工作,可以保证数据的安全性和可恢复性。
本文将介绍SQL Server数据库备份的方法和步骤。
一、全备份全备份是最常用和最基本的备份方式,它将数据库的所有数据和日志都备份到一个文件中。
全备份可以保证数据库的完整性和一致性,同时也可以通过全备份文件来恢复数据库。
进行全备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。
2. 在“对象资源管理器”中选择要备份的数据库。
3. 右键点击选中的数据库,选择“任务”-“备份”。
4. 在“备份数据库”对话框中,选择“备份类型”为“完整”,并选择备份文件的路径和名称。
5. 点击“确定”按钮,开始备份数据库。
二、差异备份差异备份是基于全备份的增量备份方式,它只备份上次全备份之后发生变化的数据和日志。
差异备份可以减少备份文件的大小和备份时间,同时也方便了数据恢复操作。
进行差异备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。
2. 在“对象资源管理器”中选择要备份的数据库。
3. 右键点击选中的数据库,选择“任务”-“备份”。
4. 在“备份数据库”对话框中,选择“备份类型”为“差异”,并选择备份文件的路径和名称。
5. 点击“确定”按钮,开始备份数据库。
三、事务日志备份事务日志备份是备份SQL Server数据库的事务日志信息,可以用于恢复数据库到某个特定时间点的状态。
事务日志备份可以提供更精确的数据恢复能力,同时也可以释放事务日志空间。
进行事务日志备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。
2. 在“对象资源管理器”中选择要备份的数据库。
3. 右键点击选中的数据库,选择“任务”-“备份”。
4. 在“备份数据库”对话框中,选择“备份类型”为“事务日志”,并选择备份文件的路径和名称。
SQLServer2008数据库备份与恢复数据库备份和恢复是数据库管理中至关重要的任务,它们保证了数据的可靠性和安全性。
在使用SQL Server 2008进行数据库备份和恢复时,我们需要了解相关的操作步骤和技巧。
本文将为您介绍SQL Server 2008数据库备份和恢复的方法。
一、数据库备份数据库备份是指将数据库的数据、日志和文件备份到非原始数据库的操作。
通过备份操作,我们可以在出现故障或数据丢失的情况下,快速恢复数据库。
下面是SQL Server 2008数据库备份的步骤:1. 打开SQL Server Management Studio(SSMS),连接到目标数据库服务器。
2. 在SSMS左侧的“对象资源管理器”中展开“数据库”节点,选中要备份的数据库。
3. 右键点击选中的数据库,选择“任务” > “备份”。
4. 在备份对话框中,选择“数据库”选项卡,确保已正确选择了要备份的数据库。
5. 在“设置”选项卡中,设置备份文件的名称、位置和类型。
可以选择完整备份、差异备份或事务日志备份。
6. 点击“确定”按钮,开始执行备份操作。
7. 备份完成后,可以在备份文件所在的位置验证备份文件是否生成成功。
二、数据库恢复数据库恢复是指将备份的数据库还原到原始数据库或新数据库的操作。
通过恢复操作,我们可以在数据库损坏或丢失时,恢复到最近的备份点。
下面是SQL Server 2008数据库恢复的步骤:1. 打开SSMS,连接到目标数据库服务器。
2. 在SSMS左侧的“对象资源管理器”中展开“数据库”节点,找到要进行恢复的数据库。
3. 右键点击选中的数据库,选择“任务” > “还原” > “数据库”。
4. 在还原对话框中,选择“一般”选项卡,确保已正确选择了要还原的数据库。
5. 在“来源”选项卡中,选择备份文件的位置和名称,选择要还原的备份文件。
6. 在“选项”选项卡中,可以选择覆盖现有数据库,或将数据库还原到新的位置。
sqlserver备份还原数据库sql语句SQL Server备份还原数据库是数据库管理的重要操作之一,可以保障数据库的安全性和可靠性。
本篇文章将详细介绍备份还原数据库的操作流程,包括备份数据库、还原数据库的SQL语句。
以下将一步一步回答。
1. 备份数据库的SQL语句备份数据库是将数据库的数据和日志文件备份到指定的位置以进行数据库恢复。
SQL Server提供了BACKUP DATABASE语句用于备份数据库。
以下是备份数据库的SQL语句示例:BACKUP DATABASE [数据库名称]TO DISK = '备份路径'WITH INIT, FORMAT, NAME = '备份名称'其中,[数据库名称]是要备份的数据库的名称,'备份路径'是备份文件的存储路径,'备份名称'是备份文件的名称。
语句中的WITH INIT表示每次备份都初始化备份介质,FORMAT表示将备份文件格式化,使其可与其他SQL Server版本兼容。
2. 还原数据库的SQL语句还原数据库是将备份的数据库文件恢复到数据库中。
SQL Server提供了RESTORE DATABASE语句用于还原数据库。
以下是还原数据库的SQL语句示例:RESTORE DATABASE [数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY其中,[数据库名称]是要还原的数据库的名称,'备份文件路径'是备份文件的存储路径。
语句中的WITH REPLACE表示在还原数据库之前会替换掉已经存在的同名数据库,RECOVERY表示数据库将处于可使用状态。
3. 备份还原数据库的操作流程备份还原数据库的操作流程包括备份数据库和还原数据库两个步骤。
3.1 备份数据库的操作流程(1)连接到SQL Server数据库。
(2)选择要备份的数据库。
以下是使用SQL Server恢复数据库的语句:1.使用RESTORE DATABASE语句来恢复数据库:RESTORE DATABASE [目标数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY;2.如果需要恢复特定的数据文件组,可以使用RESTORE FILELISTONLY语句查看备份中的数据文件信息:RESTORE FILELISTONLYFROM DISK = '备份文件路径';3.使用MOVE子句来指定恢复的数据文件要存放在哪个位置,可以使用以下语句:RESTORE DATABASE [目标数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY,MOVE '逻辑数据文件名' TO '物理文件路径\逻辑数据文件名.mdf',MOVE '逻辑日志文件名' TO '物理文件路径\逻辑日志文件名.ldf';4.如果需要从差异备份中进行恢复,可以使用DIFFERENTIAL选项。
首先需要先进行完整备份,然后再进行差异备份。
以下是一个示例:RESTORE DATABASE [目标数据库名称]FROM DISK = '完整备份路径'WITH REPLACE;RESTORE DATABASE [目标数据库名称]FROM DISK = '差异备份路径'WITH REPLACE, RECOVERY;5.如果需要从事务日志备份中进行恢复,可以使用WITH NORECOVERY选项。
以下是一个示例:RESTORE DATABASE [目标数据库名称]FROM DISK = '完整备份路径'WITH REPLACE, NORECOVERY;RESTORE LOG [目标数据库名称]FROM DISK = '事务日志备份路径'WITH RECOVERY;6.如果需要恢复到特定的日期和时间点,可以使用STOPAT选项。
SQLServer2008数据备份与还原(操作篇)
⼀、数据库的备份
1. 选择要备份的数据库“B”,点击⿏标右键→任务→备份
2. 在打开的“备份数据库 —B”对话框中,先点击删除,然后点击“添加”
3. 在弹出的“选择备份⽬标”对话框中
4. 择好备份的路径(如“D:\数据备份”),⽂件类型选择“所有⽂件”,“⽂件名”那个位置填写上您要备份的数据库的名字(最好在您备份的
数据库的名字后⾯加上⽇期,以⽅便以后查找),之后连续点击“确定”按钮即可完成数据库的备份操作
⼆、数据库的还原
1. 选择您要还原的数据库“B”,点击⿏标右键→任务→还原→数据库
2. 在出现的“还原数据库 — school_web_db”对话框中选择“源设备”,然后点击后⾯的“…”按钮
3. 在出现的“指定备份”对话框中,点击“添加”按钮
4. 找到数据库备份的路径,选择您所要还原的数据库“B”(注意:⽂件类型选择所有⽂件),然后连续“两次”点击“确定”按钮
5. 在出现的“还原数据库 — B”对话框中,勾选上“选择⽤于还原的备份集”下的数据库前的复选框
6. 然后选择“选项”,勾选上“覆盖现有数据库”
三、还原数据库问题解决⽅案
在还原数据库“B”时,有时会遇见下图中的问题“因为数据库正在使⽤,所以⽆法获得对数据库的独占访问权”
此时我们可以按照以下步骤解决此问题
1. 右键数据库“B”,然后选择“属性”,在出现的“数据库属性 — B ”对话框中,选择“选项”,在“其他选项”下的“状态”中找到“限制访问”。
选
择“SINGLE_USER”,点击“确定”按钮
2. 按照正常还原数据库的步骤,还原数据库。
SQLServer2019数据库备份与还原脚本,数据库可批量备份前⾔最近公司服务器到期,需要进⾏数据迁移,⽽数据库属于多⽽繁琐,通过图形化界⾯⼀个⼀个备份所需时间成本很⼤,所以想着写⼀个sql脚本来执⾏。
开始1. 数据库单个备份2. 数据库批量备份3. 数据库还原4. 数据库还原报错问题记录5. 总结1.数据库单个备份图形化界⾯备份这⾥就不展⽰了,可以⾃⾏百度,下⾯直接贴代码USE MASTERIF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE BackupDataProcgocreate proc BackupDataProc@FullName Varchar(200)--⼊参(数据库名)asbeginDeclare @FileFlag varchar(50)Set @FileFlag='C:\myfile\database\'+@FullName+'.bak'--备份到哪个路径(C:\myfile\database\)根据⾃⼰需求来定BackUp DataBase @FullName To Disk=@FileFlag with init--核⼼代码endexec BackupDataProc xxx执⾏成功后便会⽣成⼀个.bak⽂件到指定⽂件夹中,如图2.数据库批量备份(时间有点长,请等待)USE MASTERif exists(SELECT * FROM sys.types WHERE name = 'AllDatabasesNameType')drop type AllDatabasesNameTypegocreate type AllDatabasesNameType as table--⾃定义表类型⽤于存储数据库名称(rowNum int ,name nvarchar(60),filename nvarchar(300))goIF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BachBackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE BachBackupDataProcgocreate proc BachBackupDataProc@filePath nvarchar(300)--⼊参,备份时的⽬标路径asbeginDeclare @AllDatabasesName as AllDatabasesNameType --⽤于存储系统中的数据库名Declare @i int --循环变量insert into @AllDatabasesName(name,filename,rowNum) select name,filename,ROW_NUMBER() over(order by name) as rowNum from sysdatabases where name not in('master','tempdb','model','msdb') --赋值set @i =1--循环备份数据库while @i <= (select COUNT(*) from @AllDatabasesName)beginDeclare @FileFlag varchar(500)Declare @FullName varchar(50)Select @FullName =name from @AllDatabasesName where rowNum = @iSet @FileFlag=@filePath+@FullName+'.bak'BackUp DataBase @FullName To Disk=@FileFlag with initset @i = @i + 1endendexec BachBackupDataProc 'C:\myfile\database\'执⾏结果效果如下图:3.数据库还原IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[ReductionProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE ReductionProcgocreate proc ReductionProc@Name nvarchar(200)--⼊参数据库名称asbeginDeclare @DiskName nvarchar(500)Declare @FileLogName nvarchar(100)Declare @FileFlagData nvarchar(500)Declare @FileFlagLog nvarchar(500)Set @FileLogName = @Name + '_log'Set @DiskName = 'C:\myfile\database\'+@Name+'.bak' ---(源)备份⽂件路径Set @FileFlagData='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@Name+'.mdf'---(⽬标)指定数据⽂件路径Set @FileFlagLog='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@FileLogName+'.ldf'---⽬标)指定⽇志⽂件路径RESTORE DATABASE @Name --为待还原库名FROM DISK = @DiskName ---备份⽂件名WITH MOVE @Name TO @FileFlagData, ---指定数据⽂件路径MOVE @FileLogName TO @FileFlagLog, ---指定⽇志⽂件路径STATS = 10, REPLACEendgoexec ReductionProc xxx执⾏后便能还原库(我是拿这三个库做测试,截的图可能没什么变化,你们可以尝试下)4.数据库还原报错问题记录当然还原的过程可能会遇到⼀些问题,⽐如:1.版本不⼀样2.SQL Sql 逻辑⽂件'XXXXX ' 不是数据库'YYY'的⼀部分。
sqlserver如何备份或恢复⼀个表_MSSQLServer如果只想备份或恢复单个表⽽不想备份或恢复整个数据库的话,往往有以下⽅法:1.在Sql server2000 中可以使⽤DTS来将该表的数据导出成另外的⽂件格式.当需要恢复时,可以将该⽂件中数据再通过DTS导⼊;或者建⽴DTS脚本来完成2.使⽤命令bcp:导出到filename⽂件中:Master..xp_CmdShell 'bcp 库名..表名 out D:\filename-c -Sservername -Usa -Ppassword'---导⼊:Master..xp_cmdShell 'bcp 库名..表名 in D:\filename -c -Sservername -Usa -Ppassword'=======================================select * into backname form tablename 来备份这个语句会先在数据库中建⼀个backname的表,然后将数据从tablename表中导⼊到backname中,但如果数据库中已经存backname这个表的话就会报错,⽽且这样备份也不科学.可以先判断表是否存在:存在,删除,备份。
if exists object_id("backname") thendrop table backnameselect * into backname from tablename========================================--对数据库备backup database 数据库名 to disk='c:\名称.bak'--对表备份,如上,写个Job定时去备份!---恢复内容结束---。
SQLSERVER数据库的备份与还原I、通常解决方式在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复。
但是,此时会出现问题,这里说明几种常见问题的解决方法。
一、孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立了一个test登录用户名,而且是以前的用户密码,用该用户登录后同样没办法操作以前属于test的用户表。
这个问题有两种办法解决。
先说解决的前提条件。
首先,要用备份文件还原数据库,我们这里的数据库名为testdb,里面有属于用户test的用户表。
这个很容易了操作了,不多讲了,在企业管理器中很方便可以恢复。
恢复后,就产生了孤立用户test。
然后,用sa用户或者具有DBA权限的用户登录,创建一个test数据库登录用户,密码随便设置了,也可以和以前的保持一致。
我们用它来对应孤立的test 用户。
下面就有两种操作方法了,第一种就是改变对象的属主,第二种就是使登录用户和数据库的孤立用户对应起来。
先说第一种方法。
1、修改对象属主就是将原本属于数据库用户test的用户表,修改为属于dbo的用户表;然后修改test登录用户的数据库为testdb,就可以直接使用test登录用户登录后对该数据库进行操作了。
使用的存储过程sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner' 参数说明[ @objname = ] 'object'当前数据库中现有表、视图、用户定义函数或存储过程的名称。
object 是nvarchar(776),没有默认值。
如果架构及其所有者具有相同的名称,则 object 可由现有对象所有者限定,格式为 existing_owner.object。
sqlserver数据库的备份与恢复sql实现sqlserver数据库的备份与恢复sql实现利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点:1.获取SQL Server服务器上的默认目录2.备份SQL语句的使用3.恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4.作业创建SQL语句的使用/*1.--得到数据库的文件目录@dbname 指定要取得目录的数据库名如果指定的数据不存在,返回安装SQL时设置的默认数据目录如果指定NULL,则返回默认的SQL备份目录名*//*--调用示例select 数据库文件目录=dbo.f_getdbpath('tempdb'),[默认SQL SERVER数据目录]=dbo.f_getdbpath(''),[默认SQL SERVER备份目录]=dbo.f_getdbpath(null)--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[f_getdbpath]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_getdbpath]GOcreate function f_getdbpath(@dbname sysname)returns nvarchar(260)assqlserver数据库的备份与恢复sql实现begindeclare @re nvarchar(260)if @dbname is null or db_id(@dbname) is nullselect @re=rtrim(reverse(filename)) from master..sysdatabases where name='master' elseselect @re=rtrim(reverse(filename)) from master..sysdatabases where name=@dbnameif @dbname is nullset @re=reverse(substring(@re,charindex('/',@re)+5,260))+'BACKUP' elseset @re=reverse(substring(@re,charindex('/',@re),260))return(@re)endgo/*2.--备份数据库*//*--调用示例--备份当前数据库exec p_backupdb @bkpath='c:/',@bkfname='db_/DATE/_db.bak'--差异备份当前数据库exec p_backupdb@bkpath='c:/',@bkfname='db_/DATE/_df.bak',@bktype='DF' --备份当前数据库日志exec p_backupdb@bkpath='c:/',@bkfname='db_/DATE/_log.bak',@bktype='LOG' --*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_backupdb]') and __(id, N'IsProcedure') = 1) sqlserver数据库的备份与恢复sql实现drop procedure [dbo].[p_backupdb]GOcreate proc p_backupdb@dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL 默认的备份目录@bkfname nvarchar(260)='', --备份文件名,文件名中可以用/DBNAME/代表数据库名,/DATE/代表日期,/TIME/代表时间@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份@appendfile bit=1 --追加/覆盖备份文件asdeclare @sql varchar(8000)if isnull(@dbname,'')='' set @dbname=db_name()if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)if isnull(@bkfname,'')='' set@bkfname='/DBNAME/_/DATE/_/TIME/.BAK' set@bkfname=replace(replace(replace(@bkfname,'/DBNAME/',@dbname) ,'/ DATE/',convert(varchar,getdate(),112)),'/TIME/',replace(convert(varchar,getdate(),108),':',''))set @sql='backup '+case @bktype when 'LOG' then 'log ' else'database ' end +@dbname+' to disk='''+@bkpath+@bkfname+''' with '+case @bktype when 'DF' then '__NTIAL,' else '' end+case @appendfile when 1 then 'NOINIT' else 'INIT' endprint @sqlexec(@sql)go/*3.--恢复数据库sqlserver数据库的备份与恢复sql实现/*--调用示例--完整恢复数据库exec p_RestoreDb @bkfile='c:/db_2022年1015_db.bak',@dbname='db'--差异备份恢复exec p_RestoreDb@bkfile='c:/db_2022年1015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb @bkfile='c:/db_2022年1015_df.bak',@dbname='db',@retype='DF'--日志备份恢复exec p_RestoreDb@bkfile='c:/db_2022年1015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb @bkfile='c:/db_2022年1015_log.bak',@dbname='db',@retype='LOG'--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_RestoreDb]') and __(id, N'IsProcedure') = 1) drop procedure [dbo].[p_RestoreDb]create proc p_RestoreDb@bkfile nvarchar(1000), --定义要恢复的备份文件名@dbname sysname='', --定义恢复后的数据库名,默认为备份的文件名@dbpath nvarchar(260)='', --恢复后的数据库存放目录,不指定则为SQL的默认数据目录@retype nvarchar(10)='DB', --恢复类型:'DB'完事恢复数据库,'DBNOR' 为差异恢复,日志恢复进行完整恢复,'DF' 差异备份的恢复,'LOG' 日志恢复@filenumber int=1, --恢复的文件号@overexist bit=1, --是否覆盖已经存在的数据库,仅@retype为@killuser bit=1 --是否关闭用户使用进程,仅@overexist=1时有效asdeclare @sql varchar(8000)sqlserver数据库的备份与恢复sql实现--得到恢复后的数据库名if isnull(@dbname,'')=''select @sql=reverse(@bkfile),@sql=case when charindex('.',@sql)=0 then @sqlelse substring(@sql,charindex('.',@sql)+1,1000) end,@sql=case when charindex('/',@sql)=0 then @sqlelse left(@sql,charindex('/',@sql)-1) end,@dbname=reverse(@sql)--得到恢复后的数据库存放目录if isnull(@dbpath,'')='' set @dbpath=dbo.f_getdbpath('')--生成数据库恢复语句set @sql='restore '+case @retype when 'LOG' then 'log ' else'database ' end+@dbname +' from disk='''+@bkfile+''''+' with file='+cast(@filenumber as varchar)+case when @overexist=1 and @retype in('DB','DBNOR') then',replace' else '' end +case @retype when 'DBNOR' then ',__ERY' else ',__Y' end print @sql--添加移动逻辑文件的处理if @retype='DB' or @retype='DBNOR'begin--从备份文件中获取逻辑文件名declare @lfn nvarchar(128),@tp char(1),@i int--创建临时表,保存获取的信息create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))--从备份文件中获取信息insert into #tb exec('restore filelistonly from disk='''+@bkfile+'''')declare #f cursor for select ln,tp from #tbopen #fsqlserver数据库的备份与恢复sql实现set @i=0while @@fetch_status=0beginselect @sql=@sql+',move '''+@lfn+''' to'''+@dbpath+@dbname+cast(@i as varchar) +case @tp when 'D' then '.mdf''' else '.ldf''' end,@i=@i+1fetch next from #f into @lfn,@tpendclose #fdeallocate #fend--关闭用户进程处理if @overexist=1 and @killuser=1begindeclare @spid varchar(20)declare #spid cursor forselect spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)open #spidwhile @@fetch_status=0beginexec('kill '+@spid)fetch next from #spid into @spidendclose #spiddeallocate #spidend--恢复数据库exec(@sql)gosqlserver数据库的备份与恢复sql实现/*4.--创建作业*//*--调用示例--每月执行的作业exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'--每周执行的作业exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'--每日执行的作业exec p_createjob @jobname='a',@sql='select * from syscolumns'--每日执行的作业,每天隔4小时重复的作业exec p_createjob @jobname='b',@sql='select * fromsyscolumns',@fsinterval=4--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_createjob]') and __(id, N'IsProcedure') = 1) drop procedure [dbo].[p_createjob]GOcreate proc p_createjob@jobname varchar(100), --作业名称@sql varchar(8000), --要执行的命令@dbname sysname='', --默认为当前的数据库名@freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日@fsinterval int=1, --相对于每日的重复次数@time int=__ --开始执行时间,对于重复执行的作业,将从0点到23:59分asif isnull(@dbname,'')='' set @dbname=db_name()sqlserver数据库的备份与恢复sql实现--创建作业exec msdb..sp_add_job @job_name=@jobname--创建作业步骤exec msdb..sp_add_jobstep @job_name=@jobname,@step_name = '数据处理',@subsystem = 'TSQL',@database_name=@dbname,@command = @sql,@retry_attempts = 5, --重试次数@retry_interval = 5 --重试间隔--创建调度declare @ftype int,@fstype int,@ffactor intselect @ftype=case @freqtype when 'day' then 4when 'week' then 8when 'month' then 16 end,@fstype=case @fsinterval when 1 then 0 else 8 endif @fsinterval1 set @time=0set @ffactor=case @freqtype when 'day' then 0 else 1 end EXEC msdb..sp_add_jobschedule @job_name=@jobname, @name = '时间安排',@freq_type=@ftype , --每天,8 每周,16 每月@freq_interval=1, --重复执行次数@freq_subday_type=@fstype, --是否重复执行@freq_subday_interval=@fsinterval, --重复周期@freq_recurrence_factor=@ffactor,@active_start_time=@time --下午17:00:00分执行go/*--应用案例--备份方案:sqlserver数据库的备份与恢复sql实现完整备份(每个星期天一次)+差异备份(每天备份一次)+日志备份(每2小时备份一次)调用上面的存储过程来实现--*/declare @sql varchar(8000)--完整备份(每个星期天一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'''exec p_createjob @jobname='每周备份',@sql,@freqtype='week'--差异备份(每天备份一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'',@bktype='DF'' exec p_createjob @jobname='每天差异备份',@sql,@freqtype='day'--日志备份(每2小时备份一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'',@bktype='LOG''exec p_createjob @jobname='每2小时日志备份',@sql,@freqtype='day',@fsinterval=2/*--应用案例2生产数据核心库:__备份方案如下:1.设置三个作业,分别对__库进行每日备份,每周备份,每月备份2.新建三个新库,分别命名为:每日备份,每周备份,每月备份3.建立三个作业,分别把三个备份库还原到以上的三个新库。
SQLServer数据库备份还原和数据恢复认识数据库备份和事务⽇志备份数据库备份与⽇志备份是数据库维护的⽇常⼯作,备份的⽬的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务⽇志⽂件还原到最近的时间点将损失降到最低点。
数据库备份数据库备份可以⼿动备份和语句备份⼀.⼿动备份数据库1.⿏标右键选择你要进⾏备份的数据库-任务-备份可以在常规选项页⾯你可以选择备份类型是进⾏完整数据库备份还是差异数据库备份2.点击添加选项,选择数据库⽂件的存放路径注意⽂件名记得加后缀.bak,便于恢复时的查找3.你还可以在选项页⾯是追加到现有的备份集,还是覆盖所有的现有备份集,还可以选择备份验证完整性(建议选择),还可以选择是否压缩备份等。
⼆.语句备份数据库use mastergoBACKUP DATABASE[test]TO DISK= N'D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test.bak'WITH NOFORMAT, NOINIT, NAME = N'test-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS GO数据库⽇志备份⾸先需要注意,数据库⽇志的备份是基于数据库完整备份,也就是说你备份数据库⽇志之前你⾸先要先对数据库进⾏⼀次完整的备份,因为之间会涉及到坚持到检查点lsn,这也是本⽂接下来要讲的重点。
⼀.⼿动备份数据库⽇志1.右键数据库-任务-备份-选择备份类型(事务⽇志)2.点添加,添加⽇志⽂件备份存储路径3.同数据库完整备份⼀样,你也可以选择覆盖现有备份集或者追加到现有备份集,这⾥现在覆盖现有备份集、验证完整性,然后确认备份⼆.语句备份数据库事务⽇志BACKUP LOG[test]TO DISK= N'D:\test.trn'WITH NOFORMAT, INIT, NAME = N'test-事务⽇志备份', SKIP, NOREWIND, NOUNLOAD, STATS =10GO数据库还原右键数据库-还原数据库-添加需要进⾏还原的数据库⽂件路径在还原源选项中你可以选择‘源数据库’,‘源设备’。
SQLServer定时、实时备份/恢复的方法(一)使用TSql代码自动备份在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。
而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。
要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。
(1)启动SQL Server Agent服务(确保SQL Server Agent服务以经启动)。
(2)在SSMS的对象资源管理中“SqlServer 管理”节点下面选择作业。
然后在其中新建作业(3)为作业添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL 语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。
(4)创建好步骤以后,接下来就是创建计划。
创建计划比较简单,按照你的需求选择执行周期和时间间隔,按照创建计划页面来设置就行(二)界面操作自动备份使用SQL作业中执行SQL脚本进行备份的方法虽然已经很简单了,但是至少还是要去写BACKUP脚本,这点有些人觉得不爽,那有没有更简单,更懒的方法来实现数据库的自动定时备份呢?有,那就是“维护计划”。
“维护计划”是在SSMS的对象资源管理中“管理”节点下面。
使用维护计划可以通过可视化的操作,只点点鼠标就可以创建数据库维护的SSIS包,然后仍然是通过SQL Server作业的方式来运行。
维护计划与前面说到的备份方法本质的不同就是:维护计划是SSIS包,上面的是T-SQL脚本。
假设我们现在有一个生产系统的数据库需要进行备份,由于数据库中的数据很多,数据文件很大,如果每次都进行完整备份那么硬盘占用了很大空间,而且备份时间很长,维护起来也很麻烦。
对此我们可以采用完整备份+差异备份的方式,每周日进行一次完整备份,每天晚上进行一次差异备份。
SqlServer数据库的备份和恢复操作图解备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server -->SQL Server组-->双击打开你的服务器-->双击打开数据库目录(如图1-1)。
图1-12、选择你的数据库名称(如数据库MyData)--> 然后点上面菜单中的工具--> 选择备份数据库(如图1-2)。
图1-23、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份(如图1-3)。
图1-3还原(恢复)数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组--> 双击打开你的服务器-->鼠标右键点击‘数据库’-->新建数据库(数据库名称可自行取)(如图1-4)。
图1-42、点击新建好的数据库名称(如数据库mydb)-->然后点上面菜单中的工具-->选择恢复数据库(如图1-5)。
图1-53、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮(如图1-6)。
图1-64、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项(如图1-7)。
在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_data.mdf,现在的数据库是mydb,就改成mydb_data.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是*_log.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定c:\sqldata\bbs_data.mdf或者d:\sqldata\bbs_log.ldf),否则恢复将报错图1-75、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复(如图1-8)。
SqlServer命令⽅式备份与还原1.备份⼀个bak⽂件,其中database_name为数据库名,⽬录路径需要存在。
这是完整备份。
BACKUP DATABASE[database_name]TO DISK='D:\database_name.bak'2.检查备份⽂件的逻辑信息,主要为LogicName,⼀个是数据⽂件mdf,⼀个是⽇志⽂件ldfRESTORE FILELISTONLYFROM DISK='D:\database_name.bak';3.还原数据库RESTORE DATABASE[database_name]FROM DISK='D:\database_name.bak'若还原到本地,且改名的需求,可⽤以下命令,其中Move后的字符串,为第⼆部中查询到的逻辑名LogicName RESTORE DATABASE[database_name]FROM DISK='D:\database_name.bak'WITHMOVE 'database_name'TO'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name.mdf', MOVE 'database_name_log'TO'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name_log.ldf', STATS =10,REPLACE其他⼏个常⽤命令--脱库,使数据库离线,不会有其他链接上来ALTER DATABASE[database_name]SET OFFLINE WITH ROLLBACK IMMEDIATE--挂载,是数据库重新上线ALTER DATABASE[database_name]SET ONLINE--当数据库显⽰正在恢复中,是⽤该命令可恢复正常RESTORE DATABASE[database_name]WITH RECOVERY--当数据库显⽰单⽤户,该命令修改为多⽤户正常模式ALTER DATABASE[database_name]SET MULTI_USER差异备份BACKUP DATABASE[database_name]TO DISK='D:\database_name_diff.bak'WITH DIFFERENTIAL镜像备份BACKUP DATABASE[database_name]TO DISK='D:\database_name_mirror1.bak'MIRRORTO DISK='D:\database_name_mirror2.bak'WITH FORMAT。
SQL Server2000 数据备份与恢复Author looger 1. 数据库备份1.1 展开服务器组,然后展开服务器。
展开“数据库”文件夹,右击数据库,指向“所有所有”子菜单,然后单击“备份数据库”命令。
1.2 在“名称”框内输入备份集名称,在“描述”框中输入对备份集的描述。
在“备份”选项中选择备份方式。
1.3 点击“添加”按钮以添加现有的目的地或创建新的目的地,点击按钮可以选择一个备份文件1.4 点击按钮后,在下面出现的窗口中选择一个文件作为备份文件,可以在“文件名”后面的文本框中输入一个新的文件名以创建一个备份文件。
1.5 此时刚才选择的文件被加入到备份文件中。
如果要添加其他的文件,则可以点击“添加”按钮添加其他的文件。
在" 重写" 选项下,单击“追加到媒体”,将备份追加到备份设备上任何现有的备份中;点击“重写现有媒体”,将重写备份设备中任何现有的备份1.6 可以选择“调度”复选框调度备份操作在以后执行或定期执行。
点击“调度”后面的按钮可以对调度进行设置1.7 在点击按钮后,可以在下面的对话框中设置调度的名称和调度的类型。
如果需要调度反复出现,则可以点击“更改”按钮1.8 点击“更改”按钮后,可以在下面的窗口中设置作业发生的时机1.9 单击“选项”选项卡。
选择“完成后验证备份”复选框,在备份时对备份进行验证。
选择“检查媒体集名称和备份集到期时间”,检查备份媒体以防意外重写。
在“媒体集名称”框中,输入将用于备份操作的媒体的名称。
如果仅指备份集到期时间,则将其保留为空2. 数据库的恢复2.1 展开服务组,然后展开服务器。
展开“数据库”文件夹,右击数据库,指向“所有任务”子菜单,然后单击“还原数据库”命令2.2 在“还原为数据库”框中,如果要还原的数据库名称与显示的默认数据库名称不同,请在其中进行输入或选择。
若要用新名称还原数据库,请输入新的数据库名称2.3 再“要还原的第一个备份”列表中,选择要还原的备份集2.4 在“还原”列表中,单击要还原的数据库备份2.5 点击“属性”按钮可以查看数据库备份的属性2.6 单击“选项”选项卡,在“还原为”中输入组成数据库备份的各数据库文件的新名称或新位置。
一、数据库存储概述1、数据文件类型· Primary data files:每个数据库都有一个单独的主要数据文件,默认以.mdf扩展名。
主要数据文件不仅包含数据信息,还包含与该数据库结构相关的信息。
创建数据库时,数据库结构相关信息不仅存在于master数据库中,同时还包含在primary data file上.· Secondary data files一个数据库可以有一个或者多个二级数据文件,默认以.ndf为扩展名。
一般来说二级数据文件并不是必须的,因为二级数据文件不包含文件位置等信息。
· Transaction logs: 数据库必须至少有一个事务日志文件,默认以.ldf为扩展名。
日志是整个数据库的命脉,事务日志不可读的话,将无法对数据库进行任何操作。
当你在数据库上进行数据操作时,数据并不是直接写入数据文件,而是先将相关操作信息写入事务日志文件。
当一个事务结束时,该事务被标记为已提交,但这也并不意味着数据从日志文件写入了数据文件中。
一个标记为已提交的事务仅仅意味着所有与该事务相关的元素已经成功完成。
The buffer cache may be updated, but not necessarily the data file.检查点(checkpoint)会周期性的发生。
检查点发生时,是确认所有已提交的事务,不管是在buffer cache或者事务日志中,都被写入相关的数据文件中。
检查点(checkpoint)可以通过以下方式来触发:1、显示调用checkpoint命令;2、Recover Interval 实例设置的周期达到(用来标识多久发生一次checkpoint)3、做了数据库备份(在简单模式下);4、数据库文件结构被改变(在简单模式下);5、数据库引擎被结束。
一般来说,写数据的过程是由系统自动完成的,如下图所示,但数据并不是直接写入.mdf或者.ndf 文件中,而是先将有关变化写入事务日志中,这也是数据库中的write-ahead机制。
sqlserver 热备方案(二)SQL Server 热备方案简介本文旨在介绍SQL Server热备方案,帮助用户了解如何进行数据库的实时备份和恢复操作。
热备方案的原理•热备方案是一种连续备份技术,可以在不影响数据库服务的情况下进行数据备份和恢复。
•热备方案通过将数据库的更改记录保存到一个特殊的日志文件中,实现连续的备份和恢复操作。
•当需要恢复数据库时,可以使用日志文件中的记录将数据库恢复到指定的时间点。
步骤1.启用数据库的完整恢复模式–打开SQL Server Management Studio。
–在对象资源管理器中,选择要备份的数据库,右键单击并选择”属性”。
–在”属性”对话框中,选择”选项”页。
–将恢复模式设置为”完整”,并点击”确定”。
2.创建备份设备–在对象资源管理器中,展开”管理”节点,然后右键单击”备份设备”节点。
–选择”新建备份设备”,并输入一个名称来标识备份设备。
–选择”磁盘”作为备份设备类型,并为其指定一个路径。
3.创建备份作业–在对象资源管理器中,选择要备份的数据库,右键单击并选择”管理”->“备份”->“新的备份作业”。
–在”新建备份作业”对话框中,选择”备份类型”为”完全”备份。
–指定备份设备,并设置备份的频率和时间。
–确认设置无误后,点击”确定”保存备份作业。
4.配置日志备份–在备份作业中,选择”新建备份作业”。
–在”新建备份作业”对话框中,选择”备份类型”为”日志”备份。
–指定备份设备,并设置备份的频率和时间。
–确认设置无误后,点击”确定”保存备份作业。
5.恢复数据库–打开SQL Server Management Studio。
–在对象资源管理器中,选择要恢复的数据库,右键单击并选择”任务”->“恢复”->“数据库”。
–在”数据库恢复”对话框中,选择”日志”恢复类型。
–选择需要恢复的备份设备,并设置恢复的时间点。
–确认设置无误后,点击”确定”开始恢复数据库。
SQL Server备份和还原的流程如下:
备份:
1. 打开SQL Server,依次展开sqlserver根目录,并打开数据库。
2. 选择要备份的数据库名,鼠标右键任务->选择备份。
3. 点击添加,选择存放数据库备份文件的地址。
4. 在弹出对话框中,点击图示按钮,选择存放数据库备份文件的地址,文件名后缀名为.bak 点击确定。
5. 点击选项,根据自己的需求进行备份设置,设置完成,点击确定,开始备份。
还原:
1. 选择要还原的数据库名,鼠标右键任务->选择还原->选择数据库。
2. 在弹出对话框中,选择源设备,点击后面的按钮,弹出指定备份对话框,点击添加按钮,选择.bak源文件,找到后,点击确定。
3. 选择选项,进行还原设置,勾选“覆盖现有数据”前面的小方框;点击“还原为”后面的按钮,要还原该数据库的数据文件和日志文件。
4. 选定好要还原的数据文件和日志文件之后,点击“确定”按钮,完成数据库还原。
备份与恢复1 数据库备份和恢复的概念SQL Server™ 2000 备份和还原组件为存储在SQL Server 数据库中的关键数据提供重要的保护手段。
通过正确设计,可以从多种故障中恢复,包括:∙媒体故障。
∙用户错误。
∙服务器永久丢失。
另外,也可出于其它目的备份和还原数据库,如将数据库从一台服务器复制到另一台服务器。
通过备份一台计算机上的数据库,再将该数据库还原到另一台计算机上,可以快速容易地生成数据库的复本。
1.1数据库备份和恢复数据库备份创建备份完成时数据库内存在的数据的副本。
可以通过还原数据库,只用一步即完成从数据库备份重新创建整个数据库。
还原进程重写现有数据库,如果现有数据库不存在则创建。
已还原的数据库将与备份完成时的数据库状态相匹配,但不包括任何未提交的事务。
恢复数据库时回滚未提交的事务。
与事务日志备份和差异数据库备份相比,数据库备份中的每个备份使用的存储空间更多。
因此,数据库备份完成备份操作需要更多的时间,所以数据库备份的创建频率通常比差异数据库或事务日志备份低。
1.2估计数据库备份的大小在执行备份和还原策略前,需要估计数据库备份需要使用的磁盘空间量。
在数据库备份过程中,备份操作只将数据库中的数据复制到备份文件。
因为数据库备份只包含数据库内的实际数据,而不包含任何未用空间,所以数据库备份很可能比数据库本身小。
可以通过使用sp_spaceused 系统存储过程估计数据库备份的大小。
2如何创建数据库备份SQL SERVER提供四种备份数据库的方法:●备份全部数据库●差异备份数据库●备份事务日志●备份数据库文件(或文件组)2.1备份全部数据库Backup格式:BACKUP DATABASE { database_name | @database_name_var }TO < backup_device > [ ,...n ][ WITH[DIFFERENTIAL ][ [ , ] FORMAT | NOFORMAT ][ [ , ] { INIT | NOINIT } ][ [ , ] { NOSKIP | SKIP } ][ [ , ] { NOUNLOAD | UNLOAD } ]]示例:备份整个MyNwind 数据库下例将整个MyNwind数据库备份到磁带上:USE MyNwindBACKUP DATABASE MyNwindTO TAPE = '\\.\Tape0'WITH FORMAT, NAME = 'Full Backup of MyNwind'下例创建用于存放MyNwind数据库完整备份的逻辑备份设备。
USE masterEXEC sp_addumpdevice 'disk', 'MyNwind_1',DISK ='c:\Program Files\Microsoft SQLServer\MSSQL\BACKUP\MyNwind_1.dat'下例将MyNwind数据库备份到MyNwind_1BACKUP DATABASE MyNwind TO MyNwind_1如何创建数据库备份(企业管理器)1.展开服务器组,然后展开服务器。
2.展开"数据库"文件夹,右击数据库,指向"所有任务"子菜单,然后单击"备份数据库"命令。
3.在"名称"框内,输入备份集名称。
在"描述"框中输入对备份集的描述。
(可选)4.在"备份"选项下单击"数据库—完全"。
5.在"目的"选项下,单击"磁带"或"磁盘",然后指定备份目的地。
如果没出现备份目的地,则单击"添加"以添加现有的目的地或创建新目的地。
6.在"重写"选项下,执行下列操作之一:∙单击"追加到媒体",将备份追加到备份设备上任何现有的备份中。
∙单击"重写现有媒体",将重写备份设备中任何现有的备份。
7.选择"调度"复选框调度备份操作在以后执行或定期执行。
(可选)8.单击"选项"选项卡并执行下列一项或多项操作:(可选)∙选择"完成后验证备份"复选框,在备份时对备份进行验证。
∙选择"备份后弹出磁带"复选框,在备份操作完成后弹出磁带。
该选项只适用于磁带设备。
∙选择"检查媒体集名称和备份集到期时间",检查备份媒体以防意外重写。
在"媒体集名称"框中,输入将用于备份操作的媒体的名称。
如果仅指定备份集到期时间,则将其保留为空。
9.如果是第一次使用备份媒体,或者要更改现有的媒体标签,则在"媒体集标签"框下选择"初始化并标识媒体"复选框,然后输入媒体集名称和媒体集描述。
只有在重写媒体时才能对其进行初始化和标识设置。
使用创建数据库备份向导创建数据库备份(企业管理器)1.展开服务器组,然后展开服务器。
2.在"工具"菜单上单击"向导"命令。
3.在"选择向导"对话框中,展开"管理"。
4.双击"备份向导"。
5.完成向导中的步骤。
2.2差异数据库备份差异数据库备份只记录自上次数据库备份后发生更改的数据。
差异数据库备份比数据库备份小而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。
使用差异数据库备份将数据库还原到差异数据库备份完成时的那一点。
若要恢复到精确的故障点,必须使用事务日志备份。
在下列情况下,可考虑使用差异数据库备份:∙自上次数据库备份后数据库中只有相对较少的数据发生了更改。
如果多次修改相同的数据,则差异数据库备份尤其有效。
∙使用的是简单恢复模型,希望进行更频繁的备份,但不希望进行频繁的完整数据库备份。
∙使用的是完全恢复模型或大容量日志记录恢复模型,希望需要最少的时间在还原数据库时前滚事务日志备份。
建议在执行差异数据库备份时使用如下过程:1.创建定期的数据库备份。
2.在每个数据库备份之间定期创建差异数据库备份(例如,对于高度活动的系统,每隔四小时或四小时以上备份一次)。
3.如果使用完全恢复模型或大容量日志记录恢复模型,则创建事务日志备份的频率比差异数据库备份大,如每隔30 分钟。
还原差异数据库备份的顺序为:1.还原最新的数据库备份。
2.还原最后一次的差异数据库备份。
3.如果使用完全恢复或大容量日志记录恢复,则应用自上次创建差异数据库备份后创建的所有事务日志备份。
示例下例为MyNwind 数据库创建一个完整的数据库备份和一个差异数据库备份。
-- Create a full database backup first.BACKUP DATABASE MyNwindTO MyNwind_1 WITH INITGO-- 过了一些时间,数据库内容发生了一些变化BACKUP DATABASE MyNwindTO MyNwind_1 WITH DIFFERENTIALGO如何创建差异数据库备份(企业管理器)1.展开服务器组,然后展开服务器。
2.展开"数据库"文件夹,右击数据库,指向"所有任务"子菜单,再单击"备份数据库"命令。
3.在"名称"框内,输入备份集名称。
在"描述"框中输入备份集的描述(可选)。
4.在"备份"框下选择"数据库—差异"。
其他操作和完全备份数据库相同。
2.3事务日志备份事务日志的概念事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录。
可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。
还原事务日志备份时,Microsoft® SQL Server™ 前滚事务日志中记录的所有更改。
当SQL Server 到达事务日志的最后时,已重新创建了与开始执行备份操作的那一刻完全相同的数据库状态。
如果数据库已经恢复,则SQL Server 将回滚备份操作开始时尚未完成的所有事务。
一般情况下,事务日志备份比数据库备份使用的资源少。
因此可以比数据库备份更经常地创建事务日志备份。
经常备份将减少丢失数据的危险。
创建事务日志备份序列为创建备份集,通常应定期生成数据库备份(如每天),并以更短的间隔生成事务日志备份(如每隔10 分钟)。
必须至少有一个数据库备份或覆盖的文件备份集,才能有效地进行日志备份。
事务日志备份序列独立于数据库备份。
可以生成一个事务日志备份序列,然后定期生成用于开始还原操作的数据库备份。
例如,假设有下列事件序列。
晚上8:00 创建的事务日志备份包含从下午4:00 到晚上8:00 的事务日志记录,中间跨越下午6:00 创建数据库备份的时间。
事务日志备份序列从上午8:00 创建的初始数据库备份到晚上8:00 创建的最后一次事务日志备份是连续的。
可以使用下列过程将数据库还原到晚上10:00 的状态(故障点):使用最后一次创建的数据库备份还原数据库。
1.创建当前活动事务日志的备份。
2.还原下午6:00 的数据库备份,然后应用晚上8:00 的数据库备份和活动事务日志备份。
还原进程检测到晚上8:00 的事务日志备份包含自上次还原备份后所发生的事务。
因此,还原操作向下扫描事务日志直至下午6:00 完成数据库备份时对应的即时点,并且只前滚事务日志备份内自该点后所完成的事务。
对晚上10:00 的事务日志备份再执行一次上述操作。
使用以前的数据库备份(早于最后一次创建的数据库备份)还原数据库。
1.创建当前活动事务日志的备份。
2.还原上午8:00 的数据库备份,然后按顺序还原全部四个事务日志备份。
不要还原下午6:00 的数据库备份。
所有完成的事务都将前滚到晚上10:00。
这个进程所用的时间比还原下午6:00 的数据库备份要长。
第二种还原数据库的方法注重由事务日志备份链所提供的冗余安全性,使用这个事务日志备份链,即使数据库备丢失份,也可以还原数据库。
可以还原以前的数据库备份,然后还原创建该数据库备份后所创建的所有事务日志备份。
如何创建事务日志备份(Transact-SQL)BACKUP LOG { database_name | @database_name_var }{ TO < backup_device > [ ,...n ][ WITH [NO_TRUNCATE|NO_LOG|TRUNCATE_ONLY]]示例下例在以前创建的命名备份设备MyNwind_log1 上创建MyNwind数据库的事务日志备份:BACKUP LOG MyNwind TO MyNwind_log1GO如何创建事务日志备份(企业管理器)1.展开服务器组,然后展开服务器。