在ms sql server7/2000中摒棄了以前版本中的裝置物件,乙個資料庫檔案包含兩個檔案:.mdf和.ldf。在系統癱瘓之前把這兩個檔案從sql server的安裝目錄的data子目錄裡拷貝出來(一般為d:\mssql\data),重新安裝完成系統之後,再將這兩個檔案拷貝到sql server安裝目錄的data子目錄裡面,然後進行如下操作就可以恢復你的資料庫了。
恢復時有兩種方式可供選擇:
1、呼叫系統儲存過程sp_attach_db
舉乙個例子,需要備份和恢復乙個名為student的資料庫。先開啟sql server service manager,關掉sql server服務,把需要備份的student資料庫複製到其他的地方(可以是自己硬碟的其它盤,也可通過區域網複製到他人的pc上),包含有兩個檔案student.mdf和student.ldf。某些時間以後,系統資料庫癱瘓,需要進行恢復。先重新安裝系統,把student.mdf和student.ldf這兩個檔案拷貝到sql server安裝目錄的data子目錄裡面,再在ms query analyzer中執行如下命令:
exec sp_attach_db @dbname=n'student',
@filename1=n'd:\mssql\data\student_data.md',
@filename2=n'd:\mssql\data\student_log.ldf'
第一行命令表示要恢復的資料庫名稱,可以是原來的名稱student,也可以另外起一名稱,但一定要保證唯一。 第
二、三行命令表示資料庫檔案的物理名稱,也就是說你拷貝過來的資料庫檔案student.mdf和student.ldf的實際位置。
2、呼叫系統儲存過程sp_attach_single_file_db
如果日誌檔案.ldf丟失,可以採用這個命令。還以上面的student資料庫為例,在ms query analyzer中執行如下命令:
exec sp_detach_db @dbname=′student′
exec sp_attach_single_file_db @dbname=′student′,
@physname=′d:\mssql\data\student_data.mdf′
呼叫這個儲存過程不必指定日誌檔案,它會自動生成日誌檔案。注意以上恢復拷貝的資料庫的方法一定要保證重新安裝後的sql的字符集和排序方式同以前的系統完全相同,否則將不能成功
***************=
附加資料庫:
企業管理器
--右鍵"資料庫"
--所有任務
--附加資料庫
--選擇你的.mdf檔名
--確定
--如果提示沒有.ldf檔案,是否建立,選擇"是"
查詢分析器中的方法:
--有資料檔案及日誌檔案的情況
sp_attach_db '資料庫名'
,'資料檔名(*.mdf注意要帶目錄)' --後面可以是用,分隔的該資料庫的多個資料檔案
,'日誌檔名(*.ldf注意要帶目錄)'--後面可以是用,分隔的該資料庫的多個日誌檔案
--如果只有資料檔案的情況
sp_attach_single_file_db '資料庫名'
,'資料檔名(*.mdf注意要帶目錄)' --後面可以是用,分隔的該資料庫的多個資料檔案
===exec sp_attach_db 'db_name','c:\program files\microsoft sql server\mssql\data\db_name.mdf','c:\program files\microsoft sql server\mssql\data\db_name.ldf'
mdf檔案和ldf檔案是什麼?
在微軟的sql server 2000 資料庫有三種型別的檔案 型別縮寫 中文意思 mdfprimary data file 主要資料檔案 ndfsecondary data files 次要資料檔案 ldflog data files 事務日誌檔案 主要資料檔案包含資料庫的啟動資訊,並指向資料庫中...
資料庫還原 根據MDF檔案和LDF檔案
mdf 和 ldf 是sql server的資料檔案和日誌檔案,通過對sql資料庫的分離,我們可以獲得這二個檔案,同樣可以還原到對應的伺服器上。下面為主要操作步驟 把mdf檔案和ldf檔案拷貝到對應目錄裡 如 d sqldata 裡 在sqlserver裡新建個查詢,執行下面 use master ...
無ldf檔案附加mdf檔案的做法
建立乙個一樣名稱的資料庫,如test 停止mssql服務,把備份的mdf檔案替換為新建資料庫對應的mdf檔案 啟動mssql服務,注意,不能把新建的同名資料庫的ldf檔案刪除!到此,按順序執行以下指令碼 step.01 alter database test set emergency go ste...