Posted by Erland Sommarskog on 02/07/07 22:35
SQLJunkie (vsinha73@gmail.com) writes:
> I have a small SQL script that rotates through all databases on the
> server and executes a Stored Procedure in each of them. Here are the
> steps:
> 1: The first step is to get name of databases in to a cursor.
> 2: Build dynamic SQL to change database to database in variable - this
> step fails
> 3: Execute SP
> 4: Move to next database.
> Is it not possible to change current database using Dynamic SQL? Can
> someone help me here please?
Yes, but the effect of the USE lasts only for the duration of the of the
dynamic SQL.
> SELECT
> @SQL = 'USE ' + @DatabaseName
>
> EXEC(@SQL)
>
> ----- SQL Statement to be run
> EXEC dbo.SPName
If all you want to do is to run a stored procedure in each database,
this is the easiest way to do:
SELECT @SPname = @DatabaseName + '.dbo.SPName'
EXEC @SPname
You may also be interested in sp_MSforeachdb:
EXEC sp_MSforeachdb 'EXEC ?.dbo.SPNAme'
This procedure is undocumented and unsupported, but it's nevertheless
fairly popular.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
[Back to original message]
|