1

我正在使用SQL Server 2008 R2. 我有不同five databases on the same server.的 Thetables and stored procedure schema of all of them are the same但是data are different我已经将它们指向不同的站点。现在,我想创建一个sql job每天晚上 9:30 运行的。并从数据库表中获取数据并将其存储到临时表中。还有一项将临时表的数据写入 LOG 文件的 sql 作业。

two different stored procedures为此创建了一个-一个获取数据,另一个写入它,并且每个数据库都可以正常工作。

但问题是,在 sql server 代理中,我不想为每个获取存储过程名称并执行它的数据库创建 2 个 SQL 作业(总共 10 个 sql 作业)。取而代之的是,我想创建ONLY TWO SQL JOBS. 一个将执行存储过程以将数据提取到临时表中,另一个将在第一次完成后执行,并将数据写入服务器中每个数据库的单独目录的日志文件中。

如题,我在所有五个数据库中的存储过程名称和表名称都相同,这可能吗?

4

2 回答 2

1

我的建议是创建一两个作业并使用动态 sql 循环运行 sp。您可以通过 exec [Database1].[dbo].usp_procedurename @parametr1 运行另一个数据库中可用的 sp。

于 2013-03-29T08:33:38.017 回答
0

我相信sp_MSforeachdb会解决你的目的。将其与 If 子句配对以选择/忽略某些数据库。

DECLARE @command varchar(1000)

SELECT @command = 'IF ''?'' IN(''myDB1'', ''myDB2'', ''myDB3'') BEGIN USE ? Select db_Name() END'

--Print @command

EXEC sp_MSforeachdb @command 
于 2017-03-14T21:08:44.863 回答