Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQLServer2008中显示视图内容_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 在SQLServer2008中显示视图内容

Sql server 在SQLServer2008中显示视图内容,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如何在SQL Server 2008中显示数据库中所有视图的内容?是否有新的系统视图可以执行相同的操作?使用Management Studio最简单的方法是: 在ManagementStudio中查找数据库 在数据库中,单击左侧的Views文件夹,正式名称为Object Explorer,它将在右侧显示视图列表。如果没有,则要转到“视图”菜单并选择“对象详细信息”。 选择所有视图。 在所选视图上单击鼠标右键,然后选择“脚本视图为->创建到->新建查询窗口” 这将打开一个窗口,其中包含所选内容的视

如何在SQL Server 2008中显示数据库中所有视图的内容?是否有新的系统视图可以执行相同的操作?

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

在ManagementStudio中查找数据库 在数据库中,单击左侧的Views文件夹,正式名称为Object Explorer,它将在右侧显示视图列表。如果没有,则要转到“视图”菜单并选择“对象详细信息”。 选择所有视图。 在所选视图上单击鼠标右键,然后选择“脚本视图为->创建到->新建查询窗口” 这将打开一个窗口,其中包含所选内容的视图定义

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

Select VIEW_DEFINITION
From INFORMATION_SCHEMA.VIEWS
如果您将输出更改为文本而不是网格,它将为您提供所有视图的列表

正如gbn所指出的,如果它是您想要的模式,并且某个开发人员疯狂地创建了一个包含超过4k个字符的视图,那么对于该视图的模式,信息_schema views将返回null。因此,在这种情况下,使用系统表更合适。gbn解决方案的一个变体类似于SMS在幕后所做的工作:

Select smv.definition
FROM sys.all_views AS v
    JOIN sys.sql_modules AS smv 
        ON smv.object_id = v.object_id

INFORMATION_SCHEMA的列限制为nvarchar4000,当您选择它时,它将导致视图定义被截断:不要使用它,为其他人添加此sqlcmd脚本,因为4k限制并不有趣。多亏了这条线

-- :r meta_show_view_definition.sql
-- need user logon with ALTER permissions
-- :setvar ObjectName "<string>"
set nocount on

declare @sql varchar(max)
:out $(ObjectName).view.dump.sql

set @sql = '
select obj.name, sm.definition
from   sys.objects obj
join   sys.sql_modules sm  on  obj.object_id = sm.object_id
where
    obj.type = "V" and
    upper(obj.name) = upper("' + '$(ObjectName)' + '")' 

exec (@sql)
go

:out stdout
set nocount off

你所说的检查内容到底是什么意思?检查什么?检查它是否运行?查找某些列?我想查看数据库中所有视图的定义谢谢..能否共享T-SQL脚本以一次显示所有视图定义?完成。您可以通过INFORMATION_SCHEMA.views查询它们,哪个更好?sys.views或信息\u SCHEMA.views?sys.views是SQL Server专有的。模式视图的信息应该具有一定的通用性,因此,如果给出选择,将是首选方法。然而,这实际上取决于偏好。我发现架构视图中的信息更容易阅读。@gbn不正确。如果视图def超过4K,则将改为null。它不会截断,不是真的。根据BOL:如果定义的长度大于nvarchar4000,则此列为空。否则,此列为视图定义文本。所以你不应该被截断。如果您的视图超过4k,那就另当别论了。可能文档已经过时了,因为我有一个视图的定义大于4000,并且它正在被截断。@Thomas:请随意为您的视图使用信息模式,因为这些视图通常较小。但是,对于较长的存储过程,我将使用sys.sql_模块。但是为什么不对所有代码使用相同的方法呢?在现实生活中,我想100%地确定我得到了正确的数据。BOL数据类型仍然是NVARCH4000
-- :r meta_show_view_definition.sql
-- need user logon with ALTER permissions
-- :setvar ObjectName "<string>"
set nocount on

declare @sql varchar(max)
:out $(ObjectName).view.dump.sql

set @sql = '
select obj.name, sm.definition
from   sys.objects obj
join   sys.sql_modules sm  on  obj.object_id = sm.object_id
where
    obj.type = "V" and
    upper(obj.name) = upper("' + '$(ObjectName)' + '")' 

exec (@sql)
go

:out stdout
set nocount off