Sql Server -获取现有视图的视图创建语句

e0uiprwp  于 2023-01-12  发布在  SQL Server
关注(0)|答案(7)|浏览(234)

是否有方法获取为SQL Server 2008中的现有视图创建视图的语句?我以为有存储过程或某些元数据包含此数据,但我找不到任何内容。

628mspwn

628mspwn2#

右键单击视图并编写脚本。

x759pob2

x759pob23#

它位于sys.sql_modules中,其他模式表如INFORMATION_SCHEMA只包含定义的前4000个字符(它们会被截断)。

qojgxg4l

qojgxg4l4#

右键单击视图名称,然后左键单击“SCRIPT VIEW as”,然后左键单击“ALTER TO”,然后左键单击“NEW QUERY EDITOR WINDOW”--答对了,你的位置!要打印,请单击脚本屏幕,然后使用工具栏打印机图标发送到打印机,或者单击FILE〉〉PRINT。当然,要注意退出时不做任何更改。这对存储过程也是一样的。

gev0vcfq

gev0vcfq5#

您可以将脚本视为代码,并将其复制粘贴到编辑器中,如下所示:

SELECT 
    v.TABLE_NAME, 
    v.VIEW_DEFINITION 
FROM 
    INFORMATION_SCHEMA.VIEWS v 
WHERE 
    v.TABLE_NAME LIKE '%%'

并插入所需的视图名称。

j0pj023g

j0pj023g6#

为了将来能对某些人有所帮助,我整理了一个小脚本,用于输出数据库中 * 所有 * 视图的创建脚本。

DECLARE @definition varchar(max)
DECLARE @view CURSOR
SET @view = CURSOR FOR
    SELECT m.definition FROM sys.views v INNER JOIN sys.sql_modules m ON m.object_id = v.object_id
OPEN @view
FETCH NEXT FROM @view INTO @definition
WHILE @@FETCH_STATUS = 0 BEGIN
    PRINT @definition
    PRINT 'GO'
    FETCH NEXT FROM @view INTO @definition
END CLOSE @view DEALLOCATE @view
h43kikqp

h43kikqp7#

用户需要ViewDefinition权限才能查看定义列(SQL创建语句)

相关问题