dboスキーマの下にテーブルが作成されない


15

SSMSでテーブルを作成するとき、次のステートメントを実行すると気付きました。

CREATE TABLE [tableName];

テーブルは独自のスキーマの下に作成されます(dboではありません)。したがって、dboスキーマの下で作成するには、次のように明示的に宣言する必要があります。

CREATE TABLE [dbo].[tableName];

テーブルを作成するときに[dbo]部分を指定する必要がないように、誰かが方法(サーバー全体の設定など)を知っていますか?


1
どのバージョンのSQLサーバーですか?

4
そして、なぜ明示的に指定することに問題があるのですか?
HLGEM

回答:


8

スキーマが省略されたときに使用されるスキーマは、データベースユーザーのデフォルトスキーマになります。したがって、dboスキーマに指定せずに作成されたテーブルを持たせるには、そのデータベースユーザーのデフォルトスキーマをに設定する必要がありますdbo

サーバー全体の設定?そうは思いません。ただし、特定のデータベース内のすべてのデータベースユーザーを、dbo選択したデフォルトスキーマに変更するクエリを作成できます。


@KAJ:SQL2008R2
Chinesinho

1
しかし、Windowsグループのデフォルトスキーマをdboに設定することはできません
...-Chinesinho

5
@Chinesinhoサーバープリンシパルのデフォルトスキーマを設定することはできません。サーバーログインとデータベースユーザーを混同しています。データベースユーザーにはデフォルトのスキーマが含まれています。
トーマスストリンガー

Windowsグループログインにマップされたユーザーのデフォルトスキーマの設定は、SQL Server 2012より前ではサポートされていません。
db2

7

たぶんこれは助けることができます

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

3
しかし、ユーザーがWindows認証を使用している場合、デフォルトのスキーマを設定できません
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.