2015-10-06 96 views
0

如何在服務器的所有數據庫中搜索給定的列名稱(例如'%tag%')?搜索並列出SQL Server 2012的所有數據庫中的列名稱

尋找一些結果,如:

Database   TableName   ColumnName 
----------------------------------------------- 

我從所有數據庫中的一個鏡頭,而不僅僅是一個單一的數據庫所需。

+1

的[查找包含柱,用指定的名稱的所有表]可能的複製(http://stackoverflow.com/questions/4849652/find-all-tables-containing-column-with-specified-name) –

回答

0
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) 
+0

試圖SELECT t.name FROM sys.tables t INNER JOIN sys.columns c on t.object_id = c.object_id WHERE c.name類似'%tag%'但不返回任何內容。我是否選擇主人?我想我確實需要動態的。 – Bill

+0

在這裏,你會得到一個完整的答案。 – Horaciux

+0

謝謝。出現以下錯誤:消息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

相關問題