Таблицы SQL Server с именем dbo Schema

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

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

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

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

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

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

Ответ 1

Возможно, вы захотите начать с этого: Каковы преимущества схем 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 - подразумеваемая текущая база данных
  • objectname - подразумеваемая схема по умолчанию. каждому пользователю может быть назначена схема по умолчанию, но по умолчанию это будет "dbo"

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

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