在SQL Server2008中显示视图内容

Vee*_*jay 3 sql-server sql-server-2008

如何在SQL Server 2008中显示数据库中所有视图的内容?有没有新的系统视图来做同样的事情?

Tho*_*mas 5

使用Management Studio的最简单方法是:

  1. 在Management Studio中查找数据库
  2. 在数据库中,单击左侧的“视图”文件夹(正式称为“对象资源管理器”),该文件夹应在右侧显示一个视图列表。如果不是,则要转到“视图”菜单并选择“对象详细信息”。
  3. 选择所有视图。
  4. 右键单击所选视图,然后选择“脚本视图为”->创建至->新建查询窗口

这将打开一个窗口,其中包含您选择的所有内容的“视图”定义。

编辑:如果要查询所有视图定义,可以执行以下操作:

Select VIEW_DEFINITION
From INFORMATION_SCHEMA.VIEWS
Run Code Online (Sandbox Code Playgroud)

如果将输出更改为“文本”而不​​是“网格”,它将为您提供所有视图的列表。

正如gbn所指出的那样,如果这是您想要的架构,并且如果某个开发人员疯狂地制作了一个超过4k个字符的视图,则INFORMATION_SCHEMA视图将对该视图的架构返回null。因此,在这种情况下,使用系统表会更合适。类似于SMS在幕后所做的工作,gbn解决方案的一种变化是:

Select smv.definition
FROM sys.all_views AS v
    JOIN sys.sql_modules AS smv 
        ON smv.object_id = v.object_id
Run Code Online (Sandbox Code Playgroud)


gbn*_*gbn 5

SELECT
    O.name, SM.definition
FROM
    sys.objects O
    JOIN
    sys.sql_modules SM ON o.object_id = SM.object_id
WHERE
    o.type = 'V'
Run Code Online (Sandbox Code Playgroud)

"INFORMATION_SCHEMA"的列限制为nvarchar(4000),当您选择它时将导致截断视图定义:不要使用它