你真的會使用SQL Server的備份還原功能嗎?之三:使用Copy的方式來備份資料庫

來源:互聯網
上載者:User

SQL Server允許使用簡單的Copy方式來備份資料庫的資料和記錄檔嗎?答案是肯定的。但前提是資料檔案不再被SQL Server使用。

當資料庫處於活動狀態,你不能簡單的copy它的檔案,推薦方式是使用完整Database Backup(備份類型)。這是因為資料庫的資料和記錄檔不能處於非一致狀態。這會導致僅僅在交易記錄中被修改的資料頁可能無法寫入資料檔案。這也會影響進程中的事務無法提交或是復原已經寫入檔案中的資料。

下面是一個簡單的例子:

10:00 Copying of data files start, takes 10 minutes.
10:05 A checkpoint occurs, modifies some pages at the beginning of the data file (which have already been copied), and some pages at the end of the data file (yet to be copied).
10:10 Copying of data files end, copy of transaction log starts.
10:15 Copying of transaction log ends.

你最後一步是copy交易記錄,這就意味著資料檔案已經包括了最後一次checkpoint以後的所有更改,但是實際上資料檔案僅僅包括部分更改。

Copy一個已經被其他應用程式開啟的檔案,這種方式是非常有用的,但如上所述,這種方式好像並不適用於備份SQL Server資料庫。假如你必須使用Copy方式來替換普通的Database Backup方式的話,推薦的方式是使用sp_detach_db預存程序來分離資料庫:

sp_detach_db 'AdventureWorks'

SQL Server在把資料庫從SQL Server執行個體上分離下來之前,會把所有的髒頁都寫回磁碟。然後,你就可以Copy資料庫檔案了,這時資料庫檔案也是處於一致性狀態的。然後,你可以使用sp_attach_db來重新附加資料庫:

sp_attach_db 'AdventureWorks', 'e:/mssql_data/AdventureWorks/AdventureWorks.mdf', 'e:/mssql_data/AdventureWorks_log.ldf'

假如你的資料庫僅僅由資料檔案組成,而且再也不需要交易記錄檔了,那麼使用sp_attach_single_file_db預存程序:

sp_attach_single_file_db 'AdventureWorks', 'e:/mssql_data/AdventureWorks/AdventureWorks.mdf'

當資料庫執行個體處於離線狀態時,你也可以安全的Copy資料庫檔案。

Copy資料庫檔案這種方式的主要略勢是,你不得不把資料庫離線一段時間,以便你來Copy資料檔案。而且,你也不能使用附加的資料庫作為差異備份和交易記錄備份的起始點。

 

本文翻譯自sqlbackuprestore,更多精彩內容請瀏覽http://www.sqlbackuprestore.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.