在dbo模式下未创建表


16

在SSMS中创建表时,我已经意识到,如果执行以下语句:

CREATE TABLE [tableName];

该表将在您自己的模式(而不是dbo)下创建。因此,为了在dbo模式下创建它,您需要像这样明确地声明:

CREATE TABLE [dbo].[tableName];

有谁知道一种方法(例如,服务器范围的设置),以便在创建表时不需要指定[dbo]部分?


1
哪个版本的SQL Server?

4
为什么您在明确指定时遇到问题?
HLGEM'3

Answers:


8

省略模式时将使用的模式将是数据库用户的默认模式。因此,dbo要使架构具有未指定的已创建表,您必须将该数据库用户的默认架构设置为dbo

服务器范围的设置?我不这么认为。但是您可以编写一个查询,将特定数据库中的所有数据库用户转换为默认模式(dbo如果您选择了默认模式)。


@KAJ:SQL2008R2
奇纳西诺

1
但是您不能将Windows组的默认架构设置为dbo ...
Chinesinho 2012年

5
@Chinesinho您不能设置任何服务器主体的默认架构。您会混淆服务器登录名和数据库用户。数据库用户包含默认架构。
Thomas Stringer 2012年

在SQL Server 2012之前,不支持为映射到Windows组登录名的用户设置默认架构
db2

8

也许这可以帮助

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO

3
但是,如果用户在Windows身份验证,然后它不能设置默认模式
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.