Подтвердить что ты не робот

Схема SQL-сервера и схема по умолчанию

У меня есть определение схемы в моей базе данных. За исключением теперь каждый раз, когда я делаю выражение sql, я должен предоставить схему... SELECT * FROM [myschema].table

Я установил схему по умолчанию для своего пользователя, используя студию управления, а также выполнил ALTER USER myUser WITH DEFAULT_SCHEMA [myschema] и я все еще получаю недопустимый объект "таблица" при написании запроса без схемы (таблица SELECT * FROM)

Есть ли способ написать SELECT * FROM table без необходимости указывать имя схемы все время?

Это на SQL 2005 с использованием SQL Management Studio.

4b9b3361

Ответ 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" по умолчанию. Почему вам нужно изменить схему по умолчанию для пользователя, если вы не планируете ее использовать?