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 表名。最好不要带 用户名.表名,这样性能会高一些。