2015-09-02 44 views
1

在我的SP的我是從一個數據呼叫流程OLE DB Source對象在SSIS最後,我有以下代碼:沒有在SSIS OLE DB源任務沒有名字的數據源列

-- Get count from TEMP table #InactiveRules 
SELECT @InactiveRulesCount = (SELECT COUNT(*) FROM #InactiveRules) 

-- Define information sent in the email 
IF @InactiveRulesCount = 0 
    BEGIN 
     SELECT @InactiveRulesMessage = ('No EXCEPTION KO Rules Found.'); 
     SELECT @Message = @InactiveRulesMessage; 
     SELECT @Message; 
    END 
ELSE 
    BEGIN 
     SELECT * FROM #InactiveRules; 
    END 

當我執行數據流任務,我得到這個錯誤,當我在我的變量@InActiveRulesCount具有計數0:

NoDataSourceColumnError

如何創建一個數據源列,以便該文本中顯示我使用SSIS通過電子郵件發送附件的CSV文件?

任何幫助/方向將不勝感激。謝謝。

感謝您的幫助MiguelH,這裏是代碼:

-- Get count from TEMP table #InactiveRules 
SELECT @InactiveRulesCount = (SELECT COUNT(*) FROM #InactiveRules) 

-- Define information sent in the email 
IF @InactiveRulesCount = 0 
    BEGIN 
     SELECT @InactiveRulesMessage = ('No EXCEPTION KO Rules Found.'); 
     SELECT @Message = @InactiveRulesMessage; 
     SELECT @Message AS ProductName; 
     SELECT @Message AS ChannelName; 
     SELECT @Message AS StrategyCode; 
     SELECT @Message AS StrategyName; 
     SELECT @Message AS RuleCode; 
     SELECT @Message AS RuleName; 
     SELECT @Message AS [Priority]; 
     SELECT @Message AS IsActive; 
     SELECT @Message AS [Message]; 
    END 
ELSE 
    BEGIN 
     SELECT ProductName, ChannelName, StrategyCode, StrategyName, RuleCode, RuleName, [Priority], IsActive FROM #InactiveRules; 
    END 
+0

列沒有名稱的IF數= 0的一部分。在選擇的末尾添加一個別名。例如SELECT @MESSAGE AS MESSAGE。 – MiguelH

+0

謝謝,MiguelH。但是,這產生了另一個錯誤:「組件」OLE DB源「(1)」驗證失敗並返回驗證狀態「VS_NEEDSNEWMETADATA」。 有什麼建議嗎?再次感謝。 – Melinda

+0

您需要= 0部分和select *部分中的相同數據名稱,否則會導致此錯誤。如果你的SELECT * FROM #InactiveRules有列「規則,ID,消息」,那麼這些需要在= 0部分被鏡像。基本上分配消息AS規則,消息作爲ID,消息AS消息。我已經在下面澄清了這一點! – MiguelH

回答

0
IF @InactiveRulesCount = 0 
BEGIN 
    SELECT @InactiveRulesMessage = ('No EXCEPTION KO Rules Found.'); 
    SELECT @Message = @InactiveRulesMessage; 
    SELECT @Message as MyRule,@Message as myID,@Message as MyMessage 
END 
ELSE 
BEGIN 
    SELECT MyRule,myID,MyMessage FROM #InactiveRules; 
END 
+0

我按照上面的說法做了,並且SP在SQL Server中執行,每個列名中都有相同的消息,但是當我執行具有此SP的OLE DB源的數據流任務時,出現一個錯誤,指出:「component」OLE數據庫來源「(1)」驗證失敗並返回驗證狀態「VS_NEEDSNEWMETADATA」。 – Melinda

+0

你能發佈新的代碼嗎? – MiguelH

+0

如果我檢查了自己的代碼,這將有所幫助!很多道歉。看到上面的修改!此外,SSIS非常挑剔,因此兩套名稱必須相同......包括字符的情況。 – MiguelH

相關問題