[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
(擷取部份)
2.列出SQL Server 執行個體上所有資料庫名稱
EXEC sp_MSforeachdb 'USE ? PRINT DB_NAME()'
(擷取部份)
3.列出SQL Server 執行個體上所有資料庫大小
EXEC sp_MSforeachdb 'USE ? EXEC sp_spaceused'
(擷取部份)
4.列出SQL Server 執行個體上所有資料庫實體檔案路徑和相關屬性
EXEC sp_MSforeachdb 'USE ? EXEC sp_helpfile;'
(擷取部份)
5.檢查SQL Server 執行個體上所有資料庫中所有物件的邏輯完整性和實體完整性
EXEC sp_MSforeachdb 'DBCC CHECKDB(?)'
6.變更所有資料庫 owner 為 sa
EXEC sp_MSforeachdb 'USE ? EXEC sp_changedbowner ''sa'''
參考