2016-12-14 73 views
1

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

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

我已经完成了我的谷歌搜索和搜索,但所有的错误处理或检查方法,我可以找到执行SQL任务或数据转换任务。因此,如果任何人都可以解决我的上述案件,我会深表感谢。

谢谢。

+0

这听起来像是BIML的工作。 BIML允许您基于元数据即时创建软件包 –

回答

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命令验证从包开始推迟到特定任务执行。某些任务(对于缺失的表)将不会执行;因此,它不会被验证,并且不会激发验证错误。