在SqlServer中的dbo

时间:2010-03-31 06:11:51

标签: sql-server teradata dbo

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

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

5 个答案:

答案 0 :(得分:3)

dbo是架构,如果您愿意,可以指定新架构。 dbo默认是sql server。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

因此,如果您的默认架构是dbo,则以下两个语句是等效的:

select * from Table1
select * from dbo.Table1

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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