27
1 資資資資資資資資資 資資資資資資資資資 (Backup (Backup & Restore) & Restore) 第第第第 第第第第

資料庫的備份與還原 (Backup & Restore)

Embed Size (px)

DESCRIPTION

第十五章. 資料庫的備份與還原 (Backup & Restore). Chapter 15 Outline. 15-1 備份與還原簡介 15-2 完整的資料庫備份與還原 15-3 差異資料庫備份與還原 15-4 資料庫卸離與附加 15-5 資料的匯出與匯入 15-6 本章總結. 15-1 備份與還原簡介. SQL Server 的備份 (Backup) 與還原 (Restore) 功能為提供資料完整保存的保障,它們可以保護那些儲存於伺服器上的重要資料。當有異常狀況發生時,備份與還原功能可以完全的將資料庫回復至原來的狀態。以下是需要備份的理由: - PowerPoint PPT Presentation

Citation preview

Page 1: 資料庫的備份與還原  (Backup & Restore)

11

資料庫的備份與還原 資料庫的備份與還原 (B(Backup & Restore)ackup & Restore)

第十五章第十五章

Page 2: 資料庫的備份與還原  (Backup & Restore)

22

Chapter 15 OutlineChapter 15 Outline

15-1 15-1 備份與還原簡介 備份與還原簡介 15-2 15-2 完整的資料庫備份與還原完整的資料庫備份與還原15-3 15-3 差異資料庫備份與還原 差異資料庫備份與還原 15-4 15-4 資料庫卸離與附加 資料庫卸離與附加 15-5 15-5 資料的匯出與匯入 資料的匯出與匯入 15-6 15-6 本章總結本章總結

Page 3: 資料庫的備份與還原  (Backup & Restore)

33

15-1 15-1 備份與還原簡介備份與還原簡介SQL ServerSQL Server 的備份的備份 (Backup)(Backup) 與還原與還原 (Resto(Restore)re) 功能為提供資料完整保存的保障,它們功能為提供資料完整保存的保障,它們可以保護那些儲存於伺服器上的重要資料。可以保護那些儲存於伺服器上的重要資料。當有異常狀況發生時,備份與還原功能可以當有異常狀況發生時,備份與還原功能可以完全的將資料庫回復至原來的狀態。以下是完全的將資料庫回復至原來的狀態。以下是需要備份的理由:需要備份的理由: 裝置故障:如果儲存資料庫的磁碟機故障,而裝置故障:如果儲存資料庫的磁碟機故障,而且又不能夠由早先的備份還原資料庫,那我們且又不能夠由早先的備份還原資料庫,那我們將失去所有的資料。 將失去所有的資料。

Page 4: 資料庫的備份與還原  (Backup & Restore)

44

15-1 15-1 備份與還原簡介備份與還原簡介 使用者疏失:如果一使用者或是一應用程式在使用者疏失:如果一使用者或是一應用程式在有意或無意中錯誤的修改了大量的資料。 有意或無意中錯誤的修改了大量的資料。

永久的失去一伺服器:如果一伺服器永久性的永久的失去一伺服器:如果一伺服器永久性的無法正常運作,或是硬體需要升級。此時也許無法正常運作,或是硬體需要升級。此時也許會去準備另一伺服器,並且將備份還原至新伺會去準備另一伺服器,並且將備份還原至新伺服器上,使系統能夠迅速的恢復正常運作。 服器上,使系統能夠迅速的恢復正常運作。

天然災害:例如發生水災、火災或是地震等天天然災害:例如發生水災、火災或是地震等天然災害導致資料庫伺服器毀損。 然災害導致資料庫伺服器毀損。

Page 5: 資料庫的備份與還原  (Backup & Restore)

55

15-1 15-1 備份與還原簡介備份與還原簡介SQL ServerSQL Server 支援的備份資料方式: 支援的備份資料方式: 資料庫備份:完整備份整個資料庫的內容,資資料庫備份:完整備份整個資料庫的內容,資料庫備份很容易使用,建議在資料庫大小許可料庫備份很容易使用,建議在資料庫大小許可的範圍內儘量採用這種方式。 的範圍內儘量採用這種方式。

部分備份:部分備份與完整資料庫備份類似,部分備份:部分備份與完整資料庫備份類似,但是部分備份不包含所有的檔案群組。部分備但是部分備份不包含所有的檔案群組。部分備份只會備份主要檔案群組、每個讀取份只會備份主要檔案群組、每個讀取 // 寫入檔寫入檔案群組以及使用者指定之唯讀檔案。 案群組以及使用者指定之唯讀檔案。

檔案備份:資料庫中的檔案也可個別備份與還檔案備份:資料庫中的檔案也可個別備份與還原 。原 。

交易記錄檔備份:除了資料庫的資料外,還可交易記錄檔備份:除了資料庫的資料外,還可以只備份一資料庫的交易記錄檔 以只備份一資料庫的交易記錄檔

Page 6: 資料庫的備份與還原  (Backup & Restore)

66

15-1 15-1 備份與還原簡介備份與還原簡介SQL ServerSQL Server 對於資料庫的資料備份方面有對於資料庫的資料備份方面有三種方式可以選擇,而在這三種方式上也三種方式可以選擇,而在這三種方式上也都支援完整備份與差異備份策略都支援完整備份與差異備份策略 `.`. 完整備份:拷貝完整的指定資料,需要較多的完整備份:拷貝完整的指定資料,需要較多的備份時間與儲存空間,但是卻最容易還原。 備份時間與儲存空間,但是卻最容易還原。

差異備份:備份上一次完整備份到目前資料有差異備份:備份上一次完整備份到目前資料有所差異資料,由於只備份差異部分,因此需要所差異資料,由於只備份差異部分,因此需要的備份時間與儲存空間就比較少。 的備份時間與儲存空間就比較少。

Page 7: 資料庫的備份與還原  (Backup & Restore)

77

15-2 15-2 完整的資料庫備份與還原完整的資料庫備份與還原使用使用 SSMSESSMSE 備份備份 TradeDBTradeDB 資料庫資料庫 請在請在 SSMSESSMSE 中展開中展開 [[ 資料庫資料庫 ] ] 項目項目點選點選 [Trade[Trade

DB]DB] 項目滑鼠右鍵彈出式選單的項目滑鼠右鍵彈出式選單的 [[ 工作工作 ]][[ 備份備份 ]]選項選項

在在 [[ 資料庫資料庫 ]] 資料欄中選擇預備份之資料庫,例如資料欄中選擇預備份之資料庫,例如[TradeDB] [TradeDB]

請在請在 [[ 備份類型備份類型 ]] 下選擇下選擇 [[ 完整完整 ] ] 請在請在 [[ 名稱名稱 ]] 欄位中輸入該次備份組的名稱,該名欄位中輸入該次備份組的名稱,該名稱會在還原時出現,為該備份組織識別 稱會在還原時出現,為該備份組織識別

請確定請確定 [[ 目的地目的地 ]] 並為該檔案命名並為該檔案命名

Page 8: 資料庫的備份與還原  (Backup & Restore)

88

15-2 15-2 完整的資料庫備份與還原完整的資料庫備份與還原使用使用 SSMSESSMSE 還原還原 TradeDBTradeDB 資料庫資料庫 請在請在 SSMSESSMSE 中點選中點選 [[ 資料庫資料庫 ]] 項目滑鼠右鍵彈出項目滑鼠右鍵彈出式選單的式選單的 [[ 還原資料庫還原資料庫 ]] 選項 選項

請在請在 [[ 一般一般 ]]頁面下的頁面下的 [[ 目的地資料庫目的地資料庫 ]] 欄位中輸欄位中輸入資料庫名稱入資料庫名稱 TradeDB(TradeDB( 在此處也可以輸入不是在此處也可以輸入不是原來資料庫的名稱原來資料庫的名稱 ) )

請點選請點選 [[ 來源裝置來源裝置 ]] ,並按,並按 […][…]按鈕尋找備份檔按鈕尋找備份檔案 案

選擇備份媒體之後請按選擇備份媒體之後請按 [[加入加入 ]]按鈕 以加入備份按鈕 以加入備份檔案檔案

Page 9: 資料庫的備份與還原  (Backup & Restore)

99

15-3 15-3 差異資料庫備份與還原 差異資料庫備份與還原 完整資料庫的備份與還原是在使用上是最完整資料庫的備份與還原是在使用上是最簡單的,如果資料庫的大小允許則最建議簡單的,如果資料庫的大小允許則最建議使用。使用。差異備份賴以為基礎的資料庫、部分或檔差異備份賴以為基礎的資料庫、部分或檔案備份就稱之為「案備份就稱之為「差異基底差異基底」。」。差異備份差異備份只會記錄最後一次差異基底後變更過的資只會記錄最後一次差異基底後變更過的資料料,因此差異備份比差異基底更小且更快,,因此差異備份比差異基底更小且更快,有助於進行經常備份,從而降低遺失資料有助於進行經常備份,從而降低遺失資料的風險。 的風險。

Page 10: 資料庫的備份與還原  (Backup & Restore)

1010

15-3 15-3 差異資料庫備份與還原差異資料庫備份與還原每一差異資料庫備份只記錄上一次資料庫每一差異資料庫備份只記錄上一次資料庫完整備份完整備份 (( 不是上一次差異資料庫備份不是上一次差異資料庫備份 ))之後所有的資料修改。之後所有的資料修改。如果於一如果於一資料庫完整備份資料庫完整備份之後製作了之後製作了一系一系列的差異資料庫列的差異資料庫備份,則當資料庫毀損之備份,則當資料庫毀損之後,並不需要使用到每一個差異資料庫備後,並不需要使用到每一個差異資料庫備份,而只需將份,而只需將最後一次的差異資料庫備份最後一次的差異資料庫備份施加於施加於完整備份回復的資料庫完整備份回復的資料庫即可 即可

Page 11: 資料庫的備份與還原  (Backup & Restore)

1111

15-3 15-3 差異資料庫備份與還原差異資料庫備份與還原例如:下表為某家公司資料庫備份的排程例如:下表為某家公司資料庫備份的排程日期 / 時間 完整資料庫備份 差異資料庫備份

0:00(星期三 ) ▲  

6:00(星期三 )   ▲

12:00(星期三 )   ▲

18:00(星期三 )   ▲

0:00(星期四 ) ▲  

6:00(星期四 )   ▲

12:00(星期四 )   ▲

Page 12: 資料庫的備份與還原  (Backup & Restore)

1212

15-3 15-3 差異資料庫備份與還原差異資料庫備份與還原在星期四在星期四 14:0014:00 資料庫毀損,此時則可依下資料庫毀損,此時則可依下列動作還原列動作還原 先還原星期四先還原星期四 0:000:00 所製作的資料庫完整備份 所製作的資料庫完整備份 將星期四中午將星期四中午 12:0012:00 製作的差異資料庫備份施加製作的差異資料庫備份施加於資料庫 於資料庫

以上兩項動作只能將資料庫回復至星期四中以上兩項動作只能將資料庫回復至星期四中午午 12:0012:00 時的資料狀態,中午之後的資料就時的資料狀態,中午之後的資料就算是遺失了,因此必須人工重新建立或執行算是遺失了,因此必須人工重新建立或執行相關的程式。 相關的程式。

Page 13: 資料庫的備份與還原  (Backup & Restore)

1313

15-4 15-4 資料庫卸離與附加資料庫卸離與附加除了使用備份和還原的方式之外,還可以除了使用備份和還原的方式之外,還可以將資料庫的資料和交易記錄檔卸離,然後將資料庫的資料和交易記錄檔卸離,然後再重新附加至相同或不同的再重新附加至相同或不同的 SQL ServerSQL Server 執執行個體上,使用卸離和附加資料庫也相當行個體上,使用卸離和附加資料庫也相當方便。 方便。 何時需要卸離資料庫,就在有某一個資料何時需要卸離資料庫,就在有某一個資料庫暫時不用的時候。因為庫暫時不用的時候。因為 SQL ServerSQL Server 管理管理資料庫需要耗費一些系統資源,也因此請資料庫需要耗費一些系統資源,也因此請不要將沒有使用的資料庫附加到伺服器上 不要將沒有使用的資料庫附加到伺服器上

Page 14: 資料庫的備份與還原  (Backup & Restore)

1414

15-4 15-4 資料庫卸離與附加資料庫卸離與附加卸離資料庫只要在卸離資料庫只要在 SSMSESSMSE 中點選欲卸離資中點選欲卸離資料庫滑鼠右鍵彈出式選單的料庫滑鼠右鍵彈出式選單的 [[ 工作工作 ]] 選項選項點選點選 [[ 卸離卸離 ]] 選項。選項。

由於目前資料庫有一個使用者連線,因此無法卸離。如果要強制卸離則請勾選 [ 卸除連接 ]選項

Page 15: 資料庫的備份與還原  (Backup & Restore)

1515

15-4 15-4 資料庫卸離與附加資料庫卸離與附加附加資料庫的程序附加資料庫的程序 請在請在 SSMSESSMSE的連線伺服器中點選的連線伺服器中點選 [[資料庫資料庫 ]]滑滑鼠右鍵彈出式選單的鼠右鍵彈出式選單的 [[ 附加附加 ]]選項 選項

請按請按 [[ 加入加入 ]] 按鈕尋找欲加入資料庫的主要檔按鈕尋找欲加入資料庫的主要檔案 案

請按請按 [[ 確定確定 ]] 按鈕以進行附加作業,這樣就可按鈕以進行附加作業,這樣就可以在以在 SSMSESSMSE的畫面中看到附加近來的資料庫了的畫面中看到附加近來的資料庫了

Page 16: 資料庫的備份與還原  (Backup & Restore)

1616

15-5 15-5 資料的匯出與匯入 資料的匯出與匯入 在在 SQL Server 2005SQL Server 2005 正式版中正式版中 SSIS(SQL SerSSIS(SQL Server Integration Services)ver Integration Services) 可以對資料庫的資可以對資料庫的資料作匯入與匯出動作,但是料作匯入與匯出動作,但是 SSMSESSMSE 無整合無整合SSISSSIS 功能,因此要資料匯出可以使用。 功能,因此要資料匯出可以使用。 bcpbcp公用程式公用程式 使用使用 ExcelExcel 、、 AccessAccess 等系統透過等系統透過 ODBCODBC 來取得來取得

SQL Server SQL Server 的資料 的資料

Page 17: 資料庫的備份與還原  (Backup & Restore)

1717

15-5 15-5 資料的匯出與匯入資料的匯出與匯入BcpBcp 的簡易使用語法如下 :的簡易使用語法如下 : bcp {[[bcp {[[database_name.database_name.][owner].]{][owner].]{table_name table_name | vie| vie

w_name} | "query"}    {w_name} | "query"}    {in | out | queryout | in | out | queryout | format} format} data_filedata_file    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 8    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-t field_term][-r row_term]     [0)] [-t field_term][-r row_term]     [-Sserver_name-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword[\instance_name]] [-Ulogin_id] [-Ppassword]    [-]    [-T] [-k] [-E] T] [-k] [-E]

Page 18: 資料庫的備份與還原  (Backup & Restore)

1818

15-5 15-5 資料的匯出與匯入資料的匯出與匯入 database_namedatabase_name :資料表或檢視所在的資料庫名:資料表或檢視所在的資料庫名稱,若未指定則為使用者的預設資料庫 稱,若未指定則為使用者的預設資料庫

table_name|view_name table_name|view_name :資料匯入:資料匯入 //匯出時所使匯出時所使用的資料表用的資料表 //檢視名稱 檢視名稱

in | , out| , queryout | , formatin | , out| , queryout | , format :指定資料流的方式 :指定資料流的方式 • inin :資料匯入 :資料匯入 • outout :資料匯出 :資料匯出 • queryoutqueryout :查詢資料匯出,使用查詢方式的匯出就必:查詢資料匯出,使用查詢方式的匯出就必須要指定 須要指定

• formatformat :會根據指定的選項 :會根據指定的選項 (-n(-n 、、 -c-c 、、 -w-w 、、 -6 -6 或或 -N) -N) 和資料表或檢視分隔符號來建立格式檔 和資料表或檢視分隔符號來建立格式檔

Page 19: 資料庫的備份與還原  (Backup & Restore)

1919

15-5 15-5 資料的匯出與匯入資料的匯出與匯入 data_filedata_file :資料匯入:資料匯入 //匯出時的檔案名稱 匯出時的檔案名稱 -S server_name[ \instance_name]-S server_name[ \instance_name] :指定要連接:指定要連接的的 SQL ServerSQL Server 執行個體,如果未指定任何伺服執行個體,如果未指定任何伺服器,則器,則 bcp bcp 公用程式會連接本機電腦中的 公用程式會連接本機電腦中的 SQSQL Server L Server 預設執行個體 預設執行個體

-U login_id -U login_id :指定用來連接:指定用來連接 SQL ServerSQL Server 的登入的登入識別碼。 識別碼。

-P password-P password :指定登入識別碼的密碼,如果未:指定登入識別碼的密碼,如果未使用這個選項,則使用這個選項,則 bcp bcp 程式會提示您輸入密碼 程式會提示您輸入密碼

-T-T :指定 :指定 bcp bcp 公用程式使用整合式安全性的公用程式使用整合式安全性的信任連接,這樣就不必使用信任連接,這樣就不必使用 -U –P-U –P 來輸入帳號來輸入帳號密碼 密碼

Page 20: 資料庫的備份與還原  (Backup & Restore)

2020

15-5 15-5 資料的匯出與匯入資料的匯出與匯入[[ 範例範例 15-5.1]15-5.1] 使用信任連接方式,將使用信任連接方式,將 TradeDTradeDBB 中的所有客戶資料匯出成文字檔中的所有客戶資料匯出成文字檔 bcp TradeDB.dbo.customers out customers.txt –T –c bcp TradeDB.dbo.customers out customers.txt –T –c

Page 21: 資料庫的備份與還原  (Backup & Restore)

2121

15-5 15-5 資料的匯出與匯入資料的匯出與匯入[[ 範例範例 15-5.2]15-5.2] 使用使用 SQL ServerSQL Server 驗證方式,將驗證方式,將TradeDBTradeDB 中含有資訊的客戶名稱資料匯出成中含有資訊的客戶名稱資料匯出成文字檔 文字檔 bcp "select * from TradeDB.dbo.customers where cbcp "select * from TradeDB.dbo.customers where c

ust_name like '%ust_name like '% 資訊資訊 ' " ' " queryout customers.txt –c -Usa queryout customers.txt –c -Usa

Page 22: 資料庫的備份與還原  (Backup & Restore)

2222

15-5 15-5 資料的匯出與匯入資料的匯出與匯入[[ 範例範例 15-5.3] 15-5.3] 將檢視資料匯出成將檢視資料匯出成 csvcsv 文字文字檔格式檔格式 (( 就是以逗點隔開欄位的檔案格式,就是以逗點隔開欄位的檔案格式,可由可由 ExcelExcel 直接開啟直接開啟 ) ) bcp TradeDB.dbo.order_cust out order_cust.txt –T bcp TradeDB.dbo.order_cust out order_cust.txt –T

–c –t, –c –t,

Page 23: 資料庫的備份與還原  (Backup & Restore)

2323

15-5 15-5 資料的匯出與匯入資料的匯出與匯入用記事本與用記事本與 ExcelExcel 檢查範例檢查範例 15-5.315-5.3 的輸出結的輸出結果果

Page 24: 資料庫的備份與還原  (Backup & Restore)

2424

15-5 15-5 資料的匯出與匯入資料的匯出與匯入[[ 範例範例 15-5.3]15-5.3] 使用使用 bcpbcp 將範例將範例 15-5.315-5.3 的匯的匯出結果再匯至出結果再匯至 SQL ServerSQL Server 。為了資料能匯。為了資料能匯入,因此需要先建立一入,因此需要先建立一 ordercustordercust 資料表,資料表,如下:如下: 欄位名稱 資料型態

ordernum int/PK

custnum int/PK

custname char(20)

orderdate smalldatetime

paiddate smalldatetime

Page 25: 資料庫的備份與還原  (Backup & Restore)

2525

15-5 15-5 資料的匯出與匯入資料的匯出與匯入 bcp TradeDB.dbo.ordercust in order_cust.csv –T –t,bcp TradeDB.dbo.ordercust in order_cust.csv –T –t,

Page 26: 資料庫的備份與還原  (Backup & Restore)

2626

15-5 15-5 資料的匯出與匯入資料的匯出與匯入Access Access 或是或是 ExcelExcel 中都可以連接到中都可以連接到 SQL SerSQL Serverver ,但必須先設定,但必須先設定 ODBC(Open DataBase ODBC(Open DataBase Connectivity/Connectivity/ 開放資料庫連接開放資料庫連接 )) 的的 DSN(DatDSN(Data Source Name/a Source Name/ 資料來源名稱資料來源名稱 )) 然後才能在然後才能在Access Access 或是或是 ExcelExcel 中讀取 。中讀取 。在在 ExcelExcel 中點選主選單上的中點選主選單上的 [[ 資料資料 ]][[ 取得取得外部資料外部資料 ]][[ 新增資料庫查詢新增資料庫查詢 ]] 選項 就可選項 就可以看到上一步驟所設定的以看到上一步驟所設定的 DSNDSN 。。

Page 27: 資料庫的備份與還原  (Backup & Restore)

2727

15-6 15-6 本章總結本章總結一備份是一資料庫的完整拷貝,如果我們失一備份是一資料庫的完整拷貝,如果我們失去一資料庫,可以使用備份來還原資料。 去一資料庫,可以使用備份來還原資料。 交易記錄檔是資料庫的異動歷史的完整記錄,交易記錄檔是資料庫的異動歷史的完整記錄,它是用來向前恢復已完成的交易,並且它是用來向前恢復已完成的交易,並且 ROLROLLBACKLBACK 尚未完成的交易。 尚未完成的交易。 差異式資料庫備份只記錄上一次資料庫備份差異式資料庫備份只記錄上一次資料庫備份之後所有的資料修訂,我們只需將最後一次之後所有的資料修訂,我們只需將最後一次的差異式資料庫備份施加於目的資料庫。 的差異式資料庫備份施加於目的資料庫。 使用使用 bcpbcp 公用程式可以對公用程式可以對 SQL ServerSQL Server 作資料作資料的匯出與匯入 的匯出與匯入