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