Sql server SQL Server系统视图定义
是否有办法查看SSMS中的系统视图定义?我不认为使用SQLServerManagementStudio可以做到这一点 我想查看的视图定义示例:Sql server SQL Server系统视图定义,sql-server,ssms-2014,Sql Server,Ssms 2014,是否有办法查看SSMS中的系统视图定义?我不认为使用SQLServerManagementStudio可以做到这一点 我想查看的视图定义示例:[sys].[all\u sql\u modules] 多谢各位 编辑: 第一个查询运行良好,但我想看到的视图没有显示在这个查询中 select top 100000 object_definition(a.[object_id]) as [object_definition_results], b.[name] as [object_na
[sys].[all\u sql\u modules]
多谢各位
编辑:
第一个查询运行良好,但我想看到的视图没有显示在这个查询中
select top 100000
object_definition(a.[object_id]) as [object_definition_results],
b.[name] as [object_name],
b.[type],
case
when b.[type] = 'P' then 'SQL Stored Procedure'
when b.[type] = 'RF' then 'Replication-filter-procedure'
when b.[type] = 'V' then 'View'
when b.[type] = 'TR' then 'SQL DML Trigger'
when b.[type] = 'FN' then 'SQL Scalar Function'
when b.[type] = 'IF' then 'SQL inline table-valued function'
when b.[type] = 'TF' then 'SQL Table-Valued Function'
when b.[type] = 'R' then 'Rule (old-style, stand-alone)'
else ''
end as [Object Type Description]
from
[sys].[sql_modules] as a
inner join
[sys].[objects] as b
on
a.[object_id] = b.[object_id]
order by
[Object Type Description];
我也尝试过这个,但似乎视图甚至不在对象列表中。为什么会这样
select top 10000
a.*
from
[sys].[objects] as a
where
a.[name] like '%sql%module%'
order by
a.[name];
他们认为从对象资源管理器中的系统/目录视图的上下文菜单中删除脚本选项很有用,但他们保留了编辑前200行的选项。我觉得有人有点落后 在许多情况下,您可以通过以下两种方式之一获得:
SELECT OBJECT_DEFINITION(OBJECT_ID(N'sys.all_sql_modules'));
SELECT definition FROM sys.all_sql_modules
WHERE [object_id] = OBJECT_ID(N'sys.all_sql_modules');
但是,有时系统对象的定义不在master中(而是在中),只能使用查看,或者根本不在SQL Server中(想想xp\u cmdshell
)
为了查看过程的完整定义,您需要将结果转换为文本(结果转换为网格将把整个正文放在一行上),可能需要至少将默认结果转换为文本输出,最大值为8192个字符,如果这还不够,请切换回网格,然后重试
肯定会有人提出建议,但这并不总是有效的;而且,它的输出是不可靠的。他们认为从对象资源管理器中的系统/目录视图的上下文菜单中删除脚本选项很有用,这对我来说确实很奇怪,但他们保留了编辑前200行的选项。我觉得有人有点落后 在许多情况下,您可以通过以下两种方式之一获得:
SELECT OBJECT_DEFINITION(OBJECT_ID(N'sys.all_sql_modules'));
SELECT definition FROM sys.all_sql_modules
WHERE [object_id] = OBJECT_ID(N'sys.all_sql_modules');
但是,有时系统对象的定义不在master中(而是在中),只能使用查看,或者根本不在SQL Server中(想想xp\u cmdshell
)
为了查看过程的完整定义,您需要将结果转换为文本(结果转换为网格将把整个正文放在一行上),可能需要至少将默认结果转换为文本输出,最大值为8192个字符,如果这还不够,请切换回网格,然后重试
肯定会有人提出建议,但这并不总是有效的;而且,它的输出是不可靠的。我编辑了我原来的帖子。你给我的有用,但为什么在[sys].[sql_modules]或[sys].[objects]中找不到该视图?@午餐盒,因为它是一个系统视图
sys.sql\u模块
仅包含您创建的对象。查看sys.sql\u modules
的定义时,可以看到它与sys类似。除后者外,所有的sys.system\u sql\u modules
中的行也包含在内sys.all_sql_modules
本身就是一个系统模块,所以它不会出现在sys.sql_modules
中,因为它只包含非系统模块。我编辑了我的原始帖子。你给我的有用,但为什么在[sys].[sql_modules]或[sys].[objects]中找不到该视图?@午餐盒,因为它是一个系统视图sys.sql\u模块
仅包含您创建的对象。查看sys.sql\u modules
的定义时,可以看到它与sys类似。除后者外,所有的sys.system\u sql\u modules
中的行也包含在内sys.all_sql_modules
本身就是一个系统模块,因此它不会显示在sys.sql_modules
中,因为它只包含非系统模块。