Я нахожу схемы 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"?