Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从对象插入SSIS_Ssis - Fatal编程技术网

从对象插入SSIS

从对象插入SSIS,ssis,Ssis,我正在使用非常有限的知识编写SSIS包。我有一个“执行SQL任务”,它从一个视图中检索大约300行。我将结果集放入employeeList对象中 我的下一步是将这些记录插入表中。我尝试创建一个ForEach循环容器,并将我的“executesqltask”放入这个容器中。我的参数映射是: variable name | direction | datatype| parameter name | parameter size User::employeeList | input

我正在使用非常有限的知识编写SSIS包。我有一个“执行SQL任务”,它从一个视图中检索大约300行。我将结果集放入employeeList对象中

我的下一步是将这些记录插入表中。我尝试创建一个ForEach循环容器,并将我的“executesqltask”放入这个容器中。我的参数映射是:

variable name      | direction | datatype| parameter name | parameter size 

User::employeeList | input     | varchar | 0  | -1.
User::employeeList | input     | varchar | 1  | -1.
User::employeeList | input     | varchar | 2  | -1.
User::employeeList | input     | varchar | 1  | -1.


我得到的错误是:错误:0xC002F210在填充数据时,执行SQL任务:执行查询“插入[dbo].[xxxx]([field1],[Perso…”失败,错误如下:“将结果提取到类型为(DBTYPE_STR)”的变量时出错。可能的失败原因:查询有问题,“ResultSet”属性未正确设置、参数未正确设置或连接未正确建立。

执行SQL任务很好,但对于您的情况,它听起来就足够了

删除现有内容并将数据流拖到控制流上。双击数据流并添加OLE DB源和OLE DB目标

在OLE DB源中,将OLE DB连接管理器更改为源连接的名称。更改“数据访问模式”从
表或视图
SQL命令
。前者更容易单击,但与编写等效的
SELECT*from mytable
相比,会产生轻微的性能开销。在不再灰显的窗口中,放入查询

SELECT column1, column2, ... FROM dbo.MyView
一般来说,您应该枚举所有需要的列。撤回不需要的列会浪费内存,而这正是SSI快速的原因

将绿色箭头从源连接到“OLE DB目标”。双击它,然后将OLE DB连接管理器更改为目标数据库连接。在其中,将数据访问模式更改为
表或视图-快速加载
。这允许我们批量加载数据,而默认的
表或视图
会为流经的每一行发出一个insert,这很慢。查找目标表名称,下拉列表中的dbo.xxxx,然后单击“映射”选项卡。它应根据名称匹配自动映射。检查并验证映射是否符合预期。单击“确定”


保存,它应该会工作。

执行SQL任务很好,但对于您的情况,它听起来就足够了

删除现有内容并将数据流拖到控制流上。双击数据流并添加OLE DB源和OLE DB目标

在OLE DB源中,将OLE DB连接管理器更改为源连接的名称。更改“数据访问模式”从
表或视图
SQL命令
。前者更容易单击,但与编写等效的
SELECT*from mytable
相比,会产生轻微的性能开销。在不再灰显的窗口中,放入查询

SELECT column1, column2, ... FROM dbo.MyView
一般来说,您应该枚举所有需要的列。撤回不需要的列会浪费内存,而这正是SSI快速的原因

将绿色箭头从源连接到“OLE DB目标”。双击它,然后将OLE DB连接管理器更改为目标数据库连接。在其中,将数据访问模式更改为
表或视图-快速加载
。这允许我们批量加载数据,而默认的
表或视图
会为流经的每一行发出一个insert,这很慢。查找目标表名称,下拉列表中的dbo.xxxx,然后单击“映射”选项卡。它应根据名称匹配自动映射。检查并验证映射是否符合预期。单击“确定”


保存,它就会工作。

我知道你说“知识非常有限”但是,您是否有意识地决定了为什么要将数据加载到对象中,然后对其进行迭代?我遵循的是一个教程:。请告诉我是否有更好的方法来执行此操作。您试图解决什么问题?您只是想将数据从该视图移动到某个表中吗?我知道您表示“知识非常有限”但是,您是否有意识地决定了为什么要将数据加载到对象中,然后对其进行迭代?我遵循的是一个教程:。请告诉我是否有更好的方法来执行此操作。您试图解决的问题是什么?您只是试图将数据从该视图移动到某个表中吗?