Таблица не создается в схеме dbo


16

При создании таблиц в SSMS я понял, что если вы выполните следующую инструкцию:

CREATE TABLE [tableName];

таблица будет создана по вашей собственной схеме (а не dbo). Таким образом, чтобы создать его в схеме dbo, вам нужно явно сказать так:

CREATE TABLE [dbo].[tableName];

Кто-нибудь знает способ (например, настройки для всего сервера), чтобы при создании таблицы не нужно было указывать часть [dbo]?


1
Какая версия SQL-сервера?

4
И почему у вас есть проблемы с явным указанием?
HLGEM

Ответы:


8

Схема, которая будет использоваться, если схема не указана, будет схемой по умолчанию для пользователя базы данных. Поэтому, чтобы dboсхема имела созданную таблицу без указания, вам необходимо установить схему по умолчанию для этого пользователя базы данных dbo.

Настройка для всего сервера? Я так не думаю. Но вы могли бы написать запрос, чтобы преобразовать всех пользователей базы данных в конкретной базе данных в их схему по умолчанию, измененную на, dboесли это то, что вы выберете.


@KAJ: SQL2008R2
Чайнсайнхо

1
Но вы не можете установить схему по умолчанию dbo для групп Windows ...
Chinesinho

5
@Chinesinho Нельзя установить схему по умолчанию для любого участника сервера. Вы путаете логины сервера и пользователей базы данных. Пользователи базы данных содержат схемы по умолчанию.
Томас Стрингер

Установка схемы по умолчанию для пользователей, сопоставленных с именами входа в группу Windows, не поддерживалась до SQL Server 2012.
db2

8

Может быть, это может помочь

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

3
но если пользователь находится в Windows Authentication, он не может установить схему по умолчанию
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.