SQL Server 高手請進!特急!!!(200分)

  • 主题发起人 主题发起人 smokingroom
  • 开始时间 开始时间
S

smokingroom

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL Server2000數據庫恢復時出現如下錯誤,望各位高手給予解答,特急!!!

Device activation error.The physical file name 'D:/SQLData/Cost_Data.MDF' may be
incorrect.
File 'Cost_Data' Cannot be restored to 'D:/SQLData/Cost_Data.MDF'.Use WITH MOVE
to indentify a valid location for the file.
Device activation error.The physical file name 'D:/SQLData/Cost_Log.LDF' may be
incorrect.
File 'Cost_Log' Cannot be restored to 'D:/SQLData/Cost_Log.LDF'.Use WITH MOVE to
indentify a valid location for the file.
Device activation error,The Physical file name 'D:/SQLData/CostLog1' may be incorrect.
File 'Cost_1_Log' Cannot be restored to 'D:/SQLData/CostLog1',Use WITH MOVE to
RESTORED DATABASE is terminating abnormally.
 
是不是在该目录下已存在了这些文件?如果存在了则先把其删除掉再恢复.
 
由於本公司Dell服務器Down了,硬盤出事.只好用另一臺.但其備份數據竟然不能恢復到新服務器中.
 
你是怎样恢复的?
 
當然是用Enterprise Manager/Restore Database了.

 
那你就在新的这台备份服务器上建立一个空的库,然后再强制恢复就可以了。
 
to wuyongyuan:我就是這樣做的,但報上述錯誤啊.
 
在查询分析器中用 sp_attach_db.
 
to stucxm:
能否說具體點?謝了.
 
to wuyongyuan:
是不是在恢复的时候没有改数据库的路径。在新硬盘上没有D:/SQLDATA这个目录吧
 
上面一句发错人了是给smokingroom
 
一、安装时将你的数据库文件(如:hosdata_Data.MDF和hosdata_Log.LDF)
也拷贝到硬盘某录下(如:C:/MsSql7/Data)

二、保证MSSQLSERVER中没有同名的数据库,然后手工或编程执行如下代码来装载你的数据库,
EXEC sp_attach_db @dbname = N'hostdata',
@filename1 = N'c:/mssql7/data/hosdata_Data.MDF',
@filename2 = N'c:/mssql7/data/hosdata_Log.LDF'

拷贝的SQL Server 7,2000数据库的恢复方法

在SQL Server 7中由于MS重新设计了数据库文件的存储方式,
取消了新建设备再建数据库这一繁琐的过程。新的存储格式,
一个数据库包括两个文件,mdf数据库文件和ldf日志文件。
所以我们在重装机器备份时可以把你要备份的数据库的这两个文件拷贝出来,
重新安装之后再恢复。
  在SQL Server中提供了这种恢复方式的存储过程。
1.sp_attach_db [@dbname =] 'dbname',[@filename1 =] 'filename_n'
给系统添加一个数据库,在dbname指定数据库名称,
filename_n指定数据库的文件和日志文件。比如我有一个voogiya的库,
停止SQL Server服务备份voogiya_data.mdf,voogiya_log.ldf,启动SQL server,
删除掉这个库,然后再把这两上文件拷到sql server DATA目录中,
在Query Analyzer中执行如下语句:
EXEC sp_attach_db @dbname = N'hotel',
@filename1 = N'c:/mssql7/data/hotel_data.mdf',
@filename2 = N'c:/mssql7/data/hotel_log.ldf'
就会把这个库加入到SQL Server Group中.
2.sp_attach_single_file_db [@dbname =] 'dbname',
[@physname =] 'physical_name'
这个命令和上面的功能一样,在physical_name中只要写上据库的物理文件名就可以了,日志文件SQL server会重新建立。这个存储过程的运行要先执行下面的存储过程:
sp_detach_db @dbname = 'dbname'
同样以上面的为例:
EXEC sp_detach_db @dbname = 'voogiya'
EXEC sp_attach_single_file_db @dbname = 'voogiya',
@physname = 'd:/mssql7/data/voogiya_data.mdf'


要注意执行以上存储过程的用户要在sysadmin中.
 
看一看BOOK ONLINE吧,查找sp_attach_db,里面有示例,修改一下就可以了
注意:指定文件名时若只指定数据文件(MDF)有错误的话就把LDF文件也指定上。
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:/mssql7/data/pubs.mdf',
@filename2 = N'c:/mssql7/data/pubs_log.ldf'



 
to coldew:
不是文件與路徑的問題的.
 
同 book523与xxhadsg。
 
to book523,xxhadsg:
問題是現在只有Bak文件,無MDF及LDF文件.該怎樣做?
 
在还原数据库的“选项“卡中把下面的物理文件名改为你现在机器上的SQLSERVER的
数据目录中。
 
我也出现过这样的现象,原因是这样的:
原来你的MSSQL在D上后来你想要恢复到的目标服务器上的MSSQL不在D上这样就出现
错误了,把你的路径改的和你的SQL的安装路径一样就ok了。
你原来的服务器上的路径:D:/SQLData/Cost_Data.MDF
现在肯定不是了,改成现在的就ok了
 
只有bak文件?那就只要用restore database了,你
按Beast的方法,把路径改为一致试一试?
另外你的磁盘空间一定要足够大,起码要大于
以前数据库两个文件大小的和。
 
多人接受答案了。
 
后退
顶部