SSIS - 检查OLE DB源模式

时间:2016-12-14 19:38:11

标签: sql sql-server database ms-access ssis

我有一个ETL项目,我需要将数据从一个文件夹中的50K Access .MDB数据库加载到sql server。这些50K数据库文件的问题在于它们具有不同的模式,我需要ETL过程才能识别差异并正确响应。

例如,在某些.MDB文件中有表A,B和C.但是在其他一些表中只有表A和B(与其他表相比,表A和B相同,只是表C不见了)。我需要检查每个OLE DB源,看看有哪些表来实现像IF表A存在的逻辑,加载表A,否则,绕过负载。

我已经完成了我的谷歌搜索并搜索了但我能找到的所有错误处理或检查方法都用于执行SQL任务或数据转换任务。因此,如果有人能够解决上述案例的解决方案,我将深表感谢。

感谢。

1 个答案:

答案 0 :(得分:0)

简而言之 - SSIS假设元数据不会改变 但是,通过一些技巧,可以减少这种限制;以下是建议技巧列表:

  1. 测试特定表的存在(参见此处的示例How to use SQL to query the metadata in Microsoft Office Access? Like SQL Server's sys.tables, sys.columns etc)并根据结果 - 执行以下任务的条件执行。
  2. 对MS Access表的所有SQL请求都应将 DelayValidation 属性设置为 True 。原因 - 将SQL命令验证从包启动推迟到特定任务执行。某些任务(对于缺失的表)将不会被执行;因此,它不会被验证,也不会触发验证错误。