如何在服務器的所有數據庫中搜索給定的列名稱(例如'%tag%'
)?搜索並列出SQL Server 2012的所有數據庫中的列名稱
尋找一些結果,如:
Database TableName ColumnName
-----------------------------------------------
我從所有數據庫中的一個鏡頭,而不僅僅是一個單一的數據庫所需。
如何在服務器的所有數據庫中搜索給定的列名稱(例如'%tag%'
)?搜索並列出SQL Server 2012的所有數據庫中的列名稱
尋找一些結果,如:
Database TableName ColumnName
-----------------------------------------------
我從所有數據庫中的一個鏡頭,而不僅僅是一個單一的數據庫所需。
declare @query nvarchar(max), @crlf nvarchar(2), @columnName nvarchar(50)
set @query=''
set @crlf=char(13)
/*Set the name you are searchng*/
set @columnName='%tag%'
SELECT @[email protected] + 'select '''+name+''' as ''Datadase'', t.name as ''Table'', c.name as ''Column''
from ['+name+'].sys.tables t
inner join ['++name+'].sys.columns c on t.object_id=c.object_id
where c.name like '''+ @columnName +''' union all'+ @crlf +char(13)
FROM master.dbo.sysdatabases
set @query=left(@query,len(@query)-len(' union all'+ @crlf))
exec (@query)
試圖SELECT t.name FROM sys.tables t INNER JOIN sys.columns c on t.object_id = c.object_id WHERE c.name類似'%tag%'但不返回任何內容。我是否選擇主人?我想我確實需要動態的。 – Bill
在這裏,你會得到一個完整的答案。 – Horaciux
謝謝。出現以下錯誤:消息451,級別16,狀態1,行1 無法解析SELECT語句列2中發生的UNION ALL運算符中的「Latin1_General_CI_AS_KS_WS」和「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突。 Msg 451,Level 16,State 1 ,第1行 無法解析SELECT語句第3列中出現的UNION ALL運算符中的「Latin1_General_CI_AS_KS_WS」和「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突。 – Bill
的[查找包含柱,用指定的名稱的所有表]可能的複製(http://stackoverflow.com/questions/4849652/find-all-tables-containing-column-with-specified-name) –