[SQL SERVER][TSQL]sp_MSforeachdb

[SQL SERVER][TSQL]sp_MSforeachdb

sp_MSforeachdb 可以很輕易的列出所有資料庫相關資訊,

你可以在 master 系統資料庫中看到這個 store procedure (使用 cursor 操作),

下面我列出幾個滿實用的 command。

 

1.列出所有資料庫中的所有資料表

declare @mysql varchar(4000)
set @mysql='use ? select OBJECT_NAME(object_Id) as ''資料表名稱'',
DB_NAME() as ''資料庫名稱'' 
from sys.tables where DB_NAME() 
not in (''master'', ''model'', ''msdb'', ''tempdb'',''ReportServer$SQL2008'',''ReportServer$SQL2008TempDB'')' 
EXEC sp_MSforeachdb @mysql

 

image

(擷取部份)

 

2.列出SQL Server 執行個體上所有資料庫名稱

EXEC sp_MSforeachdb 'USE ? PRINT DB_NAME()'

 

image

(擷取部份)

 

3.列出SQL Server 執行個體上所有資料庫大小

EXEC sp_MSforeachdb 'USE ? EXEC sp_spaceused'

 

image

(擷取部份)

 

4.列出SQL Server 執行個體上所有資料庫實體檔案路徑和相關屬性

EXEC sp_MSforeachdb 'USE ? EXEC sp_helpfile;'

image

(擷取部份)

 

5.檢查SQL Server 執行個體上所有資料庫中所有物件的邏輯完整性和實體完整性

EXEC sp_MSforeachdb 'DBCC CHECKDB(?)'

 

 

 

 

6.變更所有資料庫 owner 為 sa

EXEC sp_MSforeachdb 'USE ? EXEC sp_changedbowner ''sa'''

 

 

 

參考

http://www.sqlservercurry.com/2009/04/6-common-uses-of-undocumented-stored.html