none
SSISのタスクで重複主キーのデータのチェック方法 RRS feed

  • 質問

  •  

    こんにちは。

     

    SSISのタスクを使って、フラットファイルにあるレコードをチェックしようと思っています。

    重複主キーのデータがあったら、エラーで終了させたいです。

     

    USE [TEST]
    GO

    /****** Object:  Table [dbo].[Table_2]    Script Date: 10/17/2008 16:17:14 ******/
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Table_2]') AND type in (N'U'))
    DROP TABLE [dbo].[Table_2]
    GO

    USE [TEST]
    GO

    /****** Object:  Table [dbo].[Table_2]    Script Date: 10/17/2008 16:17:14 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Table_2]') AND type in (N'U'))
    BEGIN
    CREATE TABLE [dbo].[Table_2](
     [ID] [int] NOT NULL,
     [NAME] [nchar](10) COLLATE Japanese_CI_AS NULL,
     CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED
    (
     [ID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    END
    GO

     

    こう言ったテーブルがありますと…

    IDは主キーになります。

     

    Sample Data:

    /*******************

    1,AAAA

    2,BBBB

    3,CCCC

    4,DDDD

    2,EEEE

    *******************/

     

    このフラットファイルに

    /*******************

    1,AAAA

    2,BBBB

    3,CCCC

    4,DDDD

    2,EEEE

    *******************/

    2行目と5行目は同じ主キーになるため、DTSX実行するときに、キー違反のエラーになります。

     

    やりたいこと:

    データベースのテーブルに入れる前に、同じ重複した主キーデータはあるかどうか、一回チェックしたいです。あった場合、エラーを起こして、SSIS処理を終了させたいです。

     

    何かいい方法はありますでしょうか。SSIS勉強不足で、すみません。ご教授ください。

    よろしくお願いいたします。

    2008年10月19日 14:41