在SQL 2000中,如果只有MDF檔,沒有LDF檔,要如何Attach呢?
CREATE DATABASE ... FOR ATTACH_REBUILD_LOG 不能用,要怎麼辦呢?
今天同事在SQL 2000 上使用以下的SQL來 Attach 沒有 LDF 的資料庫,
CREATE DATABASE MYDB ON
(FILENAME = N'D:\SQLDATA\DATA\MYDB_Data.MDF')
FOR ATTACH_REBUILD_LOG
卻發生 syntax near 錯誤,如下,
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near 'ATTACH_REBUILD_LOG'.
該語法在SQL 2005(含)以上是沒問題的說!
後來找到「How do I attach a MSSQL 2000 database with only an MDF file」這篇。
依它的方式來做就可以了! 如下,
1.建立新的資料庫,名稱就跟要 attach 一樣
2.停止SQL,然後把剛才建立的DB的File刪掉,並Copy原有的DB File過去!
3.啟動SQL,把 DB (我的名稱是MYDB,請依您的DBName修改) 設定成 emergency 模式
sp_configure 'allow updates', 1
go
reconfigure with override
GO
update sysdatabases set status = 32768 where name = 'MYDB'
go
sp_configure 'allow updates', 0
go
reconfigure with override
GO
4.重啟SQL
5.透過 DBCC REBUILD_LOG 來產生 LDF
DBCC REBUILD_LOG(MYDB,'DD:\SQLDATA\DATA\MYDB_LOG.LDF')
6.重設DB的狀態
exec sp_resetstatus MYDB
7.再重啟SQL (這時DB狀態是 restricted use mode)
8.將DB改成 MULTI_USER mode
ALTER DATABASE MYDB SET MULTI_USER
有試過,Setp 4沒重啟SQL,再Run後面的SQL,也是可以的哦!
大家可以試看看哦!
參考資料
How do I attach a MSSQL 2000 database with only an MDF file
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^