SQL Server 2005还原数据库
- 格式:doc
- 大小:145.50 KB
- 文档页数:4
解決SQL Server 2005 還原數據庫錯誤:System.Data.SqlClient.SqlError: 在...解決SQL Server 2005 還原數據庫錯誤:System.Data.SqlClient.SqlError: 在對'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\BusinessDB.mdf' 嘗試'RestoreContainer::ValidateTargetForCreation' 時,操作系統返回了錯誤'5(拒絕訪問)'在還源數據庫時出現以下錯誤(詳情參見下圖):System.Data.SqlClient.SqlError: 在對'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\BusinessDB.mdf' 嘗試'RestoreContainer::ValidateTargetForCreation' 時,操作系統返回了錯誤'5(拒絕訪問。
)'。
(Microsoft.SqlServer.Express.Smo)原因分析:沒有對"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\"創建文件的權限(可以把它複製到data),這是SQL2005對文件夾的安全性限制。
解決辦法:沒有同名數據庫的時候就新建個同名數據庫修改文件夾到'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\”或其他盤的文件夾下(如E:\mydb)即可(原路径:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\)。
SQLServer:用SQL语句还原数据库(withmove选项用法)SQL Server:用 SQL 语句还原数据库(with move 选项用法)SQL Server:用 SQL 语句还原数据库(with move 选项用法)SQL Server:用 SQL 语句还原数据库(with Move 选项用法)。
当我们把服务器A上的一个数据库备份后,在服务器B上还原的时候,直接restore 的时候,大多情况下都会出错,可能的原因是数据库的文件(数据和日志)在不同服务器上所在的 path 不同。
这时候就需要 restore with move 选项,来把数据库文件还原到目标 path 中。
with move 的详细语法:MOVE 'logical_file_name' TO 'operating_system_file_name' [ ,...n ]当我在把SQL Server 2000 Instance(实例)中的数据库Nortwind,还原到 SQL Server 2005 Instance 中的时候,也需要使用 restore with move 选项来进行还原。
1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name):use Nothwindgoselect name, filename, * from dbo.sysfilesname filename-------------- ------------------------------------------------------------------Northwind d:\program files\microsoft sql server\mssql$sqla\data\northwnd.mdfNorthwind_log d:\program files\microsoft sql server\mssql$sqla\data\northwnd.ldf2. 备份 SQL Server 2000.Northwind 数据库backup database Northwind to disk = 'c:\Northwind.bak'3. 在 SQL Server 2005 Instance 中还原 Northwind 数据库。
(2.18)备份与还原--还原的原理与总结关键字:恢复系统数据库⼀、还原的过程还原过程主要分为3个阶段。
1. 数据复制 此阶段将从数据库的备份介质将所有数据、⽇志和索引页复制到数据库⽂件中。
完成这个阶段后,数据库被恢复到备份介质所包含的最后⼀个检查点。
2. 重做(前滚) 此阶段将记录的事务应⽤到从备份复制的数据,以将这些数据前滚到恢复点。
此阶段将使数据库从最后⼀个检查点前滚到恢复点(recovery point)的最后⼀笔交易。
重做(前滚)阶段阶段后,数据库通常有未提交的事务,并处于“正在恢复,不可⽤”的状态。
3. 撤消(回滚) 此阶段将撤消(回滚)任何未提交的事务。
撤消(回滚)阶段后,数据库可供⽤户使⽤。
⼆、还原的过程⽰例以下是⼀个事务的⽰例 LSN01 提交事务1 LSN02 检查点 LSN03 执⾏事务2 LSN04 执⾏“完整备份1”(备份导致检查点) LSN05 执⾏事务3 LSN06 检查点LSN07 提交事务2 LSN08 执⾏“事务⽇志备份1”(恢复点)恢复过程如下:(1)第⼀阶段:将通过备份介质“完整备份1”,恢复到LSN04(即备份介质所包含的最后⼀个检查点)。
这个过程主要是以“区”为单位直接将数据页⾯复制到数据库⽂件中。
(2)第⼆阶段:根据备份介质“事务⽇志备份1”的记录,前滚到LSN08(即数据库的“恢复点”)。
此阶段后,LSN05和LSN07都被执⾏,被回写到数据页⾯,但此时尚不确定LSN05事务是否被提交,因此,此时数据库的状态为“正在恢复,不可使⽤”,需要等待后续阶段。
(3)第三阶段,在备份介质“事务⽇志备份1”中没有发现LSN05被提交的⽇志记录,因此需要回滚未提交的事务,即撤消LSN05。
此阶段后,数据库可正常使⽤,且恢复到“恢复点”。
完成上述3个阶段后,事务2被提交(根据根据LSN07),事务3被回滚(因为事务3在LSN08时未提交)。
三、还原的操作⽅法1. T-SQL⽰例:RESTORE DATABASE[db01]FROM DISK= N'C:\backup\DB01_Data_BAK.bak'WITH FILE=1, NORECOVERY, NOUNLOAD, STATS =10GORESTORE LOG[db01]FROM DISK= N'C:\backup\DB01_Log_BAK.bak'WITH FILE=2, NOUNLOAD, STATS =10GO2.SSMS四、还原的恢复状态 在⼀个或多个备份已还原后,恢复通常会包含重做和撤消两个阶段。
精简版SQL Server 2005 数据库导出、导入办法
1、数据库导出(备份)
选中要备份(导出)数据库—>右击,选择“任务”(即Tasks)—>选择“备份”(即Back up)—>选择“普通”(即General),然后按下图选择操作
然后选择“选项”(即Options),按照下图选择操作,最后选择“确定”(即ok)即可将数据库备份。
2、数据库导入(还原)
首先,将要导入或还原的“.bak”文件放到c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup目录下。
其次,打开SQL Server ,选中要还原的数据库(即要将备份数据库导入的目标数据库)—>右击,选择“任务”(即Tasks)—>选择“还原数据库”(即Restore—>database)—>选择“普通”(即General),然后选择“从设备”(即From device),点击右侧选择目标框,会弹出一个窗口如下图所示
选择添加,会出现如下窗口
从中选择要还原的数据库备份,然后“确定”。
在添加页面选择“确定”。
就会回到“普通”页面,选中相应数据库,如下图:
然后选择“选项”(即Options)操作,按下图操作:
最后选择“确定”(或ok)即可。
SQL Server数据库1SQL Server 2005数据库可疑恢复日常对Sql Server 2005联系数据库执行操作时,有时对数据库(如:Sharepoint站点配置数据库名Sharepoint_Config)执行些不正常操作如数据库在读写时而无故停止数据库,从而导致Sql Server 2005数据库不正常中断,当再次打开数据库时会发觉某些数据库会被标记为“可疑”(suspect),即在数据库名旁加上了黄色的惊叹号,这时数据库就不能再被打开了,但数据库的结构及数据内容都还是存在的处理要领当数据库发生这种操作故障时,可以按如下操作步骤可处理此要领,打开数据库里的Sql 查询编辑器窗口,运行以下的命令●修改数据库为紧急模式ALTER DATABASE Sharepoint_Config SET EMERGENCY●使数据库变为单用户模式ALTER DATABASE Sharepoint_Config SET SINGLE_USER●修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。
当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。
但是,这些修正可能会导致一些数据丢失。
DBCC CheckDB (Sharepoint_Config , REPAIR_ALLOW_DATA_LOSS●使数据库变回为多用户模式ALTER DATABASE Sharepoint_Config SET MULTI_USER●开始->运行->输入cmd->打开DOS命令窗口,输入以下命令重启数据库服务Net stop mssqlserver --停止服务Net start mssqlserver --启动服务再次,打开Sql Server 2005时被标记为“可疑”的数据库已还原正常状态ALTER DATABASE v5_dl_g SET EMERGENCYALTER DATABASE v5_dl_g SET SINGLE_USERDBCC CheckDB (v5_dl_g , REPAIR_ALLOW_DATA_LOSS)ALTER DATABASE v5_dl_g SET MULTI_USER2SQL Server数据库文件恢复及数据库置疑SQL Server 2000数据库不知什么原因变成置疑,在企业管理器里面看是置疑,在DATA 里面有MDF和LOG这两个文件,换一台机器附加时报错:备份数据文件,然后按以下的步骤来进行处理:1.新建一个同名的数据库(数据文件与原来的要一致)2.再停掉sql server(注意不要分离数据库)4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了。
如何查询SQL Server备份还原历史记录SQL Server在msdb数据中维护了一系列表,用来存储执行所有备份和还原的细节信息。
即使你正在使用第三方的备份应用程序,只要这个应用程序使用SQL Server的虚拟设备接口(Virtual Device Interface---VDI)来执行备份和还原执行,那么执行细节依然被存储在这一系列表中。
存储细节的表包括:backupsetbackupfilebackupfilegroup (SQL Server 2005 upwards)backupmediasetbackupmediafamilyrestorehistoryrestorefilerestorefilegrouplogmarkhistorysuspect_pages (SQL Server 2005 upwards)你可以在Books Online里面找到上面这些表的具体说明。
下面这个脚本可以帮你找出每个数据库近期的备份信息:SELECT , a.type, MAX(a.backup_finish_date) lastbackupFROM msdb..backupset aINNER JOIN master..sysdatabases b ON a.database_name COLLATE DATAB ASE_DEFAULT = COLLATE DATABASE_DEFAUL TGROUP BY , a.typeORDER BY , a.type指定数据库最后20条事务日志备份信息:SELECT TOP 20 b.physical_device_name, a.backup_start_date, a.first_lsn, er_name FROM msdb..backupset aINNER JOIN msdb..backupmediafamily b ON a.media_set_id = b.media_se t_idWHERE a.type = 'L'ORDER BY a.backup_finish_date DESC指定时间段的事务日志备份信息:SELECT b.physical_device_name, a.backup_set_id, b.family_sequence_num ber, a.position, a.backup_start_date, a.backup_finish_dateFROM msdb..backupset aINNER JOIN msdb..backupmediafamily b ON a.media_set_id = b.media_se t_idWHERE a.database_name = 'AdventureWorks'AND a.type = 'L'AND a.backup_start_date > '10-Jan-2007'AND a.backup_finish_date < '16-Jan-2009 3:30'ORDER BY a.backup_start_date, b.family_sequence_number删除备份日志的两个存储过程:EXEC msdb..sp_delete_backuphistory '1-Jan-2005'EXEC msdb..sp_delete_database_backuphistory 'AdventureWorks'本文翻译自sqlbackuprestore,更多精彩内容请浏览http://www.sqlbackuprestore. com。
为备份或还原操作指定的设备太多;只允许指定64个设备。
RESTORE DATABASE 操作异常终止。
当还原数据库时,如果出现“为备份或还原操作指定的设备太多;只允许指定64个设备。
RESTORE DATABASE操作异常终止。
”这个错误时,说明你是在把从SQLServer2005上备份的数据还原到SQLServer2000数据库上。
出现这个错误:1.并不说明你的电脑系统有问题(不用重装系统)。
2.你的SQLServer2005或SQLServer2000数据库安装的有问题(不用重装数据库)。
3.不用破口大骂微软垃圾。
很简单,只要你连接上SQLServer2005的SQLEXPRESS实例。
在SQLServer2005库上还原即可。
下载SQL Server Management Studio Express软件,这是用于连接管理SQLServer2005的工具。
可以帮助你还原数据库,强调一下,虽然使用SQL Server Management Studio Express这个工具了,SQLEXPRESS这个实例才是你要连接的2005数据库(.\SQLEXPRESS)。
而不是(.)或(local),如果是(.)或(local)说明你没有连接上SQLServer2005数据库,还会报错,必须确信你真正连接上了SQLServer2005数据库。
最后总结一下:SQLServer2005和SQLServer2000的备份是不能通用的,因此,当还原数据库时不能搞混,特别是,当从网上下载一些源代码,有些数据库的备份,没有注明是2005还是2000的,当出现以上错误时,说明你是在把从SQLServer2005上备份的数据还原到SQLServer2000数据库上。
需要注意一下。
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机制。
SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法收藏
以前一直使用SQL Server2000,现在跟潮流都这么紧,而且老师制定要求使用SQL Server2005,就在现在的项目中使用它了。
对于SQL Server 2005,有几个地方是要注意的,比方在还原数据库时,不像2000里边将数据库和文件区分的很细,统一均为文件,这就使还原的数据库文件制定为.bak。
那么想还原2000的数据库(备份数据库文件,无后缀名的),就需要自己手工选择。
选择下拉框中的“所有文件”,这时就会显示“备份数据库文件”了,选择-确定:
最主要就是要在“选项”中选择“覆盖现有数据库”,否则就会出现“备份集中的数据库备份与现有的数据库”的问题。