web-dev-qa-db-ja.com

SQL Serverメンテナンスプランのサブタスクを指定して、先行タスクの成功または失敗時に無条件に実行する方法は?

SQL Server Management Studioメンテナンスプランウィザードで作成された(かなり標準的な)日次メンテナンスプランを持っています。

enter image description here

AFAIU、最後から2番目のタスク「データベースのバックアップタスク」は、先行するすべてのタスクが成功した場合にのみ実行されます。制約(タスクを含む矢印)はすべて同じであるため(デフォルトのオプション作成から取得):

enter image description here

「論理AND」を使用します

ここで、前述の制約を「論理AND」から「論理OR」に変更しても、前述のいずれかのタスクが失敗した場合でも、バックアップタスクは失敗します。
正しい?

どのような場合でもバックアップタスクを実行するにはどうすればよいですか?

[〜#〜]更新[〜#〜]
回答を受け入れた後も、「完了」という用語についてはまだ疑問があります。
失敗したタスクは、SQL Serverメンテナンスプランの用語で完了するまで実行されたと見なされますか?

5
Fulproof

フロー内の適切な上流優先制約を、成功時ではなく完了時に変更する必要があります。

これは、次の2つの方法のいずれかで行われます。

  1. デザインサーフェイス(下に表示)の制約を右クリックし、ポップアップメニューから適切なタイプを選択します。
  2. (開いていた)[優先順位制約エディター]ダイアログで、[値]ドロップダウンリストから適切なタイプを選択します。

2012より前のバージョンでは、拘束矢印は青色に変わります。 2012年、矢印はより明確な「完了」キャプションを取得します。

enter image description here

これらすべてを1つのフローで維持したい場合は、SQL Serverデータツールを使用してパッケージを作成することをお勧めします。なぜなら、本当に必要なのは、すべてのメンテナンス要素を配置するシーケンスコンテナー(既存のOn Success制約タイプ)、次にcontainerをOn Completion precedence制約を使用してバックアップタスクに接続します。

または、これが私が通常行うことですが、プロセスのバックアップ部分を別のサブプランに分離し、メンテナンス部分が完了すると予想された後にスケジュールします。

2
Jon Seigel

値には、成功、失敗、完了(概算)の3つのオプションがあります。上記のすべての優先順位制約の値を完了に変更すると、上流のタスクに関係なく、バックアップタスクに確実に到達するはずです。

実行結果

優先順位制約では、次の実行結果を単独で、または式と組み合わせて使用​​できます。

  • 制約付き実行可能ファイルを実行するには、結果に関係なく、優先実行可能ファイルが完了している必要があります。
  • 成功するには、制約付き実行可能ファイルを実行するために、優先実行可能ファイルが正常に完了する必要があります。
  • 失敗した場合、制約付き実行可能ファイルを実行するには、優先実行可能ファイルが失敗する必要があります。

参考文献:

5
billinkc