嘗試這一個 -
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((
SELECT CHAR(13) + 'SELECT ''' + d.name + ''', name, object_id FROM [' + d.name + '].sys.objects WHERE type = ''U'''
FROM sys.databases d
WHERE d.state_desc != 'OFFLINE'
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '')
PRINT @SQL
EXEC sys.sp_executesql @SQL
輸出 -
db name object_id
------ -------------------------------------- -----------
master spt_monitor 68195293
master spt_fallback_db 117575457
master spt_fallback_dev 133575514
master spt_fallback_usg 149575571
master MSreplication_options 1787153412
db name object_id
---- -------------------------------------- -----------
msdb sysmail_profile 14623095
msdb syscollector_config_store_internal 23671132
msdb DTA_reports_queryindex 38291196
我需要得到數據庫ID的基礎表列表。 –
該列表將針對您所在的數據庫提供 - 因此您需要首先連接到該數據庫/目錄。如果你想要所有dbs的表,你可以這樣做:'sp_msforeachdb'select''?''dbName,db.database_id,t。* from sys.databases db cross join [?]。sys.tables t where db。名稱=「」?「」'' – JohnLBevan