SSIS没有sql命令返回的列信息

时间:2013-06-26 09:06:22

标签: visual-studio-2008 ssis oledbconnection

  1. 我在BI_Test_Server中运行了我的存储过程。

  2. 然后我使用exec [dbo].[bi_resource_dimension_sp] 1,1

  3. 执行了它
  4. 我在SQL Server management Studio成功获得了结果。所以我创建了一个Data Flow task,把OLE DB源,数据连接和OLE DB目的地。我编辑了OLE DB源并创建了一个新连接。内部OLE DB源SQL命令:SQL命令文本我把步骤4。

  5. 在OLE DB源 - SQL命令文本中,我放置exec [dbo].[bi_resource_dimension_sp] 1,1以便从OLE DB源中选择所有数据,然后将其连接到数据连接并将数据转储到OLE中数据库目的地。

  6. 但是当我尝试预览结果时,我收到错误 SQL命令没有返回列信息

  7. 理想情况下,我需要勾选所有复选框以确保获取和放置数据的列。这是我在第4步之后尝试和即将做的事情。

    它表示错误,您可以“如果您想继续操作,请选择确定”。但是,如果我这样做,当我去列部分(在连接管理器和错误输出之间的左上部分)。它会显示空白列。

    请帮忙。

8 个答案:

答案 0 :(得分:3)

您可以尝试在数据流中使用“OLE DB命令”。这对我来说有所不同。我使用VS 2013并使用与“OLE DB目标”相同的过程不起作用,但使用“OLE DB命令”是好的。我注意到“OLE DB命令”也存在一些障碍,尤其是存储过程中哪些不正确,但这对SSIS来说是一个加分。

数据流任务对于检索可以执行SQL的列/参数非常严格,特别是对于OLE DB目标(现在我注意到它也适用于Source)。最常出现此错误。 Microsoft(OLE DB Destination recommendations)建议使用OLE DB命令而不是目标。我还建议尽可能使用舞台临时表。 即使使用OLE DB命令,我发现需要刷新它几次,以便输入/目标列/过程参数可用于映射。

这是注释(不确定它是否适用于源,但可能是):

请注意

OLE DB目标不支持参数。如果需要执行参数化INSERT语句,请考虑OLE DB命令转换。有关更多信息,请参阅OLE DB命令转换。

答案 1 :(得分:1)

我想你的存储过程中可能有一个需要别名的列。你的SQL中没有COUNT()或SUM()这样的东西吗?在SSMS中运行存储过程时,您是否在任何地方看到“(无列名称)”?

答案 2 :(得分:1)

SQL DB Pros有答案。 SET FMTONLY OFF解决方案对我有用 - 性能不是真正的问题,因为我的SP还是有动态SQL。

答案 3 :(得分:1)

不是解决方案,只是解决方法

将SP中的数据转储到中间临时表中,您可以在Execute SQL Task中创建该表。

CREATE TABLE #Temp
(
.....
.....
)
insert into #Temp
exec [dbo].[bi_resource_dimension_sp] 1,1

Delay Validation属性设置为 True ,将RetainSameConnection属性设置为OLEDB连接 True 。现在,在DFT中,而不是SP,来自 #temp 表的源数据。由于所有列都在表中具有别名,因此您不应再遇到此问题。

答案 4 :(得分:1)

在使用SSIS包数据流中的Oracle服务器的OLE DB源连接时,弹出此错误。我在SQL命令(文本)中设置了SQL语句,我在命令的第一行放置了注释。删除评论解决了问题。

- 扩展声明的当前sql选择:<<<<删除评论,它会工作 SELECT CH.CLAIM_NUMBER,CD.LINE_NUMBER,CD.SUB_LINE_CODE,CD.SEQ_PROV_ID,...

答案 5 :(得分:0)

我在SSIS中使用Excel源数据流任务收到此错误:

enter image description here

我通过删除Excel Source任务然后再次创建它来解决错误。

答案 6 :(得分:0)

使用SQL Command仅从excel导入数据时,会出现此问题, 并且标头不是从excel派生的,那么当我们将连接字符串设为动态时,就会出现此问题:

例如,我想通过SQL Command读取数据范围A2:P。 选择F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16 来自[Data $ A2:P]

到目前为止,您将不会看到任何错误,但是当您更改连接字符串以使其动态时,错误便开始在Excel Source上显示。

现在解决方案非常容易,只需检查动态连接后选择的excel文件,打开该文件并选择“所有单元格”,然后保存它,然后先删除或刷新第一个,然后再次建立连接,错误将自动消失! !! 希望对您有帮助!

答案 7 :(得分:0)

我也遇到了这个错误,因为 SP 数据库和连接数据库不同。做同样的事情修复它。