close

進行完成了一連串的升級檢查後, 再來少不了的就是進行升級了. 在此Colin假設應用程式方的功課都做完了, 就可以開始處理資料庫的移轉了.

資料庫升級移轉的項目, 不外乎下列幾個大項目
* SQL Server伺服器層級的設定
* Database移轉
* Logins/Permission移轉
* Agent objects移轉
* SSIS/Maintenance Plan移轉

針對SQL Server伺服器層級的移轉, 大多是選擇是否要開啟cmdshell、AgentXP、...等. 部份設定, 如Max Server Memory, 如果機器等級不同了, 那麼給予的設定自然也會不相同. 在此我們暫先不討論此設定, 因為多數的configuration都會配合硬體/效能等規劃而定.

而對於資料庫移轉, 微軟早期提供了一篇還不錯的文章, 裡頭寫到了很多key point, 雖然是針對SQL Server 2000/2005年代的一篇Knowledge base文件, 然而卻有著一整個升級SQL Server所需要注意的事項.

如何在執行 SQL Server 的電腦之間移動資料庫
http://support.microsoft.com/kb/314546/zh-tw


升級資料庫的過程中, 過往都比較建議使用Backup/Restore的方式來進行, 如此還可以順便多做一個備份以供失敗時回復. 同時Backup的動作又能壓縮檔案空間, 若是搭配新功能Backup With Compress的話, 更能省去不少搬檔的時間. 而使用detach/attach的直接搬檔方式, 如果資料庫初始值設定過大的檔案, 搬移可是需要更多的時間.

只是.... Colin更建議的搬移方式是透過 "複製資料庫" 的功能來進行~~ 為什麼呢? 這項功能可以在搬移資料庫的過程中, 同時將有關的User Logins、Job.... 等物件一同搬移, 甚至還能線上作業, 這在進行測試環境時可是很好用的, 可以省掉下線時間或是備份時間. 以下就來看一下複製資料庫 (CDW) 的操作方式吧~~

此例將會使用下列資料庫版本來演示: SQL Server 2005 (AdventureWorks)、SQL Server 2012

STEP 01: 首先, 我們需要一個SSMS for SQL Server 2012資料庫工具程式 (因為要連SQL Server 2012), 不一定要在SQL Server上執行, 也可以在Client Site進行.
連線到SQL Server 2012與SQL Server 2005的Instence後, 就可以展開要升級的資料庫, 針對本例要操作的AdventureWorks點選右鍵 -> 選擇 工作 -> 複製資料庫.
20121207_01  

STEP 02: 出現歡迎畫面, 這個就直接下一步
20121207_02  

STEP 03: 微軟的很多精靈都像在脫褲子放屁.... 前面不已經都連線了, 又再來設定一次..... 來源伺服器以本例是指向SQL Server 2005 Instance的機器上. 設好後就可以下一步.
20121207_03  

STEP 04: 再來是指向目的地伺服器. 以本例指向SQL Server 2012 Instance的伺服器. 指定好後就可以下一步.
20121207_04

STEP 05: 選擇要執行的方式.
* 使用卸離與附加方法: 這就如同進行detach/attach的操作動作. 其間將會讓資料庫離線. 如果有安排停機時間 (一般升級也應該要有停機時間), 那麼可以讓資料庫下線做此操作.
                                後續畫面可能會有所不同. 差異是此動作會需要多指定檔案放置的位置, 可以用UNC path.
* 使用SQL管理物件方法: 像是操作Maintenance Plan的方式, 會建立package, 然後去執行. 這個動作就可以讓資料庫仍在線上操作. 適用在建立測試環境或是資料庫停止操作下搬移.
                                   若是production仍在線上進行升級, 可能會有資料遺失的風險. 需要事後補資料.
本例我們使用 "使用SQL管理物件方法", 然後下一步.
20121207_05  

STEP 06: 再一次脫褲子放屁..... 不已經對AdventureWorks設定了?? 不過多此選擇,就表示我們可以同時選好多個資料庫一起做 :)
本例我們仍然先只選擇AdventureWorks. 有興趣的人可以自己多勾幾個. 設定好就下一步.
20121207_06  

STEP 07: 這個是設定目的地的資料庫名稱與放的位置, 看起來是不是和建立新資料庫很像呢? 設定好就可以下一步.
20121207_07  

STEP 08: 這個步驟很重要, 也是Colin很喜歡的一個功能. 這裡可以選擇連同資料庫要一起搬移的物件. 注意, 會搬移與此資料庫有關的項目而已, 而不是該物件的全部.
例如Colin建立二個Logins, 分別是Colin與Amber. 然後Colin指定可以存取AdventureWorks. Amber不屬於AdventureWorks的使用者. 那麼這個例子最後只有Colin會被搬過去.
20121207_08  

STEP 09: 這個步驟是把剛才的設定做成一個封裝(SSIS Package), 設定好就下一步.
20121207_09  

STEP 10: 一般來說, 立即執行比較合理. Colin想很少人會在下班沒人顧時, 去升級資料庫吧.......
20121207_10 

STEP 11: 檢查一下相關設定是否正確, 一切OK就可以進行, 點完成吧~~
20121207_11  

STEP 12: 升級完成後會顯示是否成功. 一切都成功就表示升級完成.
20121207_12  

STEP 13: 演示一下使用者一起被帶過來的狀況. 不過比較特別的是, Logins帶過來會先設定為停用, 必須要手動去設定為啟用???
20121207_13  

 

以上, 就是CDW的搬移資料庫方式. 至於Backup/Restore, 或是Detach/Attach的方式, 就請各位看倌自行參考前述的技術文件囉~~

完成了資料庫的升級動作後, Colin多半會加入下列一些動作, 讓資料庫進行重新整理, 畢竟不同環境不同版本裡, 會有什麼不一樣的東西....... 應該只有RD才知道吧~~

* DBCC CHECKDB
* DBCC DBREINDEX / DBCC INDEXDEFREG
* DBCC UPDATEUSAGE
* DBCC SHRINKDATABASE / DBCC SHRINKFILE

當然, 如果資料庫有進行異地備援 (Database Mirroring / Log Shipping / Replication....), 都要重新建立. 另外有使用SQL Mail的也別忘了要重建的.

arrow
arrow
    全站熱搜

    Colin (紫鴛) 發表在 痞客邦 留言(0) 人氣()