question21::一个用户在一台机器上写的SSIS移植到另一台机器上,报错的问题
解决方案:设置项目的一个属性ProtectionLevel 为DontSaveSensitive,然后设置包的ProtectionLevel 属性为DontSaveSensitive
question22:[SSIS.Pipeline] 错误: OLE DB 源 在执行前阶段失败,返回的错误代码为 0x80040E21。解决方案:hj_name=hj_name collate Chinese_PRC_CI_AS
question23:ETL优化问题
ETL优化大的方面从3个方面考虑:
1)优化数据源
2)数据流优化
3)插入性能优化
优化数据源
(1) 删除不需要的列; (2) 优化数据源查询; 2清除隐藏的操作 (1) 只在必要的时候进行列的解析或转换; (2) 清除不必要的日志记录;
数据流优化
(1)使用索引; (2)清楚不必要的操作 (3) 将查找引用配对; 避免使用“select * from ” (4)近可能的在SQL Server中执行以数据集为基础的操作。例如:在SQL Server中比“排序”转换组件速度要快,特别是有索引时 (5) 有些开销比较大的组件慎用:如:OLEDB命令、模糊查找、数据转换、导出列/到入列、字词查找。 (6)消除“聚合”,“查找”,“排序”操作 SSIS优化----数据流优化
插入性能优化
(1) 使用“SQL SERVER 目标”适配器; (2)关闭约束; (3)删除“日志记录”; (4) 再加载时考虑禁用索引;question23:文件的copy,解压缩问题
executable是要执行的EXE文件的路径,argument是要执行的文件的原始文件夹,目标文件夹question24:SSIS典型应用场景
1.合并来做异类数据存储区(txt,xml,excle)的数据
2.填充数据仓库和数据集市
3.清楚数据和数据标准化
4.将商业智能置入数据转换过程
5.使管理功能和数据加载自动化
原始文件源如XML文件。
question25:将一个文件夹下面的excle数据导入数据仓库,用foreach循环或者for循环。
我现在的需求:我的excle文件命名是年月形式的,比如201409,年份是2014,月份是9月。将年月转换为int然后分别存数数据库的两个int类型字段中。
网上给的解决方案:
Excel读取出来的时候 默认可以设置第一行是列名。
在 DataFlow数据流 Excel Source的地方,可以在预览页面看到你所加载到的所有Excel列。然后从 Control List里拖一个 OleDbDestination, 建立 她两之间的关系 这时候打开 OleDbDestination就能看到 你对应的数据匹配。
获取文件名的方式:执行脚本任务,
然后编辑脚本:Dts.TaskResult = (int)ScriptResults.Success;
MessageBox.Show(Dts.Variables["v1"].Value.ToString());//弹出文件名
MessageBox.Show();
//MessageBox.Show(Dts.Variables["v1"].Value.ToString());
Int32 year =Convert.ToInt32(Dts.Variables["v1"].Value.ToString().Substring(0,4));
MessageBox.Show("----"+year);