[SQL][問題處理]SQL Server 移機時,如何將維護計畫( Maintenance Plan )進行移轉

[SQL][問題處理]SQL Server 移機時,如何將維護計畫( Maintenance Plan )進行移轉

晚上收到一個朋友打來的電話,他正在幫一台舊主機上的 SQL Server ,將資料庫移到新的主機上,但發覺舊的 SQL Server 上有很多的 SQL Server Agent 的作業( Job ) 也要移轉,於是打電話來說該怎麼來移轉。

 

原本以為這只是個小 Case,於是請朋友利用 SSMS,選擇「SQL Server Agent」→「作業」→ ( 要匯出的作業 ) →「編寫作業的指令碼為」→「CREATE」→「新增查尋編輯器視窗

image

 

這樣就可以把作業轉換成為 SQL 的語法,因此這樣的語法拿到新的主機上執行一次,就可以很方便的把 JOB 移轉。

image

 

朋友了解之後就掛斷電話,自己來進行處理了。而過了幾分鐘之後,電話又再度響起,朋友表示剛剛的方式是有把作業看起來有移轉過去,但都沒有辦法正常執行,這實在是有點不大尋常,因此又細問一下相關細節,原來朋友原本主機上的作業,全都是 SQL Server 的維護計畫 (Maintenance Plan),因此雖然透過這樣的方式把作業的設定都複製過去了,但真正的封裝 ( Package ) 是沒有辦法透過這樣的方式給匯出,所以才會失敗。

 

那麼 SQL Server 的維護計畫到底該怎麼匯出呢 ? 在 SSMS 上選擇維護計畫,似乎沒有相關的功能可以使用。此時必須透過連接 Integration Services 的方式,連接到本機的 SSIS Server 上。

image

 

連接成功之後,我們可以選擇「存放的封裝」→「MSDB」→「Maintenance Plans」,就可以看到我們所有透過維護計畫所建立的封裝,存都存在這裡。

image

 

因此我們就可以在我們需要移轉的封裝上方,選擇「匯出封裝

image

 

設定要將封裝匯出所存放的目錄和檔案名稱,就可以將封裝匯出一個檔案,後續就可以將該檔案移轉到新的環境上再做匯入,就可以完成封裝的移轉。

image

 

因此在我們的新環境上,也是利用連接 Integration Services 的方式來進行,此時跟前面的有點不同,要改選擇進行「匯入封裝

image

 

這裡要注意指定封裝的檔案路徑和名稱,設定好之後按下「確定」,就可以完成封裝的匯入了。

image

 

用這樣的方是看起來雖然可以把我們原本設定的維護計畫,完整的將設定給移到新的主機上,但這裡有一點要注意一下,因為雖然我們透過匯出封裝的方式來進行,但封裝檔案內其實只有維護計畫要做的內容,缺少「排程」的資料了。另外在 SQL Server Agent 下的「作業」也可能不會出現。因此匯入之後還要做一點加工,首先透過「連接管理

image

 

確認連接屬性之後,就可以按下「確定」,此時將維護計畫再儲存一次之後,就可以產生 SQL Server Agent 對應的作業了。

image

 

也可以透過「排程」的設定,手動將維護計畫的執行時間重新設定。

image

 

這裡我比較不建議在這裡,透過一開始在維護計畫產生的作業,產生對應的「編寫作業的指令碼為」的 Script,來建立 SQL Server Agent 作業和排程的設定,因為一但這樣用之後,看起來似乎有順利產生出來,但此時會造成在維護計畫內看到作業是沒有設定排程,但在 SQL Server Agent 作業下所看到的會是有,造成使用上的混淆。因此比較建議可以用這樣的方式產生出維護計畫的主體,再手動設定產生對硬的作業和排程資訊,會比較沒有問題。