我在一个文件夹中有许多Transact-SQL(SQL 2005)脚本,意味着作为一个完整的唯一Job运行。 我想基于文件名(带有许多* .sql文件的文件系统文件夹)以有序的方式依次运行它们作为“预定子作业”(单击运行),例如:
01_init_vars.sql
05_create_this_thing.sql
10_create_another_thing.sql
15_calculate_this_value_based_on_today_date.sql
20_create_that_thing.sql
25_summarize_finish.sql
每个SQL脚本都作用于数据库的不同部分,有时它们使用相同的表,但它们在不同的时间戳中处于不同的“逻辑级别”(即我需要先运行一个脚本,然后运行另一个脚本等) )。 所有这些脚本共享“环境变量”,我想在第一个脚本中只设置一次,并将它们用作“SQL会话变量”,例如:
DECLARE @Username NVARCHAR(100)
SET @Username = 'Blahblahblah'
我想知道是否有一个Microsoft SQL Server Management Studio工具可以合并并运行它们,或者(对我来说更好)一个存储过程的例子来运行。
请注意,在其中一些“子作业”中可能存在存储过程,然后我想预先确定由于存储过程定义的问题并在其他存储过程中运行(如果有的话)。
对于这个非常直截了当的问题,我很抱歉,但在查询Google很多次使用不同的关键词后,在查看标准的transact-SQl语句(MSDN网站)后,我无法找到合适的答案,我认为这应该是在SQL数据库上运行任务的“通常方式”,可能是我遗漏了一些东西而且找不到。
谢谢!
答案 0 :(得分:0)
如果您在脚本之间共享变量,则可能需要调查Sql Sever Integration Services(SSIS)。
您可以控制脚本之间的数据流,为事物运行的顺序设置条件“路由”以及您可能不需要执行此任务的更多内容。
如果由于某种原因无法使用SSIS,为什么不在Sql Server Agent中创建一个新作业并将每个脚本添加为作业中的新步骤?如果你需要保存一个用于另一个的结果,也许只需创建一个表来保存作业持续时间的这些值,并让最终的脚本“在出路”中删除它们。