【问题标题】:Create multiple views inside a schema - SQL Server在架构内创建多个视图 - SQL Server
【发布时间】:2012-12-09 13:01:14
【问题描述】:

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

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

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

"CREATE SCHEMA 可以创建一个模式,它包含的表和视图, 和 GRANT、REVOKE 或 DENY 权限对单个中的任何安全对象 陈述。 CREATE SCHEMA 事务是原子的。如果发生任何错误 在执行 CREATE SCHEMA 语句期间,没有 已创建指定的安全对象,但未授予任何权限。”

,

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

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 语句的一部分?

【问题讨论】:

  • 如果您想将View1 放入MySchema - 只需在创建时为视图名称加上架构前缀:CREATE VIEW MySchema.View1 AS ...
  • @marc_s,是的,我知道,但是它们不会作为一个单元。做我的方式将确保要么一切都被创造,要么什么都没有。在这种情况下,这对我很重要。
  • @marc_s,取自 MSDN “CREATE SCHEMA 可以创建模式、它包含的表和视图,以及在单个语句中对任何安全对象的 GRANT、REVOKE 或 DENY 权限。CREATE SCHEMA 事务是原子的. 如果在执行 CREATE SCHEMA 语句期间发生任何错误,则不会创建任何指定的安全对象,也不会授予任何权限。”,这就是我要找的。​​span>

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


【解决方案1】:
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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
相关资源
最近更新 更多