使用Sqlserver2005进行了了数据库的备份还原时出错
1 资源管理器--数据库
2 右键数据库--还原数据库/还原文件和文件组--源设备
3 浏览备份文件(bak或trn)
4 在目标数据库填写要命名的数据库,确定即可完成。
有时候为了考虑数据安全我们都会备份数据库 sqlserver的备份格式一般都是bak结尾的 但覆盖时容易出问题 这里简单介绍下 需要的朋友可以参考下 有时候完全备份 当还原的时候说不时数据库文件不让还原 解决办法: 可以直接复制数据库文件 xxx mdf 和 xxx ldf (实际复制过程中需要先停止sqlserver服务才可以) 用 sp_attach_db 存储过程 就能搞定 示例 下面的示例将 pubs 中的两个文件附加到当前服务器 EXEC sp_attach_db @dbname = N pubs @filename = N c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs mdf @filename = N c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log ldf N 表示Unicode的含义 就象类型中有varchar和nvarchar一样 一个Unicode字符占两个字节 使用N 的情况主要是在双字节系统环 境中强制系统对每个字符用Unicode标准来解释 否则如果你的数据库 mdf文件是中文名而又不加N 的话 数据库加载后名称可能就变成乱码 因为系 统按单字节处理字符造成! 如果确认是SQL SERVER无法启动 请按照下面步骤操作: 重装SQL SERVER(注意要保留原来数据库的数据库文件 日志文件可不要) 在SQL Analysis中用sp_attach_db将数据库加到服务器 sp_attach_db用法: sp_attach_db 将数据库附加到服务器 语法 sp_attach_db [ @dbname = ] dbname [ @filename = ] filename_n [ ] 参数 [@dbname =] dbname 要附加到服务器的数据库的名称 该名称必须是唯一的 dbname 的数据类型为 sysname 默认值为 NULL [@filename =] filename_n 数 据库文件的物理名称 包括路径 filename_n 的数据类型为 nvarchar( ) 默认值为 NULL 最多可以指定 个文件名 参数名称以 @filename 开始 递增到 @filename 文件名列表至少必须包括主文件 主文件包含指向数据库中其它文件的系统表 该列表还必须包括数据库分离后所有被移动的文件 返回代码值 (成功)或 (失败) 结果集 无 注释 只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db 如果必须指定多于 个文件 请使用带有 FOR ATTACH 子句的 CREATE DATABASE 如果将数据库附加到的服务器不是该数据库从中分离的服务器 并且启用了分离的数据库以进行复制 则应该运行 sp_removedbreplication 从数据库删除复制 权限 只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程 lishixinzhi/Article/program/MySQL/201311/29555
--1你备份的时候选择了多个目标路径
--2还原的时候,如果你只选择一个bak文件的话,就会出你那样的提示
--3解决办法,你还原的时候把两个备份文件一起添加进来再还原或者备份的时候不要备份在两个个文件中
/--
出现这种情况,说明你备份的时候指定了两个备份文件
这样,sql在做备份的时候,把数据库的内容分拆写到这两个备份文件中
所以恢复的时候也必须指定这两个备份文件才能恢复
因为一个备份文件中包含数据库中的一部分内容
--/
/--备份/恢复测试
SQL恢复时。提示媒体有2个家族成员。现在只提供了1个。数据备份不能恢复
--/
--下面是对这个问题的测试
--1创建测试的数据库
create database test
go
--2备份数据库(注意,我指定了两个备份文件)
backup database test to disk='c:\a1bak',disk='c:\a2bak' with init
go
--3删除测试的数据库
drop database test
go
--4恢复数据库(第一次,我只提供一个备份文件)
restore database test from disk='c:\a1bak'
go
--5查询是否恢复了
select from mastersysdatabases where name='test'
go
--上面的恢复会出错,也看不到恢复的数据库
--6下面是正确的恢复方法
restore database test from disk='c:\a1bak',disk='c:\a2bak'
go
--7查询是否恢复了
select from mastersysdatabases where name='test'
go
--8删除测试数据库
drop database test
/--下面是测试结果
--1创建数据库的提示信息:
CREATE DATABASE 进程正在磁盘 'test' 上分配 088 MB 的空间。
CREATE DATABASE 进程正在磁盘 'test_log' 上分配 049 MB 的空间。
已处理 112 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
--2备份数据库的提示信息
BACKUP DATABASE 操作成功地处理了 113 页,花费了 0180 秒(5108 MB/秒)。
--3删除数据库的提示信息
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_logLDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\testmdf'。
--4不正确恢复的提示信息
服务器: 消息 3132,级别 16,状态 1,行 3
数据库 'test' 的媒体集有 2 个家族成员,但只提供了 1 个。必须提供所有的成员。
服务器: 消息 3013,级别 16,状态 1,行 3
RESTORE DATABASE 操作异常终止。
--5查询是否恢复了的结果
name dbid sid mode status status2 crdate reserved category cmptlevel filename version
----- ------ --------------------------------------------------------------- ------ -------- ----------- -------------------------- ------------------------- ---------- ---------- ----------------------------------------------------------- --------
(所影响的行数为 0 行)
--6正确恢复的提示信息
已处理 112 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 113 页,花费了 0186 秒(4943 MB/秒)。
--7查询是否恢复了的结果
name dbid sid mode status status2 crdate reserved category cmptlevel filename version
----- ------ --------------------------------------------------------------- ------ -------- ----------- -------------------------- ------------------------- ---------- ---------- ----------------------------------------------------------- --------
test 11 0x01050000000000051500000007E53B2B54190E2943170A32F4010000 0 16 1090519040 2003-12-31 16:35:03673 1900-01-01 00:00:00000 0 80 d:\Program Files\Microsoft SQL Server\MSSQL\data\testmdf 539
(所影响的行数为 1 行)
--8删除数据库的提示信息
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\test_logLDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\testmdf'。
--/
把备份文件放到其它盘试试?
网上的二种方案:
一,不能将备份文件放在根目录下,必须放在一个非根目录下,否则就会报上面的错误。(貌似LZ可以排除这个)
二:
NTFS格式设置了权限,限制了或者没有开放SQL的写入权限。
,对于NTFS分区上的目录而言,可以给账号或组指定如下几种权限: 1.完全控制,具有对文件夹的全部操作
能力。 2.修改,能够更改、添加、读取文件。 3.读取,仅能够读文件内容。 4.写入,能够向文件中添
加内容。 5.读取及运行,同时包括3和4。 6.列出文件夹目录,能够查看文件夹内容,但不能访问。
7.禁止访问,不具有如何权限。
权限的设定是在我的电脑或者Windows资源管理器中完成的,具体方法如下: 1.右击NTFS分区上的文件夹,
在弹出菜单上选择属性。 2.单击文件夹属性对话框中的安全选项卡,如右图。 3.安全选项
卡上部的账号和组列表中,列出当前具有访问权限的账号和组。 4.从列表中选择需要指定权限的账号或组,
在权限列表中指定其对该文件夹拥有的访问权限。具体方法是选择欲指定权限对应的允许或拒绝
复选框。例如,需要允许某账号读取但不允许写入时,就分别选择读取和写入权限所对应的允许
和拒绝复选框。将所有权限都选为拒绝时,相当于指定了拒绝访问的权限。 5.当需要指定其他账号
或组的访问权限时,应先将其加入账号和组列表中,单击账号户和组列表右侧的添加,打开如左图所示的
选择用户、计算机或组对话框。 6.在查找范围下拉列表框中指定账号和组所在的域或计算机。
7.从列表中选择账号或组名,单击添加。 8.反复将多个账号或组加入结果列表后,单击确定返回。
你方法不对
进到Microsoft SQL Sserver Management Studio后
点击新建查询,然后左边列出树来
右键点数据库,选择还原数据库
然后见图
其中aaa是你要新建的库名
原设备填写的是你bak文件的路径及文件名
下边还原那地方必须划勾
然后确定
0条评论