Sql-Server

SQL Server 從 2005 年升級到 2012 年的兼容級別

  • July 3, 2018

我們在兼容模式下的 SQLServer 2012 Enterprise 中有舊數據庫: 90 - SQL Server 2005 。數據庫兼容模式從90改為110-SQL Server 2012會有什麼後果?許多遺留應用程序使用數據庫。QA 自動化單元和集成測試沒有任何問題,但嘗試查看可能失去的潛在項目。

我了解向後兼容性存在問題,將數據庫從 110 更改為 90,例如,任何應用較新語法或 tempdb 的查詢都會失敗。

但是從 90 到 110 會發生什麼樣的問題?哪些物品可以破壞?

最好閱讀 Microsoft 的這些文章:

  • “兼容性級別 90 和級別 100 之間的差異” 在這裡
  • “較低兼容性級別與級別 110 和 120 之間的差異”在這裡

您可能遇到的最可能的問題是:

從兼容性級別 90 到 100:

  • 在創建多語句表值函式時,將採用 QUOTED IDENTIFIER 會話設置。
  • 目前語言設置用於評估分區函式中的 datetime 和 smalldatetime 文字。
  • 在 INSERT 和 SELECT INTO 語句中不允許使用 FOR BROWSE 子句。

從兼容性級別 100 到 110:

  • 遞歸公用表表達式 (CTE) 查詢中不允許使用 PIVOT。返回一個錯誤。
  • 在兼容級別 110 下,對 time 和 datetime2 數據類型的 CAST 和 CONVERT 操作的預設樣式始終為 121。如果您的查詢依賴於舊行為,請使用低於 110 的兼容級別,或在受影響的查詢中明確指定 0 樣式. 將數據庫升級到兼容級別 110 不會更改已儲存到磁碟的使用者數據。您必鬚根據需要手動更正此數據。例如,如果您使用 SELECT INTO 從包含計算列的源創建表

引用自:https://dba.stackexchange.com/questions/210646