我们有一台包含大量数据的 AIX 服务器,我们每晚都会将这些数据转储到 CSV 中,以便导入到 MS SQL Server 中用于报告目的。
目前,流程中的每个步骤都是无关联的,并且只是按时间触发 - 例如,AIX 系统上的 CSV 转储流程于凌晨 3 点开始,需要 $x 时间才能完成,然后 MS SQL Server Integration Services 作业于凌晨 6 点开始。
因此,该过程中会产生大量的“死时间”,最好将其消除。
那么,有没有办法从 Unix 系统触发 SQL Server Integration Services 作业?
答案1
答案2
一种简单的方法是轮询。如果您在 ssis 数据包的开头添加一个元素“如果 csv 文件存在,则导入 csv 文件”,则可以安排数据包每 15 分钟运行一次。
答案3
SSIS 在基础系统中不直接支持此类功能。有两种选择:
在 Windows 端构建一个轮询器,查找一些表明 unix 作业已完成的迹象,然后运行 SSIS 包。如果文件生成需要一些时间,则应将作业包装在某个内容中,以便在完成时更新另一个文件的时间戳。另一个选项是让轮询器扫描目录并查找每次运行时创建的新控制文件。如果轮询器在午夜到凌晨 4 点之间每 5 分钟运行一次(比如说),它将以最小的延迟接收作业。如果它没有在合理的时间内接收文件,您可以假设在生成文件时出现了问题并导致任务失败。
购买跨平台调度工具,例如 Control-M。此类系统旨在协调跨多个平台的作业。但是,企业调度程序非常昂贵,而且对于单个作业来说可能有点过头了。如果您遇到很多此类问题,您可能会考虑使用此类系统,但对于单个任务来说,这真的是用大锤砸核桃。
答案4
SSIS 包使用 dtexec 运行。因此,如果您已经拥有从 AIX 在 Windows 端触发进程的任何方法,则可以使用相同的技术在 SQL Server 上启动 SSIS 包。