存储过程中存储的数据集 - 执行SQL任务

时间:2017-06-06 13:32:44

标签: ssis resultset sql-server-2016

我有这个存储过程:

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

它返回一个名为Result的数据集作为nvarchar(MAX)(总是一行)。

我尝试过OLE和ADO连接以及结果集。我已经尝试创建一个表变量并将值存储在那里。

没有任何作用。

我可以在数据库中看到它正在成功运行,然后在返回结果数据集时失败。

我已经完成了一些调试,我可以确保返回结果字符串。问题是我不知道如何在SSIS上处理这个问题。

我得到的错误是:

  

输入字符串的格式不正确

我很感激任何想法。

感谢。

编辑:我已经尝试过再次使用表变量,但它确实有效。我想我第一次做得不好。对于那个很抱歉。谢谢!

1 个答案:

答案 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