未在 dbo 架构下创建表

Chi*_*nho 18 sql-server sql-server-2008-r2

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

CREATE TABLE [tableName];
Run Code Online (Sandbox Code Playgroud)

该表将在您自己的架构(而不是 dbo)下创建。因此,为了在 dbo 模式下创建它,您需要明确说明,如下所示:

CREATE TABLE [dbo].[tableName];
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*ger 9

省略 schema 时将使用的 schema 将是数据库用户的默认 schema。因此,要让dbo架构在不指定的情况下拥有已创建的表,您必须将该数据库用户的默认架构设置为dbo.

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

  • @Chinesinho 您无法设置任何服务器主体的默认架构。您混淆了服务器登录和数据库用户。数据库用户包含默认模式。 (5认同)

小智 9

也许这可以帮助

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
Run Code Online (Sandbox Code Playgroud)

  • 但如果用户在 Windows 身份验证中,则无法设置默认架构 (3认同)