The stored procedure is undocumented and can be removed at any time, so use it carefully.
It is used to run a command over a set of databases in a server.
The stored procedure receives a parameter with the command to execute. The ? is used as a placeholder to identify the current database name listed by the stored procedure.
Some common scenarios where it can be used are:
1. Print all the database names, excluding the master,tempdb, model and msdb:
EXEC sp_msforeachdb "IF '?' NOT IN ('master','tempdb', 'model', 'msdb') BEGIN PRINT '?' END"
2. Show the size of all the database
EXEC sp_MSforeachdb 'USE ?; EXEC sp_spaceused'
3. Check the integrity of all objects in the database
sp_MSforeachdb 'DBCC CHECKDB(?)'
4. Retrieve database physical files information excluding the master,tempdb, model and msdb:
EXEC sp_msforeachdb 'IF ''?'' NOT IN (''master'',''tempdb'', ''model'', ''msdb'') BEGIN SELECT name,physical_name,state,size FROM [?].sys.database_files END'
5. Retrieve database physical files information excluding the master,tempdb, model and msdb to a table:
DECLARE @DbSize TABLE ( mame NVARCHAR(50), physical_name NVARCHAR(500), size INT, growth INT, is_percent_growth BIT, type_desc NVARCHAR(10) ) INSERT INTO @DbSize EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''master'', ''tempDB'',''model'',''msdb'') BEGIN SELECT name,physical_name,size, growth, is_percent_growth, type_desc FROM ?.sys.database_files END' SELECT * FROM @DbSize
No comments:
Post a Comment