有一个Information_Schema架构,它是对 SYS 架构中的表的一组视图,您可以查询这些视图以获取所需的内容。 Information_Schema的缺点是必须为每种类型的对象编写一个查询。好处是,Information_Schema也更友好地阅读。 Sys 架构最初看起来有点神秘,但它在单个位置具有相同的信息。 基本上,每个数据库中都有一个名为 SysObjects 的表,该表具有所有对象及其类型的名称。 因此,您需要在数据库中搜索如下:
Select [name] as ObjectName, Type as ObjectType
From Sys.Objects
Where 1=1
and [Name] like '%YourObjectName%'
现在,如果要将此限制为仅搜索表和存储的 procs,则可以执行
Select [name] as ObjectName, Type as ObjectType
From Sys.Objects
Where 1=1
and [Name] like '%YourObjectName%'
and Type in ('U', 'P')
如果查找对象类型,将查找视图、触发器等的完整列表。 现在,如果要在每个数据库中搜索此数据,则必须遍迭代数据库。您可以执行以下操作之一: 如果要在没有任何子句的情况下搜索每个数据库,请使用sp_MSforeachdb,如此处的答案所示。 如果只想搜索特定数据库,请使用"USE DBName",然后搜索命令。 在这种情况下,您将从参数化中获益匪浅。请注意,您搜索的数据库的名称必须在每个查询中替换(数据库一、数据库二...)。看看这个:
Declare @ObjectName VarChar (100)
Set @ObjectName = '%Customer%'
Select 'DatabaseOne' as DatabaseName, [name] as ObjectName, Type as ObjectType
From DatabaseOne.Sys.Objects
Where 1=1
and [Name] like @ObjectName
and Type in ('U', 'P')
UNION ALL
Select 'DatabaseTwo' as DatabaseName, [name] as ObjectName, Type as ObjectType
From DatabaseTwo.Sys.Objects
Where 1=1
and [Name] like @ObjectName
and Type in ('U', 'P')
UNION ALL
Select 'DatabaseThree' as DatabaseName, [name] as ObjectName, Type as ObjectType
From DatabaseThree.Sys.Objects
Where 1=1
and [Name] like @ObjectName
and Type in ('U', 'P')
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。