[SQL]SQL 2000 Attach 沒有 LDF 的資料庫

在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:從零開始的軟體開發生活

請大家繼續支持 ^_^