SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2014 を使用したメンテナンスプランの移行方法について

leave a comment

SQL Server 2014 としていますが、SQL Server 2005 SP1 以降であれば、おそらく使えるのではと思っています。
# SQL Server 2008 は CU3 以降かもしれませんが…。

以下の情報も参考になります。

Automating Deployment of SQL Server Maintenance Plans
SSIS package query
SSIS Package Extract from MSDB
How to Transfer(Copy) Maintenance Plans from One Server to other???….

メンテナンスプランですが、SSIS パッケージとして保存されており、dtutil を使用することでエクスポートすることができます。

以下は SQL2014 という名前付きインスタンスから [MaintePlan] というメンテナンスプランを dtsx ファイルとしてエクスポートするためのコマンドの例となります。

dtutil.exe /SQL "Maintenance PlansMaintePlan" /Encrypt FILE;C:ssistempMaintePlan.dtsx;2;pass /SourceServer .SQL2014

 

サーバーで設定されているメンテナンスプランは以下のようなクエリで取得ができます。

SELECT 
	foldername + '' + name as export_target,
	* 
FROM 
	dbo.sysssispackagefolders spf
	INNER JOIN 
	dbo.sysssispackages sp
	ON
	spf.folderid = sp.folderid
WHERE
	foldername = 'Maintenance Plans'

 

エクスポートしたメンテナンスプランのインポートについては以下のコマンドで実施することができます。

以下のコマンドは既定のインスタンスにインポートをしている例となります。

dtutil.exe /FILE "C:ssistempMaintePlan.dtsx" /Decrypt pass /Copy SQL;"Maintenance PlansMaintePlan" /DestServer "localhost"

 

インポートする際には注意点があります。

dtsx 内には接続マネージャーの情報を保持しているのですが、この接続マネージャーの情報がエクスポート元の情報が入っているケースがあります。

dtsx ファイルは XML ファイルですのでテキストエディタで開くことができますので、[ConnectionManager] の設定値が適切かどうかをインポート前に確認しておく必要があります。

image

接続マネージャーの設定に問題がなければ、上記のコマンドを使用してインポートをします。

メンテナンスプランですが、

  • メンテナンスプランの処理
  • メンテナンスプランのスケジュール

の 2 つで構成されています。

メンテナンスプランのインポートでは処理の部分が取り込まれますが、スケジュールについては登録が行われていない状態となっています。

スケジュールを登録するためには、

  • SQL Server Agent ジョブの移行
  • メンテナンスプランを一度開いて再度保存

することで登録ができます。

基本的な流れを把握しておくと、msdb をリストアしなくても移行が可能になりそうですね。

Written by masayuki.ozawa

12月 17th, 2014 at 8:58 pm

Posted in SQL Server

Tagged with

Leave a Reply

*