SQLServer · 最佳實踐 · 如何將SQL Server 2012降級到2008 R2-博客-雲棲社區-阿里雲


遷移須知

  • 使用SQLSERVER 2012的特性在SQL 2008 R2不支持,比如新的分頁方式
  • 此遷移操作手冊適用於MSSQL2012到MSSQL2008R2的遷移
  • 遷移使用微軟提供的腳本生成和導入導出工具
  • 需要在本地將MSSQL2012遷移完成,並且應用改造完成測試通過方可上RDS
  • 遷移到MSSQL2008R2 RDS通過備份還原的方式進行

遷移步驟

  • 安裝2008 R2的數據庫實例
    這個很簡單,安裝數據庫實例應該很橫輕松
  • 在新建的2008 R2上創建數據庫
CREATE DATABASE [AdventureWorks]
ON  PRIMARY 
( NAME = N'AdventureWorks2012_Data', FILENAME = N'D:\SQL_DATA\SQL2K8_04\AdventureWorks2012_Data.mdf' )
 LOG ON 
( NAME = N'AdventureWorks2012_Log', FILENAME = N'D:\SQL_DATA\SQL2K8_04\AdventureWorks2012_log.ldf' )
GO

為數據庫創建用戶並分配角色等權限信息
主要是將原來的LOGIN和用戶創建到新的實例,例如:需要注意的是2012的HASH密碼和2008 R2的HASH密碼已經不太一樣了。需要原先的密碼或者重置密碼

CREATE LOGIN [TestUser]
WITH PASSWORD = '*******'
,CHECK_POLICY=OFF
,CHECK_EXPIRATION = OFF

 

2012 上查看數據庫用戶的及角色:

USE AdventureWorks
GO
CREATE USER  [TestUser]
EXEC sp_addrolemember 'db_datareader','TestUser'
EXEC sp_addrolemember 'db_datawriter','TestUser'

將這些角色和權限復制到2008 R2上,可以通過SSMS UI或者腳本執行

  • 在2012上禁止更新任何對象的結構
    不能在表,視圖,用戶函數,存儲過程上進行任何修改動作

  • 在2012上生成架構,表,視圖,用戶函數,存儲過程,作業等腳本

    1. 選擇數據庫
      右鍵點擊“任務”,再點擊“生成腳本”

        

        設置腳本編寫選項

        

        高級屬性選擇腳本的屬性
        方框內的需要特別注意,這里外鍵一定不要選TRUE

        

        

        選擇對象
        根據自己的數據庫情況選擇哪些需要導入過去

        

        生成腳本到文件或者到查詢窗口

        

        

    • 在2008 R2執行生成的腳本
      將剛才生成的腳本在2008 R2上執行並且保證完全成功。如果有錯誤,需要查明原因並且手動創建上去,可能出現的錯誤有:
    • 表依賴某些對象不存在
    • 函數,存儲過程引用對象不存在,找出不存在的對象創建上
    • 如果對象不全需要查明原因

    • 比較對象是否一致

SELECT * FROM sys.objects WITH (NOLOCK)
WHERE is_ms_shipped=0
AND type IN ('FN','IF','TF','P','V','U')

 

主要檢查表、視圖、用戶自定義函數、存儲過程,如果有其他類型,請調整TYPE參數

    • 用戶停止業務,包括由JOB產生的業務
      讓用戶停止所有業務,同時停止SQL AGENT

    • DISABLE用戶的登錄,進一步保證業務不再使用
      DISABLE登錄,禁止用戶登錄數據庫

ALTER LOGIN TestUser DISABLE  
  • 通過數據庫導入導出工具將2012所有數據導入到2008 R2中

  • 開始 ->所有程序 ->Microsoft SQL Server 2012 ->導入和導出數據

  • 操作請按照下列圖所示:

 

這里請不要選擇視圖,只選擇表就好

    • 驗證數據庫正確性
      請COUNT一下數據量的大小,並進行對比。同時可以驗證數據的准確性

    • 為數據庫的表創建外鍵關系
      生成外鍵的方法: 設置腳本編寫選項高級:紅色框內為TRUE,其他都為FALSE

生成腳本,去掉表結構,只剩下外鍵關系的腳本,然后在MSSQL 2008 R2上運行就好了。

  • 用戶更改連接字符串后進行業務測試

回滾方案

  • 開啟原來的實例的LOGIN
  • 啟動原來的實例的SQL Agent
  • 用戶連接字符串修改到原來的訪問地址

注意事項

  • 如果遷移失敗將進行回滾
  • 如果表有主外鍵關系需要先解除外鍵關系,最后再創建,按照上述步驟就好了
  • 數據庫的排序規則要保持一致
  • 如果有表有時間戳列,表需要單獨拿出來處理,時間戳列是不需要導入的

 

 

 

 

 

 

 

 

1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM