只有一个mdf,恢复数据库时发现的问题

akiy 2003-10-08 06:17:02
论坛李铁子很多,我是初学者

方法1:直接在数据库上右键,附加数据库
结果:对话框
Microsoft SQL-DMO (ODBC SQLState: 42000)
---------------------------
错误 1813: 未能打开新数据库 'LQERP'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\LQERP_Log.LDF' 可能有误。
---------------------------
确定
---------------------------
方法2:
新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数

据库文件,启动数据库,该数据库被设未suspect

然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'

把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )

恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override

然后用DBCC CHECKDB ('数据库名')看看有没有错误

如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
在进行到这一部:
然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'
时报错:
服务器: 消息 259,级别 16,状态 2,行 1
未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

如何配置我不会,能否请高手给解答一下

能否有比较适合我的简单方法???
...全文
114 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
leimin 2003-10-09
  • 打赏
  • 举报
回复
EXEC sp_attach_single_file_db @dbname = 'TST',
@physname = 'c:\data\TST_Data.MDF'
wgy2008 2003-10-09
  • 打赏
  • 举报
回复
EXEC sp_attach_single_file_db @dbname = 'TST',
@physname = 'c:\data\TST_Data.MDF'
pengdali 2003-10-09
  • 打赏
  • 举报
回复
当然有你要先:

新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设未suspect
伍子V5 2003-10-09
  • 打赏
  • 举报
回复
把创建的数据库删掉,然后执行这一句

EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
hdslah 2003-10-09
  • 打赏
  • 举报
回复
up
CrazyFor 2003-10-09
  • 打赏
  • 举报
回复
TRY:

sp_attach_single_file_db

单文件附加
smallroad 2003-10-08
  • 打赏
  • 举报
回复
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
akiy 2003-10-08
  • 打赏
  • 举报
回复
那位高手给各qq号让我加,感激不尽
akiy 2003-10-08
  • 打赏
  • 举报
回复
to letsflytogether(恨!不能拥有天下所有的财富,然后平分) :
新建一个数据库叫QQW?
然后
EXEC sp_detach_db @dbname = 'QQW'
EXEC sp_attach_single_file_db @dbname = 'QQW',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\TST_Data.MDF'
结果
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'QQW'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\LQERP_Log.LDF' 可能有误。

akiy 2003-10-08
  • 打赏
  • 举报
回复
大家是不是不懂我的意思
我是把一个文件从一台机器复制到另一台机器
分离只能分离已存在的数据库,我分离谁呢?
我现在手里有的只是刚刚安装的 sqlserver,和一个TST_Data.MDF
我怎么做呢
这样
use TTS
go
sp_configure 'allow', 1 reconfigure with override
go
update sysdatabases set status = 32768 where name = 'TTS'
肯定告诉我,没有TTS这个数据库呀
pengdali 2003-10-08
  • 打赏
  • 举报
回复
use 数据库名
go
sp_configure 'allow', 1 reconfigure with override
go
update sysdatabases set status = 32768 where name = '数据库名'
伍子V5 2003-10-08
  • 打赏
  • 举报
回复
sp_attach_single_file_db
将只有一个数据文件的数据库附加到当前服务器。

语法
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'

参数
[@dbname =] 'dbname'

要附加到服务器的数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。

[@physname =] 'phsyical_name'

据库文件的物理名称,包括数路径。physical_name 的数据类型为 nvarchar(260),默认值为 NULL。

返回代码值
0(成功)或 1(失败)

结果集


注释
当使用 sp_attach_single_file_db 将数据库附加到服务器时,它创建一个新的日志文件并执行额外的清除工作,从新附加的数据库中删除复制。

仅对以前使用显式 sp_detach_db 操作从服务器分离的数据库执行 sp_attach_single_file_db。

权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。

示例
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

txlicenhe 2003-10-08
  • 打赏
  • 举报
回复
先分离再附加:

下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧