🌟

SQL Server メンテナンスプランのエラー

2023/07/20に公開

とりあえず、ちょこっとした情報共有から始めて見る。

どんな話?

SQL Server のメンテナンスプランで、削除したデータベースの名前が出てきて失敗するという現象のお話です。滅多に遭遇しないと思いますが、簡単に共有しておきます。

現象

SQL Server のメンテナンスプランを実行した際に、以下の様なエラーが発生するという現象です。エラーは、メンテナンスプランのログで確認できます。

データベースのバックアップ (完全) (***********)
ローカル サーバー接続 のデータベースのバックアップ
データベース: deleteddatabase,DWConfiguration
種類: 完全
既存データに追加
タスクの開始: 2023-07-20T09:22:04。
タスクの終了: 2023-07-20T09:22:04。
失敗:(0) 選択された 1 つ以上のデータベースがサーバーに存在しません。

データベースのバックアップ (完全) (***********)
ローカル サーバー接続 のデータベースのバックアップ
データベース: deleteddatabase,DWConfiguration
種類: 完全
既存データに追加
タスクの開始: 2023-07-20T09:22:04。
タスクの終了: 2023-07-20T09:22:04。
失敗:(0) メンテナンス プランにデータベース 'deleteddatabase' を含めるのは無効です。

この deleteddatabase データベースは、既に削除されているデータベースで、SQL Server Management Studio(以降、SSMS) のメンテナンスプランでデータベースを選択する GUI では、リストに表示されません。

メンテナンスプランのタスクで特定のデータベースを選択していて、タスクからデータベースを選択解除せずに、選択しているデータベースを削除した場合に発生する現象となります。

動作

メンテナンスプランを作成すると内部的には SSIS パッケージが作成されるのですが、そのパッケージ内にデータベース名を保持しています。GUI は、今存在してるデータベースを表示しているので、削除されたデータベースは表示されず、選択解除もできない状態となっています。

対応

ということで、対応としてはパッケージ内に保持してるデータベース名を削除することになります。SSMS から、対象のメンテナンスプランをデザイナーで表示します。データベースを選択しているタスクを選びます。プロパティを表示し、SelectedDatabases を選択して、[...] ボタンを押します。

下記のように Object コレクションエディターが表示されますので、削除したデータベースの情報を削除します。

今回は「データベースのバックアップ(完全)」のタスクで再現させましたが、メンテナンスプランに複数のタスクが含まれており、それらのタスクで特定のデータベースを選択してる場合、それぞれのタスクで上記の作業が必要になります。

Microsoft (有志)

Discussion