select 'union all select ''' + name + ''' as dbname, s.name + ''.'' + o.name + ''.'' + c.name collate database_default as colname
from ' + quotename(name) + '.sys.columns as c
join ' + quotename(name) + '.sys.objects as o
on o.object_id = c.object_id
join ' + quotename(name) + '.sys.schemas as s
on s.schema_id = o.schema_id
where c.name like ''%name%'' collate database_default '
from sys.databases;
您希望能够
sys.columns
在每个数据库中进行查询。为此,请尝试:然后将你得到的列复制到一个新窗口中,去掉前面的“union all”,然后运行它。:)
如果要排除视图 (
TABLE_TYPE = 'BASE TABLE'
),请加入 TABLES 视图。如果您查询
sysdatabases
,或者sys.databases
您可以构造 SQL 来在每个数据库中执行此查询。只需创建一个行集,您可以将其复制并粘贴回查询窗口。