2017-06-06 41 views
1

我有這個存儲過程:存儲的數據從存儲過程中設置 - 執行SQL任務

Dbo.SprocName (@Id UNIQUEIDENTIFIER, 
       @ResponseCode INT OUTPUT, 
       @ResponseDescription VARCHAR(500) OUTPUT) 

,並返回一個名爲數據集說Resultnvarchar(MAX)(總是單行)。

我試過OLE和ADO連接以及結果集。我試過創建一個表變量並將值存儲在那裏。

沒有用。

我可以在數據庫中看到它正在成功運行,然後在返回結果數據集時失敗。

我已經做了一些調試,我可以確保結果字符串返回應該是。問題是我不知道如何在SSIS上處理這個問題。

,我得到的錯誤是:

輸入字符串的不正確的格式

我明白任何想法。

謝謝。

編輯:我試過再次使用表變量,它的工作原理。我想我第一次做得不好。對於那個很抱歉。謝謝!

回答

1

您的問題的一個潛在原因可能是SSIS和SQL Server之間的數據類型不匹配。

SSIS GUID數據類型與SQL Server不匹配uniqueidentifier - SSIS GUID具有大括號(例如,{00000000-0000-0000-0000-000000000000}),而SQL值不包含。 SQL無法將該值識別爲唯一標識符,並且無法轉換。

要傳遞一個GUID,您需要在SSIS或SQL中刪除這些大括號。一種方法,我用它作爲VARCHAR發送它,然後去掉花括號,例如,

DECLARE @GUID VARCHAR(40) = '{00000000-0000-0000-0000-000000000000}' 
DECLARE @CnvtGUID UNIQUEIDENTIFIER = REPLACE(REPLACE(@GUID, '}', ''), '{', '') 

SELECT @GUID, @CnvtGUID 
+0

謝謝你,但過程是返回nvarchar,變量是字符串。我不認爲數據類型是問題,而是捕獲數據集的方式。我也嘗試修改數據類型。 – Maria

+0

您是否將值傳遞給'@ ID'參數?這是'uniqueidentifier'數據類型,它促使我看到我的建議 – AHiggins

+0

。存儲過程正在執行,所以輸入參數不是問題。我已經使用了一個表格變量來存儲我的數據集,所以現在沒問題。非常感謝您的幫助。 – Maria