Схема SQL-сервера и схема по умолчанию
У меня есть определение схемы в моей базе данных. За исключением теперь каждый раз, когда я делаю выражение sql, я должен предоставить схему...
SELECT * FROM [myschema].table
Я установил схему по умолчанию для своего пользователя, используя студию управления, а также выполнил
ALTER USER myUser WITH DEFAULT_SCHEMA [myschema]
и я все еще получаю недопустимый объект "таблица" при написании запроса без схемы (таблица SELECT * FROM)
Есть ли способ написать SELECT * FROM table
без необходимости указывать имя схемы все время?
Это на SQL 2005 с использованием SQL Management Studio.
Ответы
Ответ 1
Является ли пользователь SA
, если это не сработает, в соответствии с documentation SA
пользователи всегда дефолтны dbo
.
Значение DEFAULT_SCHEMA игнорируется если пользователь является членом фиксированная роль сервера sysadmin. Все члены фиксированного сервера sysadmin Роль имеет стандартную схему dbo.
Ответ 2
Пара вариантов:
- Является ли ваш пользователь указан в разделе Безопасность > Пользователи (в SSMS)? Проверьте Свойства (щелкните правой кнопкой мыши по имени) и посмотрите, установлена ли Схема по умолчанию в контексте базы данных, а не экземпляр (это то, что ALTER USER настройка).
-
Создать синоним для таблицы, которую вы хотите использовать:
CREATE SYNONYM table_name
FOR [your_db].[your_schema].table_name
..., который затронет всех, кто не использует по крайней мере две нотации имени, в контексте этой базы данных. Подробнее об этом читайте здесь. Но в конечном итоге это связано с схемой.
-
Проверьте, что база данных, выбранная в раскрывающемся списке "Доступные базы данных" (вверху слева, слева от кнопки "Выполнить" ), верна.
-
Используйте три обозначения имени при указании ссылок таблицы (и представления):
SELECT *
FROM [your_db].[your_schema].table_name
Ответ 3
Если вы не хотите использовать "полные квалифицированные" имена SQl, вам необходимо избегать создания таблиц с использованием любой учетной записи или роли, не использующей назначаемую схему "dbo" по умолчанию. Почему вам нужно изменить схему по умолчанию для пользователя, если вы не планируете ее использовать?