База данных AdventureWorks и префикс dbo - PullRequest
2 голосов
/ 19 марта 2011

Я скачал и подключил базу данных AdventureWorks к моей локальной версии SQL Server 2005 Developer Edition. Но, к сожалению, не все таблицы и другие объекты базы данных имеют префикс dbo. И когда я хочу выполнить какой-либо запрос, я должен сделать это, например, к таблице с именем Production.Contact. Я хотел бы выполнить запрос так:

select * from Contact

Вместо

select * from Person.Contact

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

Как мне этого добиться?

Пожалуйста, помогите.

Ответы [ 2 ]

4 голосов
/ 19 марта 2011

Префикс dbo, который вы видите, называется схемой. Это то же самое для продуктов. Схема чем-то напоминает пространство имен для сервера sql. Если вы хотите попытаться перенести таблицы в схеме продукта в схему dbo, вы должны использовать следующий синтаксис:

ALTER SCHEMA dbo TRANSFER product.[someTable]

Однако, если имя таблицы в схеме продукта уже существует в схеме dbo, вы не сможете этого сделать, поскольку у вас не может быть двух таблиц с одинаковым именем. В основном ваша схема предназначена для организационных целей.

Добавление

Причина, по которой вам не нужно добавлять 'dbo.' Префикс схемы в ваших запросах объясняется тем, что это схема по умолчанию для каждой базы данных. Когда вы пишете запросы без этой схемы, SQL Server предполагает, что вы имеете в виду «dbo». В некоторых рекомендациях говорится, что ваши запросы должны всегда включать схему.

2 голосов
/ 19 марта 2011

Единственный способ выполнить то, что вы просите, - это связать свою учетную запись пользователя, которую вы используете для входа в систему со схемой Продукта. Это сделает схему Продукта схемой по умолчанию для вашего логина, хотя, конечно, у вас может быть только одна.

В более широком смысле я думаю, что при написании запросов в SQL 2005 и более поздних версиях он должен будет квалифицировать схемы по именам объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...