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

來源:互聯網
上載者:User

     對於分離一個資料庫來說,我們可以用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 databasenameON (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:移動系統資料庫

 

參考:SQL Server 2005 技術內幕-儲存引擎

Author:興百放

Web:Http://xbf321.cnblogs.com

2010.3.11.22:16

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.