当前位置: 首页 > 知识库问答 >
问题:

在所有数据库中搜索列名

蒋弘致
2023-03-14

我有一个查询,可以查找与某个数据库的列名匹配的所有表和视图。我正在使用SQL SERVER 2008

SELECT table_name FROM information_schema.columns
WHERE column_name = 'product_name'

我想扩展查询的功能,以便在所有数据库中搜索,甚至查找具有我搜索的列名的存储过程。

共有3个答案

梁晋鹏
2023-03-14

在数据库中查找代码,我发现的最简单的方法是在每个数据库中放置一个带有以下SQL的视图,然后放入一个主视图,在数据库中对它们进行UNIONs。如果你有很多数据库或一些你不能触摸的数据库,这有点痛苦,但在其他方面对我来说很好。

select
    s.name as SchemaName,
    objs.name as ObjectName,
    objs.ObjectType,
    OBJECT_DEFINITION(objs.object_id) AS ObjectDefinition
from
    (SELECT object_id, name, 'Proc' as ObjectType
    FROM    sys.procedures p
        UNION
    select  object_id, name, 'View'
    from    sys.views 
        UNION
    SELECT  object_id, Name, type
    FROM    sys.objects o
    WHERE   o.[type] IN ('fn', 'fs', 'ft', 'if', 'tf')) objs
    inner join sys.objects o
        on objs.object_id=o.object_id
    inner join sys.schemas s
        on o.schema_id=s.schema_id

列(就像在服务器上任何数据库的抽象表中查找列一样),您可以做同样的事情,只需合并信息架构,但这对我想要的不起作用,所以我正在寻找一个更通用的解决方案-如果我找到它,将添加它!

龚鸿雪
2023-03-14

您可以使用此查询查找SP/视图或函数中使用的字段名

SELECT 
    OBJECT_NAME(object_id) as 'Procedure/Function/View Name',
    definition
    --,*
FROM sys.sql_modules
WHERE 
    ( definition LIKE '%' + '<Your_Field_Name>' + '%' )
邢献
2023-03-14

脚本将在所有数据库的所有表中搜索您的列。

Create table #yourcolumndetails(DBaseName varchar(100), TableSchema varchar(50), TableName varchar(100),ColumnName varchar(100), DataType varchar(100), CharMaxLength varchar(100))

EXEC sp_MSForEachDB @command1='USE [?];
    INSERT INTO #yourcolumndetails SELECT
    Table_Catalog
    ,Table_Schema
    ,Table_Name
    ,Column_Name
    ,Data_Type
    ,Character_Maximum_Length
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME like ''%yourcolumnname%'''

select * from #yourcolumndetails
Drop table #yourcolumndetails 
 类似资料:
  • 问题内容: 考虑有一个名为的表: 该表在PeopleDb数据库中 现在,我想找到“ Mike”关键字。情况 : 我不知道要搜索哪个数据库,表。 我需要一个查询,它在所有数据库和表中进行搜索, 并向我显示以下内容: | Id | DatabaseName | TableName | ColumnName | Pk | SearchValue | 1 | ‘PeopleDb’ | ‘People’ |

  • 问题内容: 我想从MySQL数据库的所有表的所有字段中搜索给定的字符串,可能使用如下语法: 有可能做这样的事情吗? 问题答案: 您可以浏览模式。它具有所有表和表中所有字段的列表。然后,您可以使用从该表获得的信息来运行查询。 涉及的表是SCHEMATA,TABLES和COLUMNS。有一些外键,使您可以准确地建立在模式中创建表的方式。

  • 问题内容: 该查询将在数据库中搜索特定的列名。我想更进一步,并在返回的列中搜索特定值。 有任何想法吗? 非常感谢 问题答案: 没有此类搜索的系统表。鉴于您可以尝试此目的 谢谢 马诺吉

  • 问题内容: 我目前正在尝试完成一个项目,其中的规范是使用搜索表单来搜索包装数据库。该数据库具有许多变量,包括大小,名称,类型和肉类。我需要创建一个搜索表单,用户可以在其中使用多种不同的搜索进行搜索(例如搜索50厘米长的盖子托盘)。 我花了整整一天的时间来尝试创建一些PHP代码,这些代码可以在我创建的测试数据库中搜索信息。我遇到了许多错误,从mysql_fetch_array错误,布尔错误到现在,我

  • 问题内容: 如何在SQL Server中搜索表的所有列? 问题答案: 如果您正在寻找完全的全场比赛。如果要查找子字符串匹配项,则必须进行很长的路要走:

  • 问题内容: 如何在给定数据库的所有存储过程中全局搜索关键字? 我使用了以下内容,但无法获得预期的结果… 问候-Vas 问题答案: 看一下此链接-http: //www.sqlservercentral.com/scripts/T-SQL+Aids/31131/,看看是否有帮助。 链接文章中的SP由Prasad Bhogadi编写,内容如下: 您可以使用它在数据库中创建一个SP或使其适应一次查询。