在sql server中并行运行自动生成的脚本

时间:2014-12-31 06:59:29

标签: sql-server ssis

我正在创建一个自动测试跨服务器的数据库表一致性的过程。 我有一个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包:

enter image description here

在预执行中,它会接受尚未完成的测试。

每个作业运行并将实时表的名称写入op_table字段

在后执行中,实时表被复制到测试数据库环境,表名被放入test_table ..并且只在那里执行测试。

这里的作业正在循环运行......有没有办法让作业并行运行,因为它们彼此独立.... 我可以在这个循环中为此编写一个sql过程,还是有其他方法可以做到这一点.. 欢迎任何新想法...... 非常感谢.. :))

1 个答案:

答案 0 :(得分:0)

非常粗略,我会把方法如下:

  • SQL位

包装任何SQL代码的一部分" job"进入存储过程。在此proc中,填充一个负责SQL位的变量并使用动态SQL执行它。更新同一个proc中的作业状态,并获取TRY-CATCH-THROW construct。

的帮助

以分隔方式填充SSIS字符串变量中的包名称(或者有一个对象变量,适合您)。然后,在脚本任务中,遍历包列表并使用dtExec命令触发它们。要更新作业状态,最好让被调用的包处理作业状态更新。如果这不是一个选项,请使用Try-catch构造,根据更新作业状态。 This是一个有用的链接。

检查SSIS包之上的job_type变量(使用优先约束)并将它们路由到正确的块中。