將數據從 SQL Server 2005 遷移到 2016
我是管理 SQL Server 的新手,但是我對 SQL 語言和製作 SSIS 包很滿意。
我想將數據從 SQL Server 2005 遷移到 2016。
我的問題是我是否需要擔心系統數據庫和其他對象,例如索引、儲存過程、視圖、安全性和權限。登錄或者我可以只遷移數據。
在這種情況下,這將是推薦的程序。
Max 給出了一個不錯的答案,一旦我完成了這個替代視圖的輸入,我會投票贊成。
我不喜歡在進行升級遷移時恢復系統數據庫,我更喜歡進行遷移而不是就地升級,正如我在對另一個問題的冗長回答中所討論的那樣。
基本上,我喜歡在遷移時“重新開始”。我發現通過還原進行系統數據庫遷移和升級有時會導致還原失敗,並且可能會帶來潛在的罪惡。
您還詢問了索引、儲存過程和視圖。數據庫級別的那些項目都應該存在於使用者數據庫中。因此,當您將數據庫 X 恢復到新伺服器時,所有數據庫對象(表、使用者、視圖、過程、函式等)也將在那裡。
系統數據庫中存在的有作業、登錄、警報、連結伺服器、加密密鑰等。實例級項目。
我喜歡查看這些並使用各種腳本遷移我需要的東西 - 最近是DBATools.Io powershell 腳本。我特別喜歡使用他們的腳本來複製 sql 登錄名,因為它處理經過 SQL 身份驗證的使用者,保持他們的密碼和安全標識符相同,這樣來自這些登錄名的數據庫使用者就可以工作。他們還有一個完整的SQL Server 遷移命令,該命令執行他們的子命令來複製我通常會複製的項目。
我不相信 Max 的答案有誤,因此投了贊成票。我只是獲得了更多的成功和更多的運氣,並且對遷移到新版本而不是嘗試在版本之間恢復系統數據庫感到更自在。我會說我真的不記得上次我進行版本升級遷移並且沒有這樣做而不是恢復系統數據庫。
如果您需要訪問儲存在這些數據庫中的元數據,您可能需要考慮遷移系統數據庫(master、msdb 和模型)。
Master 儲存登錄資訊、安全證書等項目。
msdb 包含有關備份的詳細資訊,並儲存 SQL Server 代理作業配置以及其他詳細資訊。
模型可能已由您或您的團隊自定義,以允許新創建的空白數據庫包含一組您在每個數據庫中使用的預定義對象。
遷移系統數據庫可以相當容易地完成;詳細說明可從 MSDN 的備份和還原系統數據庫 (SQL Server) 獲得。
根據您的要求,您可以
BACKUP DATABASE
在 2005 實例上對使用者數據庫執行操作,然後RESTORE DATABASE
在 2016 實例上執行整個數據庫,包括所有數據、索引和其他對象。至少在最初,這將需要與 2005 實例上的數據庫相同的空間量。但是,一旦您恢復了數據庫,您就可以利用數據壓縮來顯著減少所需的佔用空間。
有關執行備份的詳細資訊,請參閱關於使用 SQL Server 備份,有關還原的詳細資訊,請參見關於還原方案。