Sql server SQL Server系统视图定义

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

是否有办法查看SSMS中的系统视图定义?我不认为使用SQLServerManagementStudio可以做到这一点

我想查看的视图定义示例:
[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
中,因为它只包含非系统模块。