SSIS SCD 向导对我的数据执行 select *

SSIS SCD wizard does a select * on my data

Visual studio 在使用渐变维度向导时挂起。

我select连接正确。 然后我尝试打开下拉菜单 'Table or view' 到 select 目的地 table。 此刻visual studio挂在我身上..

我在所有客户端机器和不同的 visual studio 版本上都有这个,并且只在这个特定的数据库上。在 activity 监视器中,我注意到向导在数据库中的所有 table 上执行了 select *...我有一个 table 有 +40 亿行(+300GB ).正是这个 table 上的 select * 花了这么长时间。

是否有人知道是什么原因导致我的数据库出现 select *,或者他们为什么要这样做?更好的是,如何解决这个问题?

根本不要在 SSIS 中使用渐变维度向导。与您可以使用 TSQL.

编写的数据流相比,它创建的数据流执行得非常糟糕

几个假设;您需要一个 2 型 SCD,并且您至少使用 SQL 带有 MERGE 语句的 Server 2008。

不使用 SSIS,而是使用 TSQL 中 MERGE 语句的 OUTPUT 子句来执行维度 update/insert。例如:

INSERT INTO Customer_Master
SELECT 
    Source_Cust_ID, 
    First_Name, 
    Last_Name, 
    Eff_Date, 
    End_Date, 
    Current_Flag
FROM
    ( 
    MERGE 
        Customer_Master CM
    USING 
        Customer_Source CS
    ON 
        CM.Source_Cust_ID = CS.Source_Cust_ID
    WHEN NOT MATCHED 
    THEN
        INSERT VALUES 
            (
            CS.Source_Cust_ID, 
            CS.First_Name, 
            CS.Last_Name, 
            CONVERT(char(10), GETDATE()-1, 101),
            '12/31/2199',
            'y'
            )
    WHEN MATCHED 
        AND CM.Current_Flag = 'y'
        AND (CM.Last_Name <> CS.Last_Name )
    THEN
        UPDATE 
        SET 
            CM.Current_Flag = 'n',
            CM.End_date = convert(char(10), getdate()- 2, 101)
    OUTPUT 
        $Action Action_Out,
        CS.Source_Cust_ID,
        CS.First_Name,
        CS.Last_Name,
        convert(char(10), getdate()-1, 101) Eff_Date,
        '12/31/2199' End_Date,
        'y' Current_Flag
    ) AS MERGE_OUT
WHERE 
    MERGE_OUT.Action_Out = 'UPDATE';

来源:http://www.kimballgroup.com/2008/11/design-tip-107-using-the-sql-merge-statement-for-slowly-changing-dimension-processing/