270 likes | 461 Views
第十五章. 資料庫的備份與還原 (Backup & Restore). Chapter 15 Outline. 15-1 備份與還原簡介 15-2 完整的資料庫備份與還原 15-3 差異資料庫備份與還原 15-4 資料庫卸離與附加 15-5 資料的匯出與匯入 15-6 本章總結. 15-1 備份與還原簡介. SQL Server 的備份 (Backup) 與還原 (Restore) 功能為提供資料完整保存的保障,它們可以保護那些儲存於伺服器上的重要資料。當有異常狀況發生時,備份與還原功能可以完全的將資料庫回復至原來的狀態。以下是需要備份的理由:
E N D
第十五章 資料庫的備份與還原 (Backup & Restore)
Chapter 15 Outline • 15-1 備份與還原簡介 • 15-2 完整的資料庫備份與還原 • 15-3 差異資料庫備份與還原 • 15-4 資料庫卸離與附加 • 15-5 資料的匯出與匯入 • 15-6 本章總結
15-1 備份與還原簡介 • SQL Server的備份(Backup)與還原(Restore)功能為提供資料完整保存的保障,它們可以保護那些儲存於伺服器上的重要資料。當有異常狀況發生時,備份與還原功能可以完全的將資料庫回復至原來的狀態。以下是需要備份的理由: • 裝置故障:如果儲存資料庫的磁碟機故障,而且又不能夠由早先的備份還原資料庫,那我們將失去所有的資料。
15-1 備份與還原簡介 • 使用者疏失:如果一使用者或是一應用程式在有意或無意中錯誤的修改了大量的資料。 • 永久的失去一伺服器:如果一伺服器永久性的無法正常運作,或是硬體需要升級。此時也許會去準備另一伺服器,並且將備份還原至新伺服器上,使系統能夠迅速的恢復正常運作。 • 天然災害:例如發生水災、火災或是地震等天然災害導致資料庫伺服器毀損。
15-1 備份與還原簡介 • SQL Server支援的備份資料方式: • 資料庫備份:完整備份整個資料庫的內容,資料庫備份很容易使用,建議在資料庫大小許可的範圍內儘量採用這種方式。 • 部分備份:部分備份與完整資料庫備份類似,但是部分備份不包含所有的檔案群組。部分備份只會備份主要檔案群組、每個讀取/寫入檔案群組以及使用者指定之唯讀檔案。 • 檔案備份:資料庫中的檔案也可個別備份與還原 。 • 交易記錄檔備份:除了資料庫的資料外,還可以只備份一資料庫的交易記錄檔
15-1 備份與還原簡介 • SQL Server對於資料庫的資料備份方面有三種方式可以選擇,而在這三種方式上也都支援完整備份與差異備份策略`. • 完整備份:拷貝完整的指定資料,需要較多的備份時間與儲存空間,但是卻最容易還原。 • 差異備份:備份上一次完整備份到目前資料有所差異資料,由於只備份差異部分,因此需要的備份時間與儲存空間就比較少。
15-2 完整的資料庫備份與還原 • 使用SSMSE備份TradeDB資料庫 • 請在SSMSE中展開[資料庫] 項目點選[TradeDB]項目滑鼠右鍵彈出式選單的[工作][備份]選項 • 在[資料庫]資料欄中選擇預備份之資料庫,例如[TradeDB] • 請在[備份類型]下選擇[完整] • 請在[名稱]欄位中輸入該次備份組的名稱,該名稱會在還原時出現,為該備份組織識別 • 請確定[目的地]並為該檔案命名
15-2 完整的資料庫備份與還原 • 使用SSMSE還原TradeDB資料庫 • 請在SSMSE中點選[資料庫]項目滑鼠右鍵彈出式選單的[還原資料庫]選項 • 請在[一般]頁面下的[目的地資料庫]欄位中輸入資料庫名稱TradeDB(在此處也可以輸入不是原來資料庫的名稱) • 請點選[來源裝置],並按[…]按鈕尋找備份檔案 • 選擇備份媒體之後請按[加入]按鈕 以加入備份檔案
15-3 差異資料庫備份與還原 • 完整資料庫的備份與還原是在使用上是最簡單的,如果資料庫的大小允許則最建議使用。 • 差異備份賴以為基礎的資料庫、部分或檔案備份就稱之為「差異基底」。差異備份只會記錄最後一次差異基底後變更過的資料,因此差異備份比差異基底更小且更快,有助於進行經常備份,從而降低遺失資料的風險。
15-3 差異資料庫備份與還原 • 每一差異資料庫備份只記錄上一次資料庫完整備份(不是上一次差異資料庫備份)之後所有的資料修改。 • 如果於一資料庫完整備份之後製作了一系列的差異資料庫備份,則當資料庫毀損之後,並不需要使用到每一個差異資料庫備份,而只需將最後一次的差異資料庫備份施加於完整備份回復的資料庫即可
日期/時間 完整資料庫備份 差異資料庫備份 0:00(星期三) ▲ 6:00(星期三) ▲ 12:00(星期三) ▲ 18:00(星期三) ▲ 0:00(星期四) ▲ 6:00(星期四) ▲ 12:00(星期四) ▲ 15-3 差異資料庫備份與還原 • 例如:下表為某家公司資料庫備份的排程
15-3 差異資料庫備份與還原 • 在星期四14:00資料庫毀損,此時則可依下列動作還原 • 先還原星期四0:00所製作的資料庫完整備份 • 將星期四中午12:00製作的差異資料庫備份施加於資料庫 • 以上兩項動作只能將資料庫回復至星期四中午12:00時的資料狀態,中午之後的資料就算是遺失了,因此必須人工重新建立或執行相關的程式。
15-4 資料庫卸離與附加 • 除了使用備份和還原的方式之外,還可以將資料庫的資料和交易記錄檔卸離,然後再重新附加至相同或不同的SQL Server執行個體上,使用卸離和附加資料庫也相當方便。 • 何時需要卸離資料庫,就在有某一個資料庫暫時不用的時候。因為SQL Server管理資料庫需要耗費一些系統資源,也因此請不要將沒有使用的資料庫附加到伺服器上
15-4 資料庫卸離與附加 • 卸離資料庫只要在SSMSE中點選欲卸離資料庫滑鼠右鍵彈出式選單的[工作]選項點選[卸離]選項。 由於目前資料庫有一個使用者連線,因此無法卸離。如果要強制卸離則請勾選[卸除連接]選項
15-4 資料庫卸離與附加 • 附加資料庫的程序 • 請在SSMSE的連線伺服器中點選[資料庫]滑鼠右鍵彈出式選單的[附加]選項 • 請按[加入]按鈕尋找欲加入資料庫的主要檔案 • 請按[確定]按鈕以進行附加作業,這樣就可以在SSMSE的畫面中看到附加近來的資料庫了
15-5 資料的匯出與匯入 • 在SQL Server 2005正式版中SSIS(SQL Server Integration Services)可以對資料庫的資料作匯入與匯出動作,但是SSMSE無整合SSIS功能,因此要資料匯出可以使用。 • bcp公用程式 • 使用Excel、Access等系統透過ODBC來取得SQL Server 的資料
15-5 資料的匯出與匯入 • Bcp的簡易使用語法如下 : • bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-t field_term][-r row_term] [-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword] [-T] [-k] [-E]
15-5 資料的匯出與匯入 • database_name:資料表或檢視所在的資料庫名稱,若未指定則為使用者的預設資料庫 • table_name|view_name :資料匯入/匯出時所使用的資料表/檢視名稱 • in | , out| , queryout | , format:指定資料流的方式 • in:資料匯入 • out:資料匯出 • queryout:查詢資料匯出,使用查詢方式的匯出就必須要指定 • format:會根據指定的選項 (-n、-c、-w、-6 或 -N) 和資料表或檢視分隔符號來建立格式檔
15-5 資料的匯出與匯入 • data_file:資料匯入/匯出時的檔案名稱 • -S server_name[ \instance_name]:指定要連接的SQL Server執行個體,如果未指定任何伺服器,則bcp 公用程式會連接本機電腦中的 SQL Server 預設執行個體 • -U login_id :指定用來連接SQL Server的登入識別碼。 • -P password:指定登入識別碼的密碼,如果未使用這個選項,則bcp 程式會提示您輸入密碼 • -T:指定 bcp 公用程式使用整合式安全性的信任連接,這樣就不必使用-U –P來輸入帳號密碼
15-5 資料的匯出與匯入 • [範例15-5.1]使用信任連接方式,將TradeDB中的所有客戶資料匯出成文字檔 • bcp TradeDB.dbo.customers out customers.txt –T –c
15-5 資料的匯出與匯入 • [範例15-5.2]使用SQL Server驗證方式,將TradeDB中含有資訊的客戶名稱資料匯出成文字檔 • bcp "select * from TradeDB.dbo.customers where cust_name like '%資訊' " queryout customers.txt –c -Usa
15-5 資料的匯出與匯入 • [範例15-5.3] 將檢視資料匯出成csv文字檔格式(就是以逗點隔開欄位的檔案格式,可由Excel直接開啟) • bcp TradeDB.dbo.order_cust out order_cust.txt –T –c –t,
15-5 資料的匯出與匯入 • 用記事本與Excel檢查範例15-5.3的輸出結果
欄位名稱 資料型態 ordernum int/PK custnum int/PK custname char(20) orderdate smalldatetime paiddate smalldatetime 15-5 資料的匯出與匯入 • [範例15-5.3]使用bcp將範例15-5.3的匯出結果再匯至SQL Server。為了資料能匯入,因此需要先建立一ordercust資料表,如下:
15-5 資料的匯出與匯入 • bcp TradeDB.dbo.ordercust in order_cust.csv –T –t,
15-5 資料的匯出與匯入 • Access 或是Excel中都可以連接到SQL Server,但必須先設定ODBC(Open DataBase Connectivity/開放資料庫連接)的DSN(Data Source Name/資料來源名稱)然後才能在Access 或是Excel中讀取 。 • 在Excel中點選主選單上的[資料][取得外部資料][新增資料庫查詢]選項 就可以看到上一步驟所設定的DSN。
15-6 本章總結 • 一備份是一資料庫的完整拷貝,如果我們失去一資料庫,可以使用備份來還原資料。 • 交易記錄檔是資料庫的異動歷史的完整記錄,它是用來向前恢復已完成的交易,並且ROLLBACK尚未完成的交易。 • 差異式資料庫備份只記錄上一次資料庫備份之後所有的資料修訂,我們只需將最後一次的差異式資料庫備份施加於目的資料庫。 • 使用bcp公用程式可以對SQL Server作資料的匯出與匯入