2011-01-28 3 views
10

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

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

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

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

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

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

ответ

12

Вы можете начать с чтения этого: What good are SQL Server schemas?

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

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

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

  • server.database.schema.имя_объекта

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

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

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

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

Смежные вопросы