title: sqlserver · 最佳實踐 · 如何将sql server 2012降級到2008 r2
使用sqlserver 2012的特性在sql 2008 r2不支援,比如新的分頁方式
此遷移操作手冊适用于mssql2012到mssql2008r2的遷移
遷移使用微軟提供的腳本生成和導入導出工具
需要在本地将mssql2012遷移完成,并且應用改造完成測試通過方可上rds
遷移到mssql2008r2 rds通過備份還原的方式進行
安裝2008 r2的資料庫執行個體
這個很簡單,安裝資料庫執行個體應該很橫輕松
在建立的2008 r2上建立資料庫
為資料庫建立使用者并配置設定角色等權限資訊
主要是将原來的login和使用者建立到新的執行個體,例如:需要注意的是2012的hash密碼和2008 r2的hash密碼已經不太一樣了。需要原先的密碼或者重置密碼
2012 上檢視資料庫使用者的及角色:
将這些角色和權限複制到2008 r2上,可以通過ssms ui或者腳本執行
在2012上禁止更新任何對象的結構
不能在表,視圖,使用者函數,存儲過程上進行任何修改動作
在2012上生成架構,表,視圖,使用者函數,存儲過程,作業等腳本
選擇資料庫
右鍵點選“任務”,再點選“生成腳本”
設定腳本編寫選項
進階屬性選擇腳本的屬性
方框内的需要特别注意,這裡外鍵一定不要選true
選擇對象
根據自己的資料庫情況選擇哪些需要導入過去
生成腳本到檔案或者到查詢視窗
生成job腳本
在2008 r2執行生成的腳本
将剛才生成的腳本在2008 r2上執行并且保證完全成功。如果有錯誤,需要查明原因并且手動建立上去,可能出現的錯誤有:
表依賴某些對象不存在
函數,存儲過程引用對象不存在,找出不存在的對象建立上
如果對象不全需要查明原因
比較對象是否一緻
主要檢查表、視圖、使用者自定義函數、存儲過程,如果有其他類型,請調整type參數
使用者停止業務,包括由job産生的業務
讓使用者停止所有業務,同時停止sql agent
disable使用者的登入,進一步保證業務不再使用
disable登入,禁止使用者登入資料庫
通過資料庫導入導出工具将2012所有資料導入到2008 r2中
開始 ->所有程式 ->microsoft sql server 2012 ->導入和導出資料
操作請按照下列圖所示:
這裡請不要選擇視圖,隻選擇表就好
驗證資料庫正确性
請count一下資料量的大小,并進行對比。同時可以驗證資料的準确性
為資料庫的表建立外鍵關系
生成外鍵的方法: 設定腳本編寫選項進階:紅色框内為true,其他都為false
生成腳本,去掉表結構,隻剩下外鍵關系的腳本,然後在mssql 2008 r2上運作就好了。
使用者更改連接配接字元串後進行業務測試
開啟原來的執行個體的login
啟動原來的執行個體的sql agent
使用者連接配接字元串修改到原來的通路位址
如果遷移失敗将進行復原
如果表有主外鍵關系需要先解除外鍵關系,最後再建立,按照上述步驟就好了
資料庫的排序規則要保持一緻
如果有表有時間戳列,表需要單獨拿出來處理,時間戳列是不需要導入的