创建为同一服务器中的不同数据库运行的SQL作业

时间:2013-03-29 06:54:06

标签: sql sql-server sql-server-2008 sql-server-2008-r2

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

我为此创建了two different stored procedures -One获取数据和其他写入数据,并且两个数据库都正常工作。

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

因为,我在所有五个数据库中都有相同的存储过程名称和表名,是否可能?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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