【问题标题】:dbo in SqlServerSQL Server 中的 dbo
【发布时间】:2011-02-02 19:09:23
【问题描述】:

我正在将数据库从 Teradata 转换为 SqlServer。我注意到所有表和过程都以前缀“dbo”命名。 (例如“dbo.Table1”)。

我想知道是否以及如何摆脱“dbo”,因为它会使转换任务更容易。

【问题讨论】:

    标签: sql-server teradata dbo


    【解决方案1】:

    dbo 是模式,如果你愿意,你可以指定一个新的模式。 dbo 默认是 sql server。

    【讨论】:

      【解决方案2】:

      dbo不是表名的一部分。它是表和存储过程附加到的模式的名称。 dbo 是 SQL Server 中的默认架构,但您可以根据需要添加其他架构。

      请参阅this MSDN 关于它们的文章。

      【讨论】:

        【解决方案3】:

        所有表都必须进入一个模式。正如 durilai 所说,dbo 是 SQL Server 的“默认”架构(它始终存在)。但是请注意,不同的用户可以有不同的默认架构(如果存在多个)。

        如果您在未指定架构的情况下引用表,则 SQL Server 将在您的默认架构中搜索它(对于任何其他对象也是如此)。

        所以,如果你的默认schema是dbo,下面两条语句是等价的:

        select * from Table1
        select * from dbo.Table1
        

        【讨论】:

          【解决方案4】:

          如果用户没有设置架构,则 dbo 是 SQL Server 中的默认架构, 如果您愿意,您可以创建新架构并为其创建表。

          【讨论】:

            【解决方案5】:

            架构很有用。例如,我曾经分别为每个存储过程授予应用程序登录执行权限。现在,我向包含所有存储过程的架构授予应用程序登录执行权限。这要容易得多。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-11-29
              • 1970-01-01
              • 2011-06-17
              • 2010-11-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多