Схема SQL-сервера и схема по умолчанию - PullRequest
31 голосов
/ 27 сентября 2010

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

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

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

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

Ответы [ 3 ]

48 голосов
/ 27 сентября 2010

Является ли пользователь SA, если это не будет работать, в соответствии с документацией SA пользователи всегда по умолчанию используют схему dbo.

Значение DEFAULT_SCHEMA игнорируется, если пользователь является членом предопределенной роли сервера sysadmin.Все члены предопределенной роли сервера sysadmin имеют схему по умолчанию dbo.

4 голосов
/ 27 сентября 2010

Пара вариантов:

  1. Ваш пользователь указан в списке «Безопасность»> «Пользователи (в SSMS)»?Проверьте Свойства (щелкните правой кнопкой мыши по имени) и посмотрите, задана ли схема По умолчанию в контексте базы данных, а не в экземпляре (что задает ALTER USER).
  2. Создайте синоним для таблицы, на которую вы хотите сослаться:

    CREATE SYNONYM table_name  
       FOR [your_db].[your_schema].table_name
    

    ..., которая затронет всех, кто не использует по крайней мереобозначение двух имен в контексте этой базы данных. Подробнее об этом здесь .Но в конечном итоге он связан со схемой.

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

  4. Используйте три обозначения имени при указании ссылок на таблицу (и представление):

    SELECT * 
      FROM [your_db].[your_schema].table_name
    
2 голосов
/ 24 октября 2012

Если вы не хотите использовать «полные» имена SQl, вам следует избегать создания таблиц с использованием любой учетной записи или роли, в которой не используется назначенная схема «dbo» по умолчанию. Зачем вам менять схему по умолчанию для пользователя, если вы не планируете ее использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...