tit*_*ium 9 t-sql metadata sql-server-2005
我想在SQL Server 2005中列出特定数据库的所有对象.我创建了一个查询,如下所示:
select name, type_desc from sys.objects
WHERE type in ( 'C', 'D', 'F', 'L', 'P', 'PK', 'RF', 'TR', 'UQ', 'V', 'X' )
union
select name, type_desc from sys.indexes
order by name
Run Code Online (Sandbox Code Playgroud)
但是,此查询列出了所有数据库的所有对象,而不是特定数据库.
我的问题是:有没有办法查询特定数据库的所有对象?如果是的话,请你告诉我该怎么做?
这就是我用的。
SELECT o.type_desc AS Object_Type
, s.name AS Schema_Name
, o.name AS Object_Name
FROM sys.objects o
JOIN sys.schemas s
ON s.schema_id = o.schema_id
WHERE o.type NOT IN ('S' --SYSTEM_TABLE
,'PK' --PRIMARY_KEY_CONSTRAINT
,'D' --DEFAULT_CONSTRAINT
,'C' --CHECK_CONSTRAINT
,'F' --FOREIGN_KEY_CONSTRAINT
,'IT' --INTERNAL_TABLE
,'SQ' --SERVICE_QUEUE
,'TR' --SQL_TRIGGER
,'UQ' --UNIQUE_CONSTRAINT
)
ORDER BY Object_Type
, SCHEMA_NAME
, Object_Name
Run Code Online (Sandbox Code Playgroud)
列出 Sql Server 中的所有过程、视图、表、函数:
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
--WHERE '.' + m.definition + '.' LIKE '%[^a-z]employeeid[^a-z]%'
order by type_desc, object_name
Run Code Online (Sandbox Code Playgroud)
注释是您是否要搜索特定(整个)单词。