我在SSIS中的SqlCommand - 数据流OLE DB命令似乎不起作用

时间:2009-09-17 15:22:18

标签: ssis

您好我使用OLE DB Source从dBase IV文件中获取行并且它可以工作,然后我拆分数据并使用聚合组件执行分组。所以我获得了一个包含两列“null”值的行:

CompanyID | CompanyName |  SubTotal  |    Tax      | TotalRevenue 
   Null        Null         145487      27642.53      173129.53

这次成功是因为所有行都已经分组,没有注意第一列,只是总结有价值的列,所以我需要将该值更改为默认值,如CompanyID =“100000000”和CompanyName =“Others”。我尝试在OLE DB命令组件上使用SqlCommand:

SELECT "10000000" AS RUCCLI , "Otros - Varios" AS RAZCLI FROM RGVCAFAC 

<property id="1505" name="SqlCommand" dataType="System.String" state="default" isArray="false" description="The SQL command to be executed." typeConverter="" UITypeEditor="Microsoft.DataTransformationServices.Controls.ModalMultilineStringEditor, Microsoft.DataTransformationServices.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" containsID="false" expressionType="Notify">SELECT "10000000" AS RUCCLI , "Otros - Varios" AS RAZCLI FROM RGVCAFAC</property>

但是没有发生,为什么?最后,当数据插入SQL Server表时,任务完成。

我在提取数据和转换时使用相同的连接管理器。 (查看代码)

<DTS:Property DTS:Name="ConnectionString">Data Source=C:\CONTA\Resocen\Agosto\;Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Extended Properties=dBASE IV;</DTS:Property></DTS:ConnectionManager></DTS:ObjectData></DTS:ConnectionManager>

alt text http://web5.twitpic.com/img/30512459-a822658c0dc883a7543171829bff8d9e.4ab399cd-full.jpg

所有工作都在内存上,我没有使用缓存管理器连接

1 个答案:

答案 0 :(得分:1)

我认为这是你的情景:

  • 您正在从OLEDB中提取数据 将数据放入的源 缓冲液中。
  • 接下来你处理了 带缓冲区的内容 聚合组件。
  • 之后, 你运行一个Sql命令(选择 来自数据库的两个常量) 这不会影响缓冲区(或其他任何东西)。
  • 最后,将缓冲区的输出发送到OLEDB目的地。

而不是SQL命令(不影响缓冲区),您需要使用派生列将两列中的值替换为null,并使用这些列中所需的常量值。

为了澄清,SQL Command任务用于从数据流中获取信息并对实际数据库进行更改。它不用于从数据库收集信息以更改数据流中的数据。