0

我在一个文件夹中有许多 Transact-SQL (SQL 2005) 脚本,旨在作为一个完整的独特作业运行。我想根据文件名(具有许多 *.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 Tool 来合并和运行它们,或者(对我来说更好)一个运行存储过程的示例。

请注意,在其中一些“子作业”中可能有一个存储过程,那么我想防止由于定义的存储过程并在其他存储过程中运行(如果有的话)而引起的问题。

对于这个非常直截了当的问题,我感到非常抱歉,但是在使用不同的关键词多次查询 Google 之后,在查看了标准的 transact-SQl 语句(MSDN 网站)之后,我找不到正确的答案,我认为这应该是在 SQL 数据库上运行任务的“通常方式”,可能我遗漏了一些东西,我找不到什么。

谢谢!

4

1 回答 1

0

如果您在脚本之间共享变量,您可能需要调查Sql Sever Integration Services (SSIS)。

您可以控制脚本之间的数据流,为事物运行的顺序设置条件“路由”,以及执行此任务可能不需要的更多功能。

如果由于某种原因不能使用 SSIS,为什么不在 Sql Server Agent 中创建一个新作业并将每个脚本添加为作业中的一个新步骤呢?如果您需要从一个保存结果以在另一个中使用,也许只需创建一个表来在工作期间保存这些值,并让最终脚本按原样“在退出时”将它们删除。

于 2012-05-16T13:39:41.687 回答