Таблицы SQL Server с именами схемы dbo - PullRequest
11 голосов
/ 28 января 2011

Я нахожу схемы SQL Server очень запутанными. Может быть, вы, ребята, можете помочь мне устранить некоторую путаницу. Я использую SQL Server 2008 Express и MS SQL Server 2008 Management Studio, но думаю, что мои вопросы относятся к любой версии MS SQL Server 2008. Я экспериментировал с разными базами данных и разными экземплярами SQL Server на разных серверах. Например, я работал над сервером нашей компании, но также немного работал с некоторыми базами данных на своем общем сервере веб-хостинга. Это может быть частью причины, по которой я вступил в замешательство.

1) Откуда появилось это имя схемы? Я подумал, что когда я впервые начал связываться с SQL Server несколько недель назад, я не увидел никаких имен схем, добавленных к именам таблиц. Я начал видеть их, когда база данных была импортирована или когда я использовал MS Access Migration Assistant. Можно ли вообще не использовать схемы? Разве они не появляются при некоторых обстоятельствах?

2) Имя схемы не "dbo"? В недавнем проекте мои схемы отображались как MyLongUserName.tablename вместо dbo.tablename. Меня смущает вопрос, почему иногда учетная запись пользователя отображается по умолчанию в схеме dbo, а иногда она назначается схеме с тем же именем, что и учетная запись пользователя. Имеет ли это какое-либо отношение к входу в систему с использованием аутентификации NT по сравнению с аутентификацией SQL Server?

3) Пользователь с именем dbo? Не помню, чтобы я создал пользователя с именем dbo в базе данных, в которой я сейчас работаю, но я вижу его в списке пользователей. Должна ли существовать учетная запись пользователя "dbo", чтобы существовала схема "dbo"? Всегда ли имена пользователей и имена схем параллельны?

4) Использовать схемы или нет - вы не можете их использовать? Используете ли вы схемы для небольших проектов, таких как база данных с двумя или тремя таблицами для базового веб-сайта? Можете ли вы избежать использования схем полностью или просто использовать только стандартную схему "dbo"? Будете ли вы создавать дополнительные схемы и назначать им определенные разрешения и учетные записи пользователей даже для очень небольших проектов?

Я пользуюсь книгой SQL Server 2008 Murach для разработчиков , и я не считаю, что она слишком полезна для устранения моей путаницы. Я читаю предложения вроде: «Если вы не указываете схему при создании объектов, они сохраняются в схеме по умолчанию.» Подождите, откуда я знаю что такое "схема по умолчанию"? Речь идет о схеме по умолчанию для учетной записи пользователя или есть «схема по умолчанию» для каждой базы данных? Это всегда "дбо"? Почему, когда я создаю объекты, он назначает их схеме MyLongUserName вместо "dbo"?

1 Ответ

14 голосов
/ 28 января 2011

Возможно, вы захотите начать со следующего: Что хорошего в схемах SQL Server?

Начиная с SQL Server 2005, схемы были отделены от пользователей http://msdn.microsoft.com/en-us/library/ms190387.aspx.

До этого каждому пользователю принадлежат несколько таблиц, которые будут находиться в их «пространстве».Это «пространство» теперь является схемой, которая является способом группировки таблиц.

Объекты SQL Server имеют 4 части с именами

  • server.database.schema.objectname

Всякий раз, когда вы опускаете один или несколько из них, вы называете его справа

  • database.schema.objectname - подразумеваемый текущий сервер
  • schema.objectname- подразумеваемая текущая база данных
  • имя объекта - подразумеваемая схема по умолчанию.каждому пользователю может быть назначена схема по умолчанию, но по умолчанию это будет "dbo"

"dbo" - это специальная схема, это владелец базы данных.Он существует в каждой базе данных, но вы можете добавлять схемы (например, папки) в базы данных

Если вы переходите с более старых установок SQL Server 2000 dbs на 2005 или более позднюю версию, вы можете взять с собой схемы с именем as- as-пользователи, потому что пользователи «владеют» таблицами.

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