在架构内创建多个视图 - SQL Server

时间:2012-12-09 13:01:14

标签: sql-server tsql view sql-server-2008-r2

如何在CREATE SCHEMA语句中创建多个视图?

我想创建一个SCHEMA,并在同一个语句中创建两个视图,所以所有这些语句都作为一个单元工作?成功或失败!

来自MSDN:http://msdn.microsoft.com/en-us/library/ms189462.aspx

  

“CREATE SCHEMA可以创建一个模式,它包含的表和视图,   对单个中任何安全设施的授予和授予,拒绝或拒绝权限   声明。 CREATE SCHEMA事务是原子的。如果发生任何错误   在执行CREATE SCHEMA语句期间,没有   创建了指定的securables,并且没有授予任何权限。“

我该怎么做?我试过这个:

CREATE SCHEMA [MYSCHEMA] AUTHORIZATION [dbo]
    CREATE VIEW [VIEW1]
    AS 
        SELECT [ID]
               ,[NAME]
                FROM [dbo].[TABLE1]
        /* Here is the Problem */
        GO

        CREATE VIEW [VIEW2]
        AS
        SELECT [ID]
               ,[NAME]
                FROM [dbo].[TABLE2]
        GO

如果我在第一次创建视图后包含GO语句,则会运行脚本,但会在VIEW2架构下创建第二个视图dbo,而不是MYSCHEMA下,也不作为一个单元运行。

如果我在第一个视图后删除GO,则会出错

  

CREATE VIEW必须是批次的第一个陈述

表示第二个CREATE VIEW语句。

如何解决这个问题并将这两个视图作为CREATE SCHEMA语句的一部分创建?

1 个答案:

答案 0 :(得分:5)

CREATE SCHEMA [MYSCHEMA] AUTHORIZATION [dbo]

CREATE VIEW [VIEW1] AS SELECT [ID], [NAME] FROM [dbo].[TABLE1]
CREATE VIEW [VIEW2] AS SELECT [ID], [NAME] FROM [dbo].[TABLE2]
GO