Почему имена таблиц в SQL Server начинаются с «dbo»?


Ответы:


234

dbo - это схема по умолчанию в SQL Server. Вы можете создавать свои собственные схемы, чтобы лучше управлять пространством имен вашего объекта.


22
В качестве лучшей практики я всегда добавляю «dbo». префикс, хотя это и не обязательно. В большинстве случаев в SQL хорошо быть явным.
SurroundByFish

3
@SuroundedByFish: Возможно, не лучшая практика, но я могу ошибаться, поскольку я не эксперт по SQL. stackoverflow.com/a/769639/602245
Бретт

13
В этой статье из другого ответа утверждается, что на самом деле это лучшая практика: «Код не должен использовать полностью определенное имя, хотя при этом наблюдается небольшой выигрыш в производительности, и это считается лучшей практикой».
Карл Дж.

7
Кроме того, ответ, который вы связали, также рекомендует включать «dbo». так что оптимизатору не нужно искать схему.
Карл Дж

7
ДБО не очень хорошая практика. Создайте свою собственную схему и всегда используйте ее. dbo существует только уловка миграции, поэтому pre-SQL Server 2005 продолжает работать. Да, всегда используйте схему для перфорации. Нет, не миграционный (например, dbo).
Дэвид Бец

85

Если вы используете Sql Server Management Studio, вы можете создать собственную схему, выбрав Базы данных - Ваша база данных - Безопасность - Схемы.

Создать его с помощью скрипта так же просто, как (например):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

Вы можете использовать их для логической группировки таблиц, например, путем создания схемы для «финансовой» информации и другой для «личных» данных. Ваши таблицы будут отображаться как:

Financial.BankAccounts Financial.Transactions Personal.Address

Вместо того, чтобы использовать схему по умолчанию dbo.


Знаете ли вы, если это вызывает какие-либо проблемы, когда мы используем Entity Framework?
Батмачи

6
Вы можете использовать схемы с Entity Framework - даже с первым кодом, если хотите:[Table("Customer", Schema = "MySchema")]
Fenton

Предоставляет ли AUTHORIZATION [dbo] те же разрешения, что и dbo для схемы, или мне все еще нужно предоставлять разрешения пользователям?
Марк Микаллеф

21

Он является новым для SQL 2005 и предлагает упрощенный способ группировки объектов, особенно в целях защиты объектов в этой «группе».

Следующая ссылка предлагает более глубокое объяснение того, что это такое, почему мы будем его использовать:

Понимание различий между владельцами и схемами в SQL Server

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