Tuesday, February 13, 2007

Execute Some SQL Statement on All databases

Many a times I need to run the same SQL statement (like DBCC statements or sp_UpdateStats) on all databases of the server. Instead of having to write code manually for all databases, i use this script that does the work for me...

** Please change value for @SQL to desired SQL code.

----- EXECUTE SQL Statement on all Databases

DECLARE
@DatabaseName nvarchar(100)
, @SQL nvarchar(500)

DECLARE DBNameCursor CURSOR FOR
SELECT
[Name] AS DatabaseName
FROM
master.dbo.sysdatabases
ORDER BY
DatabaseName

OPEN DBNameCursor

FETCH NEXT FROM DBNameCursor
INTO @DatabaseName

WHILE @@FETCH_STATUS = 0
BEGIN
----- SQL Statement to be run
--EXEC dbo.sp_UpdateSats
SELECT
@SQL = 'EXEC dbo.sp_updatestats '

--EXEC sp_executeSQL @SQL
EXEC sp_executeSQL @SQL

FETCH NEXT FROM DBNameCursor
INTO @DatabaseName
END

CLOSE DBNameCursor
DEALLOCATE DBNameCursor

No comments: