gpt4 book ai didi

sql - 从具有指定列名的所有表和所有数据库中查找列名 SQL Server

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:03 26 4
gpt4 key购买 nike

我有几个数据库,我想从我的所有数据库中的所有表中找到一个列名。

这个查询只给我一个数据库中所有表的列表,但我想要所有数据库名称和所有表名称

SELECT 
t.name,c.name
FROM
sys.tables t
INNER JOIN
sys.columns c ON c.object_id = t.object_id
WHERE
c.name LIKE '%CUSTOMERID%'

谢谢

最佳答案

有时 sp_foreachdb 会跳过数据库。请记住,这是一个未记录的系统过程,因此其中可能存在错误。对于这样的事情,我更喜欢一些动态的 sql。它的代码并不比未记录的游标多多少,但它更准确。

declare @SQL nvarchar(max) = ''

select @SQL = @SQL + 'SELECT ''' + d.name + ''' as DatabaseName, t.name as TableName, c.name as ColumnName FROM ' + d.name + '.sys.tables t inner join ' + d.name + '.sys.columns c ON c.object_id = t.object_id WHERE c.name LIKE ''%CUSTOMERID%'' union all '
from sys.databases d
where d.name not in('master', 'tempdb', 'msdb', 'model', 'ReportServer', 'ReportServerTempDB')

set @SQL = left(@SQL, len(@SQL) - 10)

exec sp_executesql @SQL

关于sql - 从具有指定列名的所有表和所有数据库中查找列名 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com