SSIS 错误锦集2)

浏览: 1924

question9源表A的数据插入目的端B,C表,再把B表的字段根据B表的标志位的不同分别插入目的端表的D,E表,如果是这样的话,我要统计每个每个目的表影响了多少条记录(包括插入的和更新的),及其总共影响了多少条记录怎么做?

question10:

[执行 SQL 任务] 错误: 未能获取连接“59.212.212.101.zwfwv2.5.zwfw ”。原因可能是连接配置不正确,或者您没有访问该连接的适当权限。

解决方案:我先远程登录到数据库服务器,然后给他“连接SQL”的权限,但是在SSIS下面显示无法连接。后来发现不是这个原因,

需要在数据源的连接字符串上面加一个password就好了,

点击连接管理器的属性,选择属性,将连接字符串ConnectionString复制到项目参数里面加,加一个password,再在原来连接管理器的属性上选择expression,点进去,设置对应的属性。即可。

question11:

 msdaora.1 连接错误;

错误消息提示:

已以用户 NT Service\SQLSERVERAGENT 的身份执行。 Microsoft (R) SQL Server ??????? Version 11.0.2100.60 for 64-bit ????(C) Microsoft Corporation???????? ????: 10:16:18 AM ?? IS Server ????????? ID: 22?????: 4? ????????????????? Integration Services ??????? [????] ?? ????: 10:16:18 AM ????: 10:16:24 AM ????: 5.594 ?. 包执行失败。

解决方案:可能的原因是开发时数据源所使用的是数据库是32位,而部署时所属用的数据库是64位的,那么部署时我们需要做验证设置运行时为32位。

question12:报错问题:如果未安装 64 位驱动程序,则以 32 位模式运行包。

方案:SSIS连接Oracle的问题:

设置Oracle的驱动是OraOLEDB.Oracle.1时需要数据库驱动,如果所使用的驱动是MSDAORA则不需要驱动。 OleDB连接驱动有MSDAORA和OraOLEDB.Oracle,他们分别由微软和Oracle提供,使用OraOLEDB.Oracle驱动,需要安装Oracle Data Provider for OLE DB 。在32位机器上两者都可以,在64位机器上,使用“MSDAORA”会出现“未在本地计算机上注册“MSDAORA.1”提供程序”的问题,OraOLEDB.Oracle一切正常。

   这时如果通过作业调度来执行包,也会报错,我们采用的办法是:

   选中SSIS下面的包,右击出现“验证”,然后选中“运行时32位‘,再点击上面的脚本,后有一个脚本生成,然后将这个脚本copy,接着

打开找作业对应的属性,找到选项页的步骤,点击”编辑“,出现一个新的窗口,选择”类型“为Transact_SQL(脚本)将刚才copy的脚本放到这里的命令文本框,就OK了。

question13:

在包执行时候,要验证选择运行时为32位即可。

ORACLE 的blob对应SQLSERVER里面的varcharbinary(max),SSIS包里面(如果要将Oracle)的数据类型转换为SQLSERVER的数据类型就用DB_BYTES.

question14.:政务服务里面的办件表报错:SSIS包运行时各个组件执行都没有报错,但是最后的结果显示报错

解决方案:可能是SSIS的日志记录找不到数据源报错,找到SSIS包日志记录的地方选择其中的一个数据源。

question15:如果先有环节表,再有意见表,先插入环节表在插入意见表。在ssis里面怎么搞?不知道我做的有没有问题。

目的端两个表需要的信息在源端是一个表,但是目的端的这两个表之间有主外键关系。这个怎么搞?

解决方案:

              弄2个序列容器,第一个序列容器里面放主表,第二个表里面放含有外键的表,

             可以把这两个表看做是单独的表。如果目的端表有主外键关系的,可以用容器来控制先后执行顺序

question16:ssis乱码问题:

   解决方案:设置互相迁移的数据库的编码方式一致。SQLSERVER设置数据库的排序规则,然后去数据库表里面设置每个字段的排序规则为windows默认的排序规则,Oracle设置字符集或者在源端查询的时候就设定排序规则,用到的关键字是collate。

question17:

--0

Declare @execution_id bigint

EXEC [SSISDB].[catalog].[create_execution] @package_name=N'EXCHANGE_HN_ZWFW_SXDY.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'HKZWFW', @project_name=N'ZWFW', @use32bitruntime=True, @reference_id=Null

Select @execution_id

DECLARE @var0 smallint = 1

EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0

EXEC [SSISDB].[catalog].[start_execution] @execution_id

go

question19:SQLSERVER的OLEDB命令不自动根据更新 语句的更新字段个数添加目标列的问题:

  SSIS工具的问题:当我们把修改表的字段添加或者删除的时候出现,列映射时候OLEDB输入输出的外部列不自动更新需要我们自己添加,添加的是中文的列1,列2,列0,列4,列7,类似这样的顺序。我们在列映射的正确的列映射关系:从上到下参数的顺序依次递增,不用考虑列后面的数字,更新语句里面的第一个参数对应参数列表中的第一个参数(此种情况适用于生成的参数列是中文情况)这也许是SSIS的一个bug.

question19:ssis性能优化:

设置数据流的任务的2个参数DefaultMaxBufferSize和DefaultMaxBufferRows来提高最大屯哭能力。这些设置控制了在数据读取操作过程中创建缓存的大小,以及每次传递的记录行数。参数如何调整还未知??question20:SSIS连接Oracle需要注意的地方:

解决方案:在写查询的时候,尽量 select 字段名 from 表名。最好不要带 用户名.表名,这样性能会高一些。

推荐 0
本文由 xiaoyaya 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册