SQL Server Service Broker - 处理特定模式中的存储过程

SQL Server Service Broker - Processing stored procedures in specific schema

我目前正在从事一个新项目,我希望在该项目中动态地自动执行数据库中特定模式内的所有存储过程。我希望能够简单地将存储过程添加到特定模式(例如构建),并有一个按设定时间表运行的过程,该过程简单地遍历模式中的所有存储过程,并并行运行它们。

我们已经构建了一个现有的自定义 ETL 系统,它可以让我们设置一堆作业,这目前依赖于使用多个代理作业,这些作业获取存储过程并执行它们。我希望我们的新项目使用更好的东西,并且认为 Service Broker 将是答案。

我调查了这个产品:http://partitiondb.com/go-parallel-sql/ 它似乎提供了一些 pre-built 代码,可以让我 queue 启动程序,但是我无法提取数据库他们提供,显然它有一个损坏的 header :-(

我是服务代理领域的新手,在弄清楚如何自动获取一些内容以 queue 一堆并行执行的存储过程时遇到了一些困难。

如有任何帮助,我们将不胜感激。

干杯

套用我最喜欢的诗人之一 - "mo' tech, mo' problems"。 Service Broker 是异步处理的一个很好的解决方案,但它似乎不太适合这里。具体来说,如果您想要做的只是 运行 一组(可能未知的)计划存储过程,动态 SQL 似乎更适合我。类似(未经测试)

create or alter procedure dbo.gottaRunEmAll
as
begin
    declare p cursor fast_forward, local for
    select name
    from sys.objects
    where schema_id = schema_id('Build');

    open p;

    declare @name sysname, @sql nvarchar(max);

    while(1=1)
    begin
        fetch next from p into @name;
        if (@@rowcount <> 0)
            break;
        set @sql = concat('exec [Build].', quotename(name), ';');
        exec(@sql)
    end
    close p
    deallocate p
end

更好的(imo)是显式维护上述过程以调用您想要的过程以及您想要的方式。