我正在创建一个自动测试跨服务器的数据库表一致性的过程。 我有一个test_master表,其中包含以下列:
test_id, test_name, test_status
和Job_master表,其中包含以下列:
jid, test_id, job_name, job_type, job_path, job_status,
server_ip, db, error_description, op_table, test_table,
copy_status, check_status
特定测试可以有多个作业。作业是逻辑作业(而不是sql代理作业),它们可以是脚本,过程或ssis包。 所以我做了一个ssis包:
在预执行中,它会接受尚未完成的测试。
每个作业运行并将实时表的名称写入op_table字段
在后执行中,实时表被复制到测试数据库环境,表名被放入test_table ..并且只在那里执行测试。
这里的作业正在循环运行......有没有办法让作业并行运行,因为它们彼此独立.... 我可以在这个循环中为此编写一个sql过程,还是有其他方法可以做到这一点.. 欢迎任何新想法...... 非常感谢.. :))
答案 0 :(得分:0)
非常粗略,我会把方法如下:
包装任何SQL代码的一部分" job"进入存储过程。在此proc中,填充一个负责SQL位的变量并使用动态SQL执行它。更新同一个proc中的作业状态,并获取TRY-CATCH-THROW
construct。
以分隔方式填充SSIS字符串变量中的包名称(或者有一个对象变量,适合您)。然后,在脚本任务中,遍历包列表并使用dtExec
命令触发它们。要更新作业状态,最好让被调用的包处理作业状态更新。如果这不是一个选项,请使用Try-catch
构造,根据更新作业状态。 This是一个有用的链接。
检查SSIS包之上的job_type
变量(使用优先约束)并将它们路由到正确的块中。