我們的生產 SQL Server 運行版本為 2014 (12.0.6433.1),我們的開發 SQL Server 運行版本為 2019 (15.0.4033.1)。
開發資料庫設定為兼容級別 120 以模擬生產。針對開發資料庫開發的腳本在生產中失敗,因為該語法僅在 SQL Server 2016 中引入。
下面的示例在 SSMS (18.5) 中針對兼容級別為 120 的開發資料庫執行,盡管它在版本中引入了 SQL Server 2016。
CREATE TABLE [dbo].[Compatability120_TEST] (ID INT)
GO
DROP TABLE IF EXISTS [dbo].[Compatability120_TEST]
GO
設定兼容性級別是否應該阻止它在開發中作業?
uj5u.com熱心網友回復:
不。兼容性級別的目的不是提供對舊版本的 100% 模擬。沒有以前的行為DROP TABLE IF EXISTS需要保留向后兼容性,因此這是允許的。這通常很有用,因為它允許您在新代碼中使用新語法。似乎您需要一個配置為 prod 的測驗預生產環境。
如果您想要正確的版本檢查,請使用資料庫專案。將目標版本設定為 2016 將檢查那里不支持的語法(并且構建專案將生成僅使用 2016 語法的腳本——除非存在一些錯誤)。如果您需要更可靠的測驗,您還可以使用正確版本的 LocalDB 安裝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/341118.html
