5

最初のタスクがストアドプロシージャを実行して、実行日が休日ではないことを確認するSSISパッケージがあります。休日の場合は、カウントが1のレコードセットを返します。

レコード数が1の場合はSSISを停止できるようにしたいのですが、レコード数がゼロの場合は実行を継続します。これを実装するための最良の方法がわかりません。パッケージに追加する必要がある制御フロー項目は何ですか?

私はSSISに比較的慣れていないので、どのアイテムを追加すればよいかわかりません。どんな助けでも素晴らしいでしょう。

4

2 に答える 2

7

これを実現するためのアイデアを提供できるオプションを次に示します。この例では、休日のリストを含むテーブルと照合して、今日の日付が休日かどうかを確認します。パッケージ タスクの残りの部分は、今日の日付が休日でない場合にのみ実行されます。この例ではSSIS 2008 R2SQL Server 2008 R2データベースを使用しています。

段階的なプロセス:

  1. 「 SQL スクリプト」セクションにあるスクリプトを使用して、名前付きのテーブルと名前付きdbo.Holidaysのストアド プロシージャを作成します。スクリーンショット # 1に示すように、テーブルにデータを入力します。dbo.CheckTodayIsHoliday

  2. SSIS パッケージで、RecordCountとという名前の 2 つの変数を作成しますSQLProcedure。スクリーンショット # 2に示すように、値を入力します。また、SQL Server データベースに接続するための OLE DB 接続を作成します。この例では、 SQLServerと名付けました。スクリーンショット # 3を参照してください。この例では、通常の接続の代わりにデータ ソースを使用しています。そのため、スクリーン ショットではアイコンが異なります。

  3. SSIS パッケージでData Flow task、データ フロー タスク内に and を配置しOLE DB sourceますRow count transformation。スクリーンショット # 4を参照してください。

  4. OLE DB Sourceスクリーンショット # 5と # 6に示すように構成します。これにより、ストアド プロシージャが実行され、結果がフェッチされます。

  5. Row count transformationスクリーンショット # 7に示すように構成します。

  6. では、スクリーンショット # 8Control Flowに示すように、さらにいくつかのダミー タスクを配置しました。

  7. スクリーンショット # 9に示すように、データ フロー タスクと次のタスク (シーケンス コンテナー) の間のコネクタを右クリックします。

  8. Precedence Constraint Editorスクリーンショット # 10に示すように構成します。

  9. スクリーンショット11June 16, 2011は、今日の日付 ( ) がdbo.Holidaysテーブルに休日としてマークされているパッケージの実行を示しています。もちろん、2011 年 6 月 16 日は、休暇を取らない限り、私が働いている休日ではありません。

  10. スクリーンショット # 12に示すように、テーブル データを変更します。

  11. スクリーンショット # 13は、今日の日付 ( June 16, 2011)がテーブルに存在しないdbo.Holidaysパッケージの実行を示しています。

それが役立つことを願っています。

SQL スクリプト:

CREATE TABLE [dbo].[Holidays](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [HolidayDate] [datetime] NULL,
 CONSTRAINT [PK_Holidays] PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO

CREATE PROCEDURE [dbo].[CheckTodayIsHoliday]
AS
BEGIN

    SET NOCOUNT ON

    SELECT  HolidayDate
    FROM    dbo.Holidays
    WHERE   DATEDIFF(DAY, HolidayDate, GETDATE()) = 0   
END
GO

スクリーンショット #1:

1

スクリーンショット #2:

2

スクリーンショット #3:

3

スクリーンショット #4:

4

スクリーンショット #5:

5

スクリーンショット #6:

6

スクリーンショット #7:

7

スクリーンショット #8:

8

スクリーンショット #9:

9

スクリーンショット #10:

10

スクリーンショット #11:

11

スクリーンショット #12:

12

スクリーンショット #13:

13

于 2011-06-16T17:36:37.443 に答える
4

1 つの方法は、変数 @Holiday の値を設定するために使用する Execute SQl タスクを作成することです。次に、その Execute SQl タスクから出てくる成功フロー ラインを、緑色のライン自体を右クリックし、[編集] をクリックして、成功と制約の両方に変更します。評価操作として [式と制約] を選択し、式に次のような式を追加します。

@Holiday == 0
于 2011-06-16T17:55:13.560 に答える