SQL Server 分離和重新附加資料庫

2022-02-27 21:24:06 字數 1588 閱讀 5570

對於分離乙個資料庫來說,我們可以用manage studio介面或者儲存過程。但是對於每一種方法都必須保證沒有使用者使用這個資料庫.接下來所講的都是對於用命令來分離或附加乙個資料庫。對於用manage studio自己看著介面操作就可以應付了。

分離資料庫

對於用儲存過程來分離資料庫,如果發現無法終止使用者鏈結,可以使用alter database命令,並利用乙個能夠中斷已存在鏈結的終止選項來把資料庫設定為single_user模式,設定為sigle_user**如下:

alter

database [databasename] set single_user with

rollback

immediate

下面是分離資料庫的cmd命令

exec

sp_detach_db databasename

一旦乙個資料庫分離成功,從sql server角度來看和刪除這個資料庫沒有什麼區別。

附加資料庫

對於附加資料庫,可以使用sp_attach_db儲存過程,或者使用帶有for attach選項的create database命令,在sql server2005或更高的版本中推薦使用後者,前者是為了向前相容,它正在逐漸淘汰,而後者更提供更多對檔案的控制。

create

database databasename

on (filename = 'd:\database\dbname.mdf')

for attach | for attach_rebuild_log

然而對於這樣的附加,我們要注意幾個地方。因為涉及到重建日誌。

1.對於乙個讀/寫資料庫,如果含有乙個可用的日誌檔案,無論使用for attach ,還是使用for attach_rebuld_log,都是一樣,都不會對此資料庫重建日誌檔案。如果日誌檔案不可用或者物理上沒有該日誌檔案,使用for attach或for attach_rebulid_log都會重建日誌檔案,所以如果我們複製乙個帶有大量日誌檔案的資料庫到另一台伺服器中,就可以只複製.mdf檔案,不用複製日誌檔案,然後使用for attach_rebuld_log選項重建日誌。條件是這台伺服器將主要使用或只用改資料庫的副本進行讀操作。

2.對於乙個唯讀資料庫,就有點區別了,如果日誌檔案不可用,那麼就不能更新主檔案,所以也就不能重建日誌,因此當我們附加乙個唯讀資料庫是,必須在for attach從句中指定日誌檔案。

如果使用附加資料庫重建了日誌檔案。使用for attach_rebuild_log會中斷日誌備份鏈,進行這種操作之前最好做一次資料庫完全備份。

使用sp_detach_db儲存過程乙個好處就是可以保證乙個資料庫是被乾淨的關閉,那日誌檔案就不是附加資料庫所必須的,我們可以使用for attach_rebuild_log命令重建日誌,得到乙個最小的日誌檔案。也算是一種快速收縮乙個大日誌檔案的方法。

參考:sql server 2005 技術內幕-儲存引擎

author:興百放

web:

2010.3.11.22:16

SQL Server 2000 資料庫分離與附加

sp detach db 從伺服器分離資料庫,並可以選擇在分離前在所有的表上執行 update statistics。語法sp detach db dbname dbname skipchecks skipchecks 引數 dbname dbname 要分離的資料庫名稱。dbname 的資料型別為...

sql server 分離附加

當我們需要拷貝乙個資料庫卻提示一直在占用,這時候可以用分離附加的方法。或者我們需要移動資料檔案所在磁碟位置,也可以用分離附加的方法。一 視覺化編輯器操作 1.分離 在需要分離的資料庫右鍵選擇任務,點選分離,勾選以下兩個核取方塊,點選確定即可。2.附加 選中物件資源管理器下的資料庫 右擊 附加,點選新...

資料庫分離和附加 SQL Server

分離唯讀資料庫將會丟失有關差異備份的差異基準的資訊。有關詳細資訊,請參閱 差異備份 sql server 分離資料庫時生成的錯誤會阻止完全關閉資料庫和重新生成事務日誌。收到錯誤訊息後,請執行下列更正操作 重新附加與資料庫關聯的所有檔案,而不僅僅是主檔案。解決導致生成錯誤訊息的問題。再次分離資料庫。您...