SQL Server数据库备份与还原处理
- 格式:doc
- 大小:57.00 KB
- 文档页数:7
数据库备份与还原操作一、备份数据库操作(1) 打开企业管理器,按下图依次打开,然后右击要备份的数据库,按下图选中备份数据库(图1-1 示)。
图1-1(2) 点击删除,然后点击“添加”按钮 (图1-2示)。
图1-2(3) 系统弹出“选择备份目的”窗口,在“文件名(F):”栏中输入或选择备份路径(图1-3示)。
图1-3(4) 系统弹出“备份设置位置”对话框,选择备份路径并键入备份文件名(如:选择D:\DataBase\,文件名为:fjjr_jwgl1db061113。
图1-4示),并点击“确定”。
图1-4(5) 系统回到“SQL Server 备份”窗口,单击“确定”后,系统自动备份数据库,直到系统完成即可完成数据库备份操作。
图1-5二、还原数据库操作(1) 打开企业管理器,按下图依次打开,然后右击要备份的数据库,按下图选中“还原数据库(R)”(图2-1示)。
图2-1(2) 系统弹出“还原数据库”窗口,选择“从设备(M)”单选框(图2-2示)图2-2 (3) 单击“选择设备(E)...”按钮(图2-3示)。
图2-3(4) 系统弹出“选择还原设备”窗口,在此窗口中单击“添加(A)...”按钮(图2-4示)。
图2-4(5) 系统弹出“选择还原目的”窗口,在“文件名(F):”文本框中输入还原目的文件或单击“...”按钮(图2-5示)。
图2-5(6) 单击“...”后,系统弹出“备份设备位置”对话框,选择正确的备份数据库文件 (图2-6示)。
图2-6(7) 依次确定到“还原数据库”窗口,单击“选项”选项卡(图2-7示)图2-7(8) 确认“移至物理文件名”所在具体位置,并选中“在现有数据库上强制还原(F)”复选框,单击“确定”按钮,系统自动还数据数据库,等待直至数据还原完毕(图2-8示)图2-8。
SQLServer数据库备份和还原三种方法方法一:手动完整备份还原1.右键目标数据库,选择,备份2 .选择备份类型为完全,选择备份路径,没有则添加,然后确定3.删除数据库,勾选关闭现有连接4.还原数据库,数据库右键还原数据库5.在目标数据库栏填写还原的数据库名称,点击源设备,选择添加之前备份所在的存储路径,确定还原数据库。
方法二:使用SQL语句备份与还原1.新建查询2.使用SQL语句进行备份--创建备份设备USE [master]GOEXEC master.dbo.sp_addumpdevice @devtype = N'disk', @logicalname = N'设备名', @physicalname = N'存储地址'GO--完整备份到备份设备中BACKUP DATABASE [数据库名] TO [设备名] WITH NOFORMAT, NOINIT, NAME = N'student-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO--还原完整备份RESTORE DATABASE [数据库名] FROM [设备名] WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10GO--差异备份BACKUP DATABASE数据库名] TO [设备名] WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'数据库名-差异数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO--事务日志备份BACKUP LOG [数据库名] TO [设备名] WITH NOFORMAT, NOINIT, NAME = N'数据库名-事务日志备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO这里使用完整备份输入后执行,完成备份3.删除数据库后新建查询,输入SQL语句进行还原RESTORE DATABASE [数据库名] FROM [设备名] WITH FILE = 1, RECOVERY, NOUNLOAD, STATS = 10;刷新,数据库还原成功方法三:导出sql脚本还原数据库1.备份数据库,目标数据库右键任务,生成脚本2.选择要编写脚本的数据库对象,可以选择定的数据库对象,然后下一步3.选择保存位置,点击高级选项,找到“要编写的脚本的数据类型”默认为仅限架构,选择为“架构和数据”。
Sql Server数据库的备份和恢复措施一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份二、还原数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取3、点击新建好的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择恢复数据库4、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。
在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_data.mdf,现在的数据库是forum,就改成forum_data.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是*_log.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\bbs_data.mdf或者d:\sqldata\bbs_log.ldf),否则恢复将报错6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复三、收缩数据库一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据四、设定每日自动备份数据库强烈建议有条件的用户进行此操作!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、这个时候数据库计划已经成功的运行了,他将按照您上面的设置进行自动备份修改计划:1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划-->打开后可看到你设定的计划,可以进行修改或者删除操作五、数据的转移(新建数据库或转移服务器)一般情况下,最好使用备份和还原操作来进行转移数据,在特殊情况下,可以用导入导出的方式进行转移,这里介绍的就是导入导出方式,导入导出方式转移数据一个作用就是可以在收缩数据库无效的情况下用来减小(收缩)数据库的大小,本操作默认为您对SQL的操作有一定的了解,如果对其中的部分操作不理解,可以咨询动网相关人员或者查询网上资料1、将原数据库的所有表、存储过程导出成一个SQL文件,导出的时候注意在选项中选择编写索引脚本和编写主键、外键、默认值和检查约束脚本选项2、新建数据库,对新建数据库执行第一步中所建立的SQL文件3、用SQL的导入导出方式,对新数据库导入原数据库中的所有表内容15.3.1 用SQL Server Enterprise Manager 管理备份在SQL Server 中无论是数据库备份,还是事务日志备份、差异备份、文件或文件组备份都执行相同的步骤。
SQLServer——SQLServer备份与恢复1、动手备份2、动手还原3、T-SQL语句备份及还原BACKUP DATABASERESTORE FILELISTONLY FROM DISK代码示例-- 打开设置当前数据库use mastergo-- 默认创建数据库create database SQLDBgo-- 打开设置当前数据库use SQLDBgoSQLDB-- 在当前数据库创建表create table sqltable(empid char(20) not null primary key,empname char(8) not null,empbd datetime not null default getdate())go-- 将数据信息插入到表中insert into sqltable(empid,empname) values('101','张三') insert into sqltable(empid,empname) values('102','李四') insert into sqltable(empid,empname) values('103','王五') insert into sqltable(empid,empname) values('104','赵三') insert into sqltable(empid,empname) values('105','周北') go-- 查询输出表中所有的记录select *from sqltablego-- 将数据库备份到磁盘设备use SQLDBgobackup database SQLDBto disk='d:\SQLDB.bak'with format,medianame='SQLDB',name='full backup of SQLDB'go-- 还原数据库文件use mastergorestore database SQLDBss from disk='d:\SQLDB.bak' go。
SQLServer数据库的备份和恢复方法作为一名数据库管理员,数据库的备份和恢复是非常重要的工作之一。
数据库是企业中最重要的信息资产之一,如果因为故障或其他原因导致数据丢失,会给企业带来不可估量的损失。
为了避免这种情况的发生,我们需要定期备份数据库,并且掌握好相应的恢复方法。
一、备份方法1、全备份全备份,即备份整个数据库,包括数据文件、事务日志和所有的元数据信息。
全备份是最完整的一种备份方式,备份出来的文件可以还原整个数据库。
全备份的方法和语法如下:BACKUP DATABASE database_name TO backup_device [WITH options];其中,backup_device指备份的目录和文件名,options包括NOFORMAT、NOINIT、NAME、SKIP、REWIND和FORMAT 等选项,可以根据需要进行配置。
例如:BACKUP DATABASE AdventureWorks2016 TO DISK ='C:\AdventureWorks2016.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2016-Full Database Backup', SKIP, REWIND, NOUNLOAD, STATS = 10这条命令会将AdventureWorks2016数据库备份到C盘下的AdventureWorks2016.bak文件中,同时还指定了一些选项,比如不要在备份设备上格式化或初始化任何内容,备份名称为AdventureWorks2016-Full Database Backup等。
2、差异备份差异备份,即备份自上次全备份以来发生过更改的数据。
差异备份的好处是备份时间较短,备份文件也较小,但同时也需要保证有完整的全备份文件存在。
差异备份的方法和语法如下:BACKUP DATABASE database_name TO backup_device [WITH DIFFERENTIAL];其中,WITH DIFFERENTIAL表示进行差异备份。
SQLServer数据库备份和恢复作为一位数据库管理员,备份和恢复数据库是日常工作中必不可少的任务。
在SQLServer中,备份和恢复数据库是非常简单而且快速的,但是在备份和恢复过程中需要注意一些要点,本文将对此进行介绍和分析。
一、备份数据库在备份数据库之前,需要了解备份的种类和使用场景。
常见的备份种类有完整备份、差异备份和日志备份。
完整备份是将数据库的所有数据和日志都备份下来,差异备份是在完整备份的基础上备份自上次完整备份之后发生的所有变化,而日志备份是备份从最后一次备份到本次备份之间发生的所有交易记录。
是否进行完整备份,差异备份还是日志备份,取决于数据需要恢复到哪一个时间点以及备份的频率和容量。
完整备份备份的数据和所有交易记录,可以恢复到任意一个时间点;差异备份备份的数据是上次备份之后的所有变化,可以恢复到差异备份之后的任意一个时间点;而日志备份只备份从上次备份到本次备份之间的交易记录,只能在连续的日志备份中进行数据的恢复。
在进行备份之前,需要关闭数据库以保证备份的一致性。
可以使用以下SQL语句进行完整备份:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.bak'WITH FORMAT, INIT其中,database_name 是要备份的数据库名称,backup_path 是备份文件的存储路径,backup_file_name 是备份文件的名称。
WITH FORMAT参数表示每次备份都会覆盖之前的备份文件并且重新初始化备份集,INIT参数表示让备份文件从头开始,不保存之前的任何备份数据。
需要进行差异备份时,可以使用以下SQL语句:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.diff'WITH DIFFERENTIAL其中,DIFFERENTIAL参数表示进行差异备份。
SQL Server数据库的备份与复原以及在工程中是怎样去实现的2021-03-13 11:39:21标签:SQL Server数据库的备份与复原--备份的设备有2种(临时设备和永久设备) 注意:默认下的备份类型是完整备份--第一种:backup database Company to disk='d:\backup\1.bak'--临时设备/*如果这里不指定明确路径的话〔如:backup database company to disk='backup\1.bak'〕,那么备份的数据库将会自动备份到系统指定的目录下:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup*/--第二种:/*第一步首先成立永久备份设备〔系统自带的存储过程〕在master 数据库中就会找到如图1:*/--执行语句如:exec sp_addumpdevice 'disk','disk_company','D:\2.bak'--永久设备--执行成果就会呈现如图2:--多了一个备份设备:disk_company--第二步:backup database company to disk_company with noinit --默认暗示追加(不覆盖) --好了备份完成!--此刻我来复原数据库(我用的是第一种方法备份的,所以我要第一种方法来复原) ,--本来的数据如图3:--颠末我手动删除几个表后的数据库如图4:--执行语句:restore database Company from disk='d:\backup\1.bak' --注意备份到哪里去就要从复原哪里来--执行后会呈现什么呢?请看错误动静:/*动静 3159,级别 16,状态 1,第 1 行尚未备份数据库 "company" 的日志尾部。
一、导言数据库备份和还原作为数据库管理的基本操作,对于保障数据的完整性和安全性具有重要意义。
在SQL Server数据库管理中,备份和还原操作是至关重要的,本文将围绕SQL Server数据库备份和还原作业展开详细讨论。
二、SQL Server数据库备份作业1.1 确定备份策略在进行SQL Server数据库备份作业之前,首先需要确定备份策略,包括全备份、差异备份和日志备份等。
根据业务需求和数据重要性制定合理的备份策略,保证数据可靠性和恢复性。
1.2 创建备份作业使用SQL Server Management Studio或Transact-SQL语句创建数据库备份作业,设置备份类型、备份频率、备份路径等关键参数,保证备份作业的有效性和稳定性。
1.3 监控和日志记录在备份作业运行过程中,需要监控备份作业的执行情况,记录备份日志并及时处理备份错误和异常,保证备份数据的完整性和可用性。
三、SQL Server数据库还原作业2.1 确认还原需求在进行SQL Server数据库还原作业之前,需要明确还原的需求,包括完整性检查、数据恢复点、还原目标等关键信息,为还原操作做好充分准备。
2.2 创建还原作业使用SQL Server Management Studio或Transact-SQL语句创建数据库还原作业,设置还原方式、还原路径、还原选项等关键参数,保证还原作业的顺利进行。
2.3 验证还原结果在还原作业完成后,需要对还原的数据进行完整性验证和业务应用测试,确保数据的完整性和可用性,保证还原操作的成功性。
四、SQL Server数据库备份和还原的最佳实践3.1 定期备份和监控建立定期的数据库备份作业,监控备份的执行情况,及时处理备份失败和异常,保证数据库备份的及时性和可靠性。
3.2 多备份路径和定期恢复测试使用多备份路径进行数据库备份,确保备份数据的安全性,定期进行数据库的恢复测试,验证数据库备份的可恢复性。
SQLServer数据库备份和还原⼀、SQL命令备份BACKUP DATABASE TestDb TO DISK='d:\TestDb.bak'还原RESTORE DATABASE TestDb FROM DISK='d:\TestDb.bak'⼆、使⽤管理⼯具三、使⽤sqlcmd备份sqlcmd -S . -E -Q "BACKUP DATABASE AbpFirst TO DISK='d:\AbpFirst.bak'"还原sqlcmd -S . -E -Q "RESTORE DATABASE AbpFirst FROM DISK='d:\AbpFirst.bak'"四、常见问题1.还原失败原因:Sql server还原失败,提⽰:数据库正在使⽤,⽆法获得对数据库的独占访问权解决⽅案1.如果你使⽤管理⼯具还原数据库并且在Microsoft SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到⽬标数据库的现有链接"解决⽅案2:如果你的SqlServer Management Studio的版本⽐较低,可以设置数据库为单⽤户模式,执⾏完还原操作后,恢复为多⽤户模式设置⽅式:选中要还原的数据库-->属性-->选项-->限制访问该值从MULTI_USER修改为SINGLE_USER,此时该数据库就会显⽰为单⽤户模式这是GUI的模式,语句的办法⽐较简单---设置数据库为单⽤户模式USE MASTERGOALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE;GO---设置数据库为多⽤户模式USE MASTERGOALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO解决⽅案3:完全使⽤T-Sql的⽅式,执⾏备份数据库操作use mastergo---声明变量declare@dbName nvarchar(max)='Mvc_HNHZ';declare@dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';--1.1修改为单⽤模式exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');--1.2结束链接进程DECLARE@kid varchar(max)SET@kid=''SELECT@kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses WHERE dbid=DB_ID(@dbName) ;EXEC(@kid) ;--2.执⾏还原语句restore database@dbName from disk=@dbFullNamewith replace--覆盖现有的数据库--3.重置数据库为多⽤户模式exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');2.强制断开数据库已有连接USE masterGOALTER DATABASE[DBName]SET SINGLE_USER WITH ROLLBACK IMMEDIATEGO--查看是否还有⽤户连接SELECT*FROM sys.[sysprocesses]WHERE DB_NAME([dbid])='DBName'GOALTER DATABASE[DBName]SET MULTI_USERGO其他相关⽂章:。
SQL Server中的备份与还原操作详解SQL Server是一种功能强大的关系数据库管理系统,可以帮助企业进行数据管理和存储。
而对于企业来说,数据的安全性和完整性非常重要。
因此,备份和还原是SQL Server的核心功能之一。
本文将详细介绍SQL Server中的备份与还原操作,包括备份和还原的各种选项、备份和还原的流程和步骤、备份和还原的常见问题及其解决方法等等。
希望本文能够帮助读者更好地了解备份与还原操作,并加强对数据安全性和完整性的保护。
一、备份选项在进行备份操作之前,需要先选择备份选项。
在SQL Server中,备份选项主要有完全备份、日志备份、增量备份、差异备份、复制文件(文件和文件组备份)、虚拟设备备份等。
不同的备份选项适用于不同的备份需求。
完全备份:完全备份是备份一个数据库中的所有数据和数据库对象。
它包括主数据文件、其他数据文件和日志文件。
这意味着完全备份可以还原整个数据库,并恢复到备份时的状态。
日志备份:日志备份是备份在上一次完全备份或日志备份之后对数据库所做的所有更改。
这对于追踪数据库的变化非常有用,比如数据库恢复到某个特定的时间点。
增量备份:增量备份是备份自上一次备份以来发生的更改。
它只备份上次完全备份或增量备份之后做出的更改。
可以在每次备份后累计增量备份,这样可以减少恢复时所需的时间和存储空间。
差异备份:差异备份是备份从上一次完全备份以来对数据库所做的所有更改。
与增量备份不同的是,差异备份只包含自上一次差异备份后更改的数据。
复制文件(文件和文件组备份):这是备份数据库的一部分。
你可以选择备份数据库的文件或文件组,如只备份数据库的主数据文件或事务日志文件。
虚拟设备备份:虚拟设备备份是在设备上虚拟创建一个备份设备。
这使得可以同时将备份发送到多个设备,即使它们不是直接连接到数据库的设备。
虚拟设备备份旨在简化备份和还原过程。
二、备份流程和步骤备份操作需要遵循一定的步骤和流程。
下面是备份操作的基本流程和步骤:1. 选择备份选项:选择适当的备份选项,如完全备份、日志备份、增量备份、差异备份等。
SQL Server 备份及恢复的几种方法随着SQL Server 版软件越来越多,与此相关的数据备份与恢复的问题也越来越多,我们在解决问题的过程中总结了一些经验如下:一、备份各种形式①从系统管理里作备份,包括帐套的备份和年度帐的备份,这种份的优点是简单,易操作,压缩性好,占用硬盘空间小,但速度慢,并且如果是软件出现故障的情况下,可能无法进入系统管理.②从Enterprise Manager里做数据库的备份.每个数据库都有一个单独的备份.这种备份的优点是备份速度快,如果对SQL Server有一定了解的话,也是很简单的.③如果SQL Server无法启动的话,上述两种方法都是无效的,只能采用复制物理文件的方法,把用户帐套的ufdata.mdf ufdata.ldf 和ufsystem.mdf 和ufsystem.ldf二、恢复数据的方法①如果有帐套的备份的话,直接使用系统管理里的帐套引入功能就可以了。
在这种情况下,一些操作员的权限信息可以丢失,可以重新赋予权限,也可心恢复原来的ufsystem系统控制库②如果是年度帐的备份,并且软件中还有这个帐套和年度的话,可以用帐套主管注册,然后从年度帐菜单下引入;如果是没有这个帐套存在,就要在系统管理中新建一套帐,建帐时只要注意启用日期、行业性质、帐套主管即可,其他均可忽略,然后把备份中的ufdata.ba_ 用APP目录下的ufuncomp.exe 将它解压缩为ufdata.bak 再将此文件在enterprise manager 里restore 即可③通过Enterprise Manager 做的单个数据库的备份的和年度帐的备份可以通过restore database 功能来操作,具体过程为右键该数据库—所有任务—还原数据库—从设备—选择设备—磁盘—添加—浏览该文件—确定,在选项标签里把‘强制还原’选上,移至的物理文件名为该帐套的目录和文件名。
然后就可以正常恢复了。
在 SQL Server 中备份和还原数据库使用 Microsoft SQL Server 能够备份和还原数据库。
SQL Server 备份组件和还原组件为保护存储在 SQL Server 数据库中的关键数据提供了重要的安全保障。
规划良好的备份和还原策略有助于防止数据库因各种故障而造成数据丢失。
通过还原一组备份,然后恢复数据库来测试您的策略,以便为有效地应对灾难做好准备。
用于还原和恢复数据的数据副本称为“备份”。
使用备份可以在发生故障后还原数据。
通过妥善的备份,可以从多种故障中恢复,例如:• 介质故障。
• 用户错误(例如,误删除了某个表)。
• 硬件故障(例如,磁盘驱动器损坏或服务器报废)。
•自然灾难。
定期备份数据库是最稳妥的防止磁盘故障(主要是系统发生故障)的方法,它能有效的 恢复数据,这是一种比较兼价的保险形式,同时也是最简单的确保能恢复大部分信息的方法。
建立一个完整的备份策略需要考虑很多因素,包括: .备份周期。
(根据数据的重要程序,可以选择每周、每日、每时进行备份)。
.使用静态备份还是动态备份,(动态备份也即允许数据库运行时进行备份)。
.仅使用全备份还是共同使用全备份和增量备份。
.使用什么介质,(磁带还是磁盘)。
.使用人工备份还是设计好的自动备份程序。
.检验备份完整性的周期。
.备份存储的空间是否防窃、防磁干扰、防火。
采用适当有效的备份 /恢复措施,大型数据库Microsoft SQL Server 的数据是能够安全保护的。
此外,数据库备份对于进行日常管理(如将数据库从一台服务器复制到另一台服务器,设置数据库镜像以及进行存档)非常有用。
备份1. 数据备份数据的备份(“数据备份”)的范围可以是完整的数据库、部分数据库或者一组文件或文件组。
对于这些范围,SQL Server 均支持完整和差异备份:在 SQL Server 中备份和还原数据库(精选文档)(文档可以直接使用,也可根据实际需要修改使用,可编辑 欢迎下载)•完整备份“完整备份”包含特定数据库(或者一组特定的文件组或文件)中的所有数据,以及可以恢复这些数据的足够的日志。
一、数据库存储概述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机制。
1、启动Microsoft SQLServer企业管理器,如下图:先后点击开始、程序、Microsoft SQL Server 、企业管理器。
2、启动后的界面如下:然后点红圈内的加号。
3、出现如下图,再点红圈中的加号
4、出现如下图,再点红圈中的加号
5、出现如下图,再点红圈中的加号
务→备份数据库”,单击鼠标左键
7、单击添加按钮
8、单击红圈所示按钮
9、图片中首先选择备份路径,然后在文件名中输入备份的数据库文件名称如图所示输入“archback”,单击“确定”按钮。
10、显示所指定备份的文件路径和文件名称,单击“确定”
11、选中重写现有媒体,单击“确定”按钮
12、正在备份过程中
13、备份完成后出现,单击“确定”完成备份。
以下为恢复数据库的过程:
14、单击鼠标右键,使用:所有任务→还原数据库:
“从设备”,单击“选择设备”
16、出现下图,然后选择“添加”
17、出现下图,然后点“…”按钮,下图红色圈中
18、出现下图,备份设备位置窗口,指定要还原的备份文件名,然后点确定。
19、出现下图,然后再点确定
20出现下图,然后再点确定
21、出现下图,然后点“选项”,在“在现有数据库上强制还原”前打钩
22、查找数据库安装路径,复制红圈所选路径
23、选中1中的路径,粘贴所选路径,如1所示,同理更改2中的路径,选中要更改部分路径,单击鼠标右键,使用“粘贴”,更改完成如图所示,完成后,单击“确定”
24、数据还原中
25、数据恢复完成后,出现对话框,单击确定,还原完成。
sql server数据库备份与恢复语句SQLServer数据库备份与恢复语句是管理SQLServer数据库的重要技能之一。
备份和恢复数据库有助于保护数据,防止数据丢失和不良后果。
以下是一些常见的SQL Server数据库备份和恢复语句:备份语句:1. 完全备份语句:BACKUP DATABASE <database_name> TO DISK ='C:Backupsfull_backup.bak'这个语句将数据库完全备份到指定的磁盘位置和文件名。
完全备份包含整个数据库的所有数据和对象。
2. 差异备份语句:BACKUP DATABASE <database_name> TO DISK ='C:Backupsdifferential_backup.bak' WITH DIFFERENTIAL 这个语句将数据库的差异备份保存到指定的磁盘位置和文件名。
差异备份只包含从上次完全备份以来所做的更改。
3. 日志备份语句:BACKUP LOG <database_name> TO DISK ='C:Backupslog_backup.trn'这个语句将数据库的事务日志备份保存到指定的磁盘位置和文件名。
事务日志备份只包含从上次备份以来的事务日志信息。
恢复语句:1. 完全恢复语句:RESTORE DATABASE <database_name> FROM DISK ='C:Backupsfull_backup.bak' WITH REPLACE这个语句将指定数据库的完全备份恢复到指定的数据库。
REPLACE选项将覆盖现有的数据库。
2. 差异恢复语句:RESTORE DATABASE <database_name> FROM DISK ='C:Backupsdifferential_backup.bak' WITH NORECOVERY 这个语句将指定数据库的差异备份恢复到指定的数据库。
SQL Server备份和还原的流程如下:
备份:
1. 打开SQL Server,依次展开sqlserver根目录,并打开数据库。
2. 选择要备份的数据库名,鼠标右键任务->选择备份。
3. 点击添加,选择存放数据库备份文件的地址。
4. 在弹出对话框中,点击图示按钮,选择存放数据库备份文件的地址,文件名后缀名为.bak 点击确定。
5. 点击选项,根据自己的需求进行备份设置,设置完成,点击确定,开始备份。
还原:
1. 选择要还原的数据库名,鼠标右键任务->选择还原->选择数据库。
2. 在弹出对话框中,选择源设备,点击后面的按钮,弹出指定备份对话框,点击添加按钮,选择.bak源文件,找到后,点击确定。
3. 选择选项,进行还原设置,勾选“覆盖现有数据”前面的小方框;点击“还原为”后面的按钮,要还原该数据库的数据文件和日志文件。
4. 选定好要还原的数据文件和日志文件之后,点击“确定”按钮,完成数据库还原。
SQLServer数据库的备份和还原详解1. 基本概念:mdf文件:SqlServer数据库的主数据文件ldf文件:SqlServer数据库的日志文件SQL Server管理的每个数据库都对应一个mdf文件和一个ldf文件。
当SQL Server服务处于开启时,这些文件是无法删除的。
用SQL Server 企业管理器,单击某个数据库,选择右键菜单中的“属性",从弹出对话框的“数据文件”和“事务日志”标签页中可以查看这个数据库对应的mdf文件路径和ldf文件路径。
2. 用SQL Server 企业管理器备份和还原数据库:例如,备份数据库到可移动存储介质,然后还原到另一台机器上,步骤如下:备份:单击要备份的数据库,从右键菜单选择“所有任务->备份数据库”。
选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。
选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。
因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。
选中它,确定,等待备份完成。
完成后在你指定的路径下将看到你备份的文件,注意该文件默认没有后缀名。
备份文件还有很大的压缩空间,一般一个40多M的备份文件用winRAR压缩后只有4M左右,作为邮箱附件也没有问题。
还原:将备份文件放到一个便于管理的文件夹下,例如你的数据库叫“test”,可以建立一个叫“e:\db_bak\test\”的文件夹。
从SQL Server 企业管理器单击“数据库”,选择“新建数据库...”,起名“test”,确定。
看到该数据库出现在数据库列表中,里面只有一些系统tables。
注意新建数据库默认的mdf文件和ldf文件都会被放在SQL Server安装目录下的子目录“MSSQL\data\”中,文件名与数据库名称相同。
单击该数据库,从右键列表中选择“所有任务->还原数据库”。
SQL Server数据库备份与还原处理转贴路径:/zjcxc/archive/2003/12/29/20074.aspx利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点:1.获取SQL Server服务器上的默认目录2.备份SQL语句的使用3.恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4.作业创建SQL语句的使用/*1.--得到数据库的文件目录@dbname 指定要取得目录的数据库名如果指定的数据不存在,返回安装SQL时设置的默认数据目录如果指定NULL,则返回默认的SQL备份目录名--邹建2003.10(引用请保留此信息)--*//*--调用示例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)asbegindeclare @re nvarchar(260)if @dbname is null or db_id(@dbname) is nullselect @re=rtrim(reverse(filename)) from master..sysdatabases wherename='master'elseselect @re=rtrim(reverse(filename)) from master..sysdatabases wherename=@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.--备份数据库--邹建2003.10(引用时请保留此信息)--*//*--调用示例--备份当前数据库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 OBJECTPROPERTY(id, N'IsProcedure') = 1)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 'DIFFERENTIAL,' else '' end+case @appendfile when 1 then 'NOINIT' else 'INIT' endprint @sqlexec(@sql)go/*3.--恢复数据库--邹建2003.10(引用时请保留此信息)--*//*--调用示例--完整恢复数据库exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db'--差异备份恢复exec p_RestoreDb@bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb @bkfile='c:\db_20031015_df.bak',@dbname='db',@retype='DF' --日志备份恢复exec p_RestoreDb@bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb@bkfile='c:\db_20031015_log.bak',@dbname='db',@retype='LOG'--*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_RestoreDb]GOcreate 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)--得到恢复后的数据库名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 ',NORECOVERY' else ',RECOVERY' endprint @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),fgnnvarchar(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 #ffetch next from #f into @lfn,@tpset @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 #spidfetch next from #spid into @spidwhile @@fetch_status=0beginexec('kill '+@spid)fetch next from #spid into @spidendclose #spiddeallocate #spidend--恢复数据库exec(@sql)go/*4.--创建作业--邹建2003.10(引用时请保留此信息)--*//*--调用示例--每月执行的作业exec p_createjob @jobname='mm',@sql='select * fromsyscolumns',@freqtype='month'--每周执行的作业exec p_createjob @jobname='ww',@sql='select * fromsyscolumns',@freqtype='week'--每日执行的作业exec p_createjob @jobname='a',@sql='select * from syscolumns'--每日执行的作业,每天隔4小时重复的作业exec p_createjob @jobname='b',@sql='select * from syscolumns',@fsinterval=4 --*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createjob]') and OBJECTPROPERTY(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=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分asif isnull(@dbname,'')='' set @dbname=db_name()--创建作业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 @fsinterval<>1 set @time=0set @ffactor=case @freqtype when 'day' then 0 else 1 endEXEC 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/*--应用案例--备份方案:完整备份(每个星期天一次)+差异备份(每天备份一次)+日志备份(每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生产数据核心库:PRODUCE备份方案如下:1.设置三个作业,分别对PRODUCE库进行每日备份,每周备份,每月备份2.新建三个新库,分别命名为:每日备份,每周备份,每月备份3.建立三个作业,分别把三个备份库还原到以上的三个新库。