通过SSIS从变量将数据插入SQL Server

时间:2013-09-09 05:28:33

标签: sql-server web-services ssis foreach-loop-container

我已经使用了简单的Web服务来添加两个数字,我得到的结果是xml格式,我已经存储在名为my_data的变量中,现在我必须通过写入将该结果插入到名为Data_result的sql表中在oledb源代码编辑器中查询,但无法使用变量插入数据。我只想将我的Web服务计算的所有结果存储在sql表中。

由于我是SSIS的新手,所以非常感谢任何帮助

当我尝试通过以下查询命令插入数据时:

"INSERT INTO Data_Result(Result) SELECT '"+@USER::my_data+"'"

这是错误的:

  

数据流任务时出错[OLE DB源[55]]:SQL命令没有返回列转换

--------根据给出的解决方案更新错误说明

执行查询时出错 如果我放置没有“”引号的表达式,那么我会得到以下错误 enter image description here

如果我将查询放在双引号中,则会显示以下错误 enter image description here

如果我从User :: Data Variable中删除User并将查询放在双引号中,那么我会得到以下屏幕 enter image description here 虽然表达式计算但是在我尝试在Execute sql Task的表达式列中搜索变量后继续对此计算表达式进行后,我无法找到新创建的变量,如下所示 enter image description here

------------ 根据其他查询更新了问题 ----------

以下是我整个工作流程的图片

enter image description here

这就是我在集合选项卡

下的每个循环容器中所做的

enter image description here

以下设置我在变量映射选项卡之间完成了

enter image description here

在下面的屏幕截图中,我使用执行SQL任务使用插入查询将从Web服务任务获取的数据输入数据库,但无法激发正确的插入查询,

enter image description here

以下是我的XML文件,

<?xml version="1.0" encoding="utf-16"?>

  Reshma

1988-09-23T00:00:00 ,

我从web服务收到的这个名字和生日,我想把它插入数据库表

-------------- 更新了foreach循环容器的问题--------

下面是我正在使用的foreach循环容器,

enter image description here

但是我仍然没有将节点值变为变量,而且我想使用对象类型变量,或者它可以使用字符串类型的变量。

1 个答案:

答案 0 :(得分:2)

我建议你在另一个变量中构建这个SQL语句,如下所述:

http://consultingblogs.emc.com/jamiethomson/archive/2005/12/09/2480.aspx

然后在执行SQL语句中使用该变量

通常你会尝试参数化查询,但在这种情况下(和许多其他情况一样)它将不起作用。

以下是一些更详细的说明:

一个。生成动态SQL

  1. 创建一个类型为string
  2. 的新SSIS变量
  3. 在属性中,将其“评估为表达式”设置为TRUE
  4. 在属性中,单击“表达式”并按如下方式构建表达式:

    "INSERT INTO Data_Result(Result) VALUES ('"+@[USER::my_data]+"')"

  5. 按评估并验证输出是否有效SQL(您甚至可能希望将其粘贴到SSMS中并进行测试)

  6. B中。获取执行SQL任务以运行SQL:

    1. 删除页面上的执行SQL任务。设置它的连接
    2. 突出显示执行SQL任务,转到属性并单击表达式
    3. 选择属性'SQLStatementSource'。在表达式中选择您在步骤A中构建的变量,然后按evaluate。
    4. 在所有内容上按“确定”
    5. 现在,my_data中发生的任何更改都将自动应用于执行SQL任务

      为初学者试试并回复我。