SQL2005恢復只有mdf檔案的資料庫

2021-09-08 08:12:20 字數 4499 閱讀 9038

use

master  

gosp_attach_single_file_db

'db_name

',  

'd:\db_name.mdf'--

pathgo

sql系統的儲存過程支援。

sp_attach_single_file_db (transact-sql)

將只有乙個資料檔案的資料庫附加到當前伺服器。sp_attach_single_file_db不能用於多個資料檔案。

重要提示

後續版本的 microsoft sql server 將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程式。,我們建議您改用 create database database_name for attach。有關詳細資訊,請參閱create database (transact-sql)。不要針對複製資料庫使用此過程。

or create

database

testdb  

on(  

filename ='

d:\testdb.mdf')

forattach_rebuild_log

*網上看到的整理了一下。

在sql server 7.0中,微軟推出了sp_attach_db和sp_attach_single_file_db系統儲存過程。

它對於sql server資料庫管理員執行下面的任務是非常方便的:

1 使用sp_attach_db系統儲存過程直接將.mdf和.ldf檔案附加到伺服器。

2 使用sp_attach_single_file_db系統儲存過程只附加.mdf檔案。

3 使用sp_detach_db將資料庫從乙個伺服器分離,複製.mdf檔案到另乙個伺服器上,然後使用

sp_attach_db系統儲存過程重新附加這些檔案到兩個伺服器上。

儘管它對於sql server資料庫管理員是很有用的,但是在使用這兩個儲存過程時是有一些限制的。限制如下:

1 你不能附加多個日誌檔案

2 你不能附加16個以上的檔案

在sql server 2008中,微軟宣布上面的系統儲存過程將在未來的版本中被廢棄。而他們在"create database"

sql語句中新增了乙個從句"for attach"。

下面介紹使用"for attach"從句的多種方法,以克服在使用sp_attach_db和sp_attach_single_file_db時要面臨的限制。

*/--

建立測試資料庫

usemaster  

gocreate

database

testdb  

on( name

=testdb,  

filename ='

d:\testdb.mdf

',  

size =10

,  

maxsize =50

,  

filegrowth =5

)  

logon

( name

=testdb_log,  

filename ='

d:\testdb_log.ldf

',  

size

=5mb,  

maxsize

=25mb,  

filegrowth

=5mb )  

go--

現在,讓我們分離該資料庫,並嘗試使用sp_detach_db和sp_attach_db將它重新附加。

--執行下面的事務sql語句。

usemaster  

gosp_detach_db

'testdb'go

sp_attach_db

'testdb

',  

'd:\testdb.mdf

',  

'd:\testdb_log.ldf'go

--你也可以使用具有"for attach"從句的"create database"命令附加上相同的資料庫檔案,如下所示。 

usemaster  

gosp_detach_db

'testdb'go

create

database

testdb  

on(filename ='

d:\testdb.mdf

'), 

(filename ='

d:\testdb_log.ldf')

forattach  

go--

現在,讓我們分離資料庫testdb,然後刪除.ldf檔案,再然後使用sp_attach_single_file_db

--系統儲存過程通過,執行下面的tsql命令將它重新附加上。

usemaster  

gosp_detach_db

'testdb'go

exec

master..xp_cmdshell

'del "d:\testdb_log.ldf"'go

--你可以使用下面的事務sql語句來啟用xp_cmdshell。 

usemaster  

gosp_configure

'show advanced options',

1goreconfigure

with

override  

gosp_configure

'xp_cmdshell',

1goreconfigure

with

override  

go--

或者,你可以在ms-dos命令提示符中使用windows資源管理器的"del"命令來刪除.ldf檔案。

--現在,讓我們只使用sp_attach_single_file_db來附加.mdf檔案。執行下面所示的命令。

usemaster  

gosp_attach_single_file_db

'testdb

',  

'd:\testdb.mdf'go

--你可以只通過使用帶有"for attach_rebuild_log"從句的"create database"命令來附加

--相同的資料庫.mdf檔案,如下所示。

usemaster  

gosp_detach_db

'testdb'go

exec

master..xp_cmdshell

'del "d:\testdb_log.ldf"'go

--注意:當日誌檔案被重新建立時,sql server自動對日誌檔名稱新增字尾"_log"。

create

database

testdb  

on(  

filename ='

d:\testdb.mdf')

forattach_rebuild_log 

--本文介紹了帶有"for attach"和"for attach_rebuild_log"用於乙個單獨的.mdf檔案和乙個單獨的.

--ldf檔案的"create database"語句的使用。

sql2005 如何在沒有日誌檔案的情況下如何恢復mdf資料庫檔案

第一步:先建立乙個同名資料庫,停止sql server2005,將沒有日誌的的.mdf資料庫檔案覆蓋剛新建的.mdf資料庫檔案,重新啟動資料庫。

第三步:在查詢分析器中執行如下**:

alter database 資料庫名 set emergency —將資料庫設定為緊急狀態

use master 

declare @databasename varchar(255) 

set @databasename=『資料庫名』 —你的.mdf檔案檔名

exec sp_dboption @databasename, n』single『, n』true』 —將目標資料庫置為單使用者狀態 

dbcc checkdb(@databasename,repair_allow_data_loss) 

dbcc checkdb(@databasename,repair_rebuild) 

exec sp_dboption @databasename, n』single『, n』false』—將目標資料庫置為多使用者狀態 

執行出現「資料庫其他多個檔案與資料庫主檔案不匹配….」錯誤,再執行一次即可。

以上是2005以上的使用方法

sql 2003以下的方法有

在需要進行sql server

恢復的時候,如果當時僅僅備份了mdf檔案,那麼還能不能恢復資料庫呢?答案是肯定的,下面就教您

只有mdf檔案的sql server恢復方法,供您參考。

如果您的mdf檔案是當前資料庫產生的,那麼很僥倖,也許你使用sp_attach_db或者sp_attach_single_file_db可以恢復資料庫,但是會出現類似下面的提示資訊

SQL2005恢復只有mdf檔案的資料庫

我把原來的資料庫分離後,直接把日誌檔案給乾掉了。原來在sql 2000裡經常這麼幹,只用乙個mdf就附加了。沒想到sql2005居然不行。我試驗了一圈 終於找到乙個成功的方法。供後來者參考。sql2005 如何在沒有日誌檔案的情況下如何恢復mdf資料庫檔案 第一步 先建立乙個同名資料庫,停止sql ...

SQL2005恢復只有mdf檔案的資料庫

我把原來的資料庫分離後,直接把日誌檔案給乾掉了。原來在sql 2000裡經常這麼幹,只用乙個mdf就附加了。沒想到sql2005居然不行。我試驗了一圈 終於找到乙個成功的方法。供後來者參考。sql2005 如何在沒有日誌檔案的情況下如何恢復mdf資料庫檔案 第一步 先建立乙個同名資料庫,停止sql ...

只有mdf檔案的恢復技術

由於種種原因,我們如果當時僅僅備份了mdf檔案,那麼恢復起來就是一件很麻煩的事情了。如果您的mdf檔案是當前資料庫產生的,那麼很僥倖,也許你使用sp attach db或者sp attach single file db可以恢復 資料庫,但是會出現類似下面的提示資訊 裝置啟用錯誤。物理檔名 c pr...