我有这个存储过程:
Dbo.SprocName (@Id UNIQUEIDENTIFIER,
@ResponseCode INT OUTPUT,
@ResponseDescription VARCHAR(500) OUTPUT)
它返回一个名为Result
的数据集作为nvarchar(MAX)
(总是一行)。
我尝试过OLE和ADO连接以及结果集。我已经尝试创建一个表变量并将值存储在那里。
没有任何作用。
我可以在数据库中看到它正在成功运行,然后在返回结果数据集时失败。
我已经完成了一些调试,我可以确保返回结果字符串。问题是我不知道如何在SSIS上处理这个问题。
我得到的错误是:
输入字符串的格式不正确
我很感激任何想法。
感谢。
编辑:我已经尝试过再次使用表变量,但它确实有效。我想我第一次做得不好。对于那个很抱歉。谢谢!
答案 0 :(得分: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