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...