SQLServer数据库备份与恢复
SQLServer2008数据库备份与恢复
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恢复数据库语句
sqlserver恢复数据库语句SQL Server是一种关系型数据库管理系统,常见于企业级应用程序中。
在使用过程中,可能会出现数据丢失或意外中断的情况,这时就需要使用恢复数据库语句来恢复数据。
下面是针对SQL Server 的恢复数据库语句,包括10个不同的情况。
1. 恢复一个丢失的数据库当数据库文件丢失时,可以使用以下语句来恢复数据库:RESTORE DATABASE db_nameFROM DISK = 'D:\backup\backup_file_name.bak'WITH REPLACE其中,db_name为要恢复的数据库名称,backup_file_name.bak 为备份文件名称。
该语句将从备份文件中恢复数据库,并且覆盖原有的数据库。
2. 恢复一个损坏的数据库当数据库损坏时,可以使用以下语句来恢复数据库:RESTORE DATABASE db_nameFROM DISK = 'D:\backup\backup_file_name.bak'WITH RECOVERY该语句将从备份文件中恢复数据库,并且尝试将数据库恢复为最新状态。
3. 恢复一个数据库到指定的时间点如果需要将数据库恢复到一个指定的时间点,可以使用以下语句:RESTORE DATABASE db_nameFROM DISK = 'D:\backup\backup_file_name.bak'WITH STOPAT = '2022-06-01 12:00:00'该语句将从备份文件中恢复数据库,并且将数据库恢复到指定的时间点。
4. 恢复一个数据库到指定的事务点如果需要将数据库恢复到一个指定的事务点,可以使用以下语句:RESTORE DATABASE db_nameFROM DISK = 'D:\backup\backup_file_name.bak'WITH STOPBEFOREMARK = 'transaction_mark'该语句将从备份文件中恢复数据库,并且将数据库恢复到指定的事务点。
sqlserver备份还原数据库sql语句
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)选择要备份的数据库。
sqlserver恢复数据库语句
以下是使用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选项。
sqlserver如何备份或恢复一个表_MSSQLServer
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数据库备份与还原
Sqlserver数据库备份与还原⼀、数据库存储概述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语句及注意
SQLServer数据库备份还原常⽤SQL语句及注意1.备份数据库backup database db_nameto disk='d:\db_name.bak'with format--通过使⽤with format可以做到覆盖任何现有的备份和创建⼀个新的媒体集。
--可以避免⼀些由于备份设置产⽣的错误.--帮助⽂档上的解释:--format指定应将媒体头写⼊⽤于此备份操作的所有卷。
--任何现有的媒体头都被重写。
format选项使整个媒体内容⽆效,--并且忽略任何现有的内容。
2.备份⽇志backup log log_nameto disk='d:\log_name.log'with norecovery --备份⽇志的时候使⽤Norecovery是⽤来备份尾⽇志的,--这样备份⽇志的时候数据库处于恢复状态,--别的进程就不能再访问数据库,⽇志就不会再增加了,--这样在还原的时候就可以正常恢复了。
--还原备份的时候如果想同时还原之后的⽇志,--必须加上Norecovery才可以还原⽇志,如果有多个⽇志备份,--除了最后⼀个⽇志备份外,还原其他⽇志必须也得加上Norecovery才可以还原到最后⼀个⽇志。
--归根结底只能说这是数据库的规定。
3.还原数据库先让数据库离线alter database db_name set offline with rollback immediate再进⾏还原restore database db_namefrom disk='d:\db_name.bak'with replace 注意:1.备份前确定数据库已上线2.还原前确定数据库已下线4.数据库的离线和上线离线(断开与其它⽤户的连接)alter database db_name set offline with rollback immediate 上线(开启与其它⽤户的连接)alter database db_name set online with rollback immediate。
SQLSERVER数据库,备份后,再还原了,发现原来的WEB项目仍然用不了《解决篇》
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图解备份(完全备份、差异备份、增量备份)和还原
SQLServer图解备份(完全备份、差异备份、增量备份)和还原常⽤的数据备份⽅式有完全备份、差异备份以及增量备份,那么这三种备份⽅式有什么区别,在具体应⽤中⼜该如何选择呢?1、三种备份⽅式完全备份(Full Backup):备份全部选中的⽂件夹,并不依赖⽂件的存档属性来确定备份哪些⽂件。
在备份过程中,任何现有的标记都被清除,每个⽂件都被标记为已备份。
换⾔之,清除存档属性。
完全备份就是指对某⼀个时间点上的所有数据或应⽤进⾏的⼀个完全拷贝。
实际应⽤中就是⽤⼀盘磁带对整个系统进⾏完全备份,包括其中的系统和所有数据。
这种备份⽅式最⼤的好处就是只要⽤⼀盘磁带,就可以恢复丢失的数据。
因此⼤⼤加快了系统或数据的恢复时间。
差异备份(Differential Backup):备份⾃上⼀次完全备份之后有变化的数据。
差异备份过程中,只备份有标记的那些选中的⽂件和⽂件夹。
它不清除标记,也即备份后不标记为已备份⽂件。
换⾔之,不清除存档属性。
差异备份是指在⼀次全备份后到进⾏差异备份的这段时间内,对那些增加或者修改⽂件的备份。
在进⾏恢复时,我们只需对第⼀次全备份和最后⼀次差异备份进⾏恢复。
差异备份在避免了另外两种备份策略缺陷的同时,⼜具备了它们各⾃的优点。
⾸先,它具有了增量备份需要时间短、节省磁盘空间的优势;其次,它⼜具有了全备份恢复所需磁带少、恢复时间短的特点。
系统管理员只需要两盘磁带,即全备份磁带与灾难发⽣前⼀天的差异备份磁带,就可以将系统恢复。
增量备份 (Incremental Backup ):备份⾃上⼀次备份(包含完全备份、差异备份、增量备份)之后有变化的数据。
增量备份过程中,只备份有标记的选中的⽂件和⽂件夹,它清除标记,既:备份后标记⽂件,换⾔之,清除存档属性。
增量备份是指在⼀次全备份或上⼀次增量备份后,以后每次的备份只需备份与前⼀次相⽐增加和者被修改的⽂件。
这就意味着,第⼀次增量备份的对象是进⾏全备份后所产⽣的增加和修改的⽂件;第⼆次增量备份的对象是进⾏第⼀次增量备份后所产⽣的增加和修改的⽂件,如此类推。
SQLServer数据库备份和恢复
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参数表示进行差异备份。
sqlserver数据库的备份与恢复sql实现
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数据库备份和还原
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其他相关⽂章:。
SQLServer数据库备份还原和数据恢复
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定时、实时备份恢复的方法
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命令方式备份与还原
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。
SQLServer2000数据备份与恢复
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 单击“选项”选项卡,在“还原为”中输入组成数据库备份的各数据库文件的新名称或新位置。
sql server数据库备份与恢复语句
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 这个语句将指定数据库的差异备份恢复到指定的数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLServer数据库备份与恢复
学院:工程学院专业:机械设计制造及其自动化班级:01
姓名:张丹学号:1522111
【实验内容】
通过SQL Server 自带的备份功能备份数据库
利用SQL Server自带的还原功能还原数据库
【实验原理】
数据库的建立和使用极大的方便了人们对数据的管理和应用,数据的稳定性和可恢复至关重要,因此要定期对数据库的数据进行备份。
【实验环境】
Windows 实验台
SQL Server 2000
【实验步骤】
打开Windows实验台,运行Windows 2003系统;运行SQL Server 2000的“查询分析器”和“企业管理器”。
SQL Server 数据库备份
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开数据库,选中所要备份的数据库,单击鼠标右键,依次选择“所有
任务”,“备份数据库”。
(3)在弹出的对话框中,依次修改:“名称”、“备份方式”、“目的”、“重写方
式”,最后点“确定”。
(4)开始备份。
(5)最后备份完成。
SQL Server 数据库还原
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开数据库,选中所要还原的数据库,单击鼠标右键,依次选择“所有
任务”,“还原数据库”。
(3)在弹出的对话框中,依次修改:“还原后的数据名”、“要还原的备份文件”。
(4)然后选择“选项”标签卡,选中“在现有数据库上强制还原”多选项。
(5)点击“确定”按钮开始还原。
(6)最后还原完成,如下图所示。
【实验总结】
该实验较复杂,对数据库的备份与还原的掌握与运用十分实用。