关于 SqlServer 存储过程 sp_attach_db 的使用(200分)

0

0738

Unregistered / Unconfirmed
GUEST, unregistred user!
前两天重装机器前,我把数据库"Stores"对应文件"stores.mdf"做了 copy,由于log文件太大,
直接将其删除了.做完系统恢复数据库时在sql analysis 中使用以下语句:

sp_attach_single_file_db 'Stores','c:/Mssql7/Data/stores.MDF' 和
sp_attach_db 'Stores','c:/Mssql7/Data/stores.MDF'

均出现以下错误提示:
Server: Msg 945, Level 14, State 2, Line 1
Database 'Stores'cannot be opened because some of the files could not be activated.
Server: Msg 1813, Level 16, State 2, Line 1
Could not open new database 'Stores'. CREATE DATABASE is aborted.



 
执行这个试试:
EXEC sp_attach_single_file_db @dbname = 'Stores',
@physname = 'c:/Mssql7/Data/stores.MDF'
 
我按你的方法操作了一遍,用 sp_attach_db很顺利就恢复了,并且重建了日志文件。
这是我的语句。
EXEC sp_attach_db @dbname = N'YB', @filename1 = N'D:/Program Files/mssql7/Data/YB_Data.mdf'
没搞懂你的问题。
 
shangshang:
我试过的,当mdf和ldf文件较小的时候,这么做确实没什么问题,但是到一定规模的时候
它就会象我上面说的那样了。(未压缩前mdf文件有25M,ldf文件有100M)
 
直接再enterprise manger 下点数据库,单击鼠标右键,再快捷菜单里选取任务
附加数据库,用它本身的方法试一下
 
用create database 命令加for attach 参数试一试
 
用这个吧
sp_attach_db 'Stores','c:/Mssql7/Data/stores.MDF','c:/Mssql7/Data/stores.lDF'
在系统存储过程中加入日志文件参数,应该是没有问题的,提示的错误是,文件没有打开
创建数据库失败,所以你应该把日志文件带在参数你呀,数据库文件是需要日志的,否则无法创建呀
 
sp_attach_db 'Stores','c:/Mssql7/Data/stores.MDF','c:/Mssql7/Data/stores.lDF'
 
w12345678:
sp_attach_db这个过程本身就是用create database 命令加for attach 参数做的,而且
我也试了,结果一样
 
tusc_heqiao,w.th:
如果有ldf文件当然好了,问题是我已经把ldf文件删除了。而且,我还想知道为什么有的
时候用单文件附加可以,有的时候又不行呢?
 
没有ldf文件就应该用sp_attach_single_file_db 'Stores','c:/Mssql7/Data/stores.MDF'
你好好再查一下它的使用方法
 
用sp_attatch_db应该可以的啊,没有日志也可以啊,大小好像没有关系吧!
我的数据库.mdf300M,没有log我也成功了?你看看是不是你的数据库文件损坏了!
 
首先谢谢上面各位的帮忙。我现在大概查到了造成这种现象的原因,它确实同数据库
的大小无关。应该是我拷贝的mdf文件不完整的缘故。例如我们如下操作:
1、在数据库db1下运行一个不完整的事务,例如:
begin tran
delete from table1
2、暂停Mssqlserver服务,拷贝db1的mdf文件作备份
3、重新启动mssqlserver服务,运行drop database db1删除此数据库
4、运行sp_attach_single_file_db 就会引起以上的错误
我分析这是因为ldf文件中记录了事务的缘故,大家可以试一下,看看有没有什么解决的办法
 
现在还是没办法解决,请各位高手再看看
 

CREATE DATABASE db1 ON
PRIMARY
(FILENAME = '路径名/db1_data.mdf')
FOR ATTACH
试一试
 
w12345678:
我试过了,还是不行。有没有别的办法呢?
 
那我也没招啦
不过
河南商都信息港上的软件沙龙里面有一个小软件
MSSQLRecovery 专门用来修复损坏的sql数据库文件,下载下来试一试
河南商都信息港网址 http://www.zz.ha.cn
下载地址一:http://soft.shangdu.com/query/down.asp?softnumber=5710&dtype=3&path=/msrdemo.exe
对啦,修复之前记着备份

 
顶部