Sql-Server

將 SQL Server 2005 升級到 2016

  • November 19, 2018

我需要擺脫我們的舊伺服器,但是其中一個包括目前使用 SQL Server 2005 的數據庫伺服器。

我們有一台執行 2016 年的新伺服器,所以我想知道升級的最佳方式。根據我的發現,理想情況下,我們需要 2008 年作為過渡步驟。但是,由於我們沒有 2008 並且成本更高,因此我一直在研究進行 2005 備份然後進行 2016 恢復的可能性。

我已經用一個非常簡單的數據庫對此進行了測試,它似乎可以工作。但是我讀過我應該將兼容性級別從 100(以前是 90)更改為 130。我的問題是,有必要嗎?畢竟這些舊數據庫中的一些是舊的遺留數據庫,只需要很少的改動。是不是真的值得嗎?

所以我將無法使用花哨的新方法來做事,但這些都是舊的,這有關係嗎?畢竟它不像是需要的,否則我們不會創建這些數據庫。我還沒有使用更複雜的數據庫進行測試,但想確保我走在正確的道路上。

由於您正在遷移到新伺服器,因此您無需將 SQL Server 2008 加入其中。

正如 SQL Server 專家Paul Randal所說,您可以從任何版本 2005+ 升級到任何其他版本。保羅說:

有一個長期存在的神話,即您不能將數據庫升級到比兩個新版本更高的版本。

這不是真的。

您可以從 SQL Server 2005(或更高版本)備份+恢復(最安全的方式)或分離+附加(不是安全的方式)到任何其他較新版本。您只是無法從 SQL Server 2005 就地升級到最新版本。

至於更改兼容性級別,我建議幾週內不要更改,讓升級塵埃落定。在您確信升級後一切正常後,為什麼不將兼容性級別提高到最大並監控性能。您甚至可能會看到性能有所提高。但是,從 120 (SQL Server 2014) 及以上的兼容性級別開始使用新的基數估計器,這可能會帶來一些性能問題。如果需要,您可以通過OPTION (QUERYTRACEON 2312)在選定查詢上使用來更有選擇性地測試新的基數估計器。如果出現問題,您可以隨時降低級別。在sql server 2014 基數估計問題上做一些網際網路搜尋熟悉可能的問題。

在將來的某個時候,當您升級到 SQL Server 的更高版本時,您最終不得不提高兼容性級別。

最後,查看升級 SQL Server以獲取升級 SQL Server 時要考慮的項目清單。

引用ALTER DATABASE (Transact-SQL) 兼容級別

從應用程序的角度來看,目標仍然應該是在某個時間點升級到最新的兼容性級別,以便繼承一些新功能,以及在查詢優化器空間中所做的性能改進,但這樣做是在一種受控方式。在由相關兼容性級別設置控制的行為中,使用較低的兼容級別作為更安全的遷移輔助來解決版本差異。有關更多詳細資訊,包括升級數據庫兼容性級別的推薦工作流程,請參閱升級數據庫兼容性級別的最佳實踐

您需要將 DB 兼容級別更改為至少 100,因為在 SQL Server 2016 上,支持的最低 DB 兼容級別為 100。

請參閱:https ://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-2017

備份還原就可以了。

我有詳細的分步遷移前和遷移後步驟,可以幫助您。https://dba.stackexchange.com/a/50315/8783

測試遷移過程,因為會有一些重大更改。

此外,在 2014 年,支持 90 的 DB 兼容性級別。如果您無法更改數據庫兼容性級別,那麼這就是您想要探索的內容。

從 PASS 峰會上,我了解到應用程序的認證應該基於兼容性級別,而不是 SQL Server 的版本。

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