Схема SQL Server 2008 по умолчанию не соблюдается?

9

Мы просто скопировали базу данных SQL 2008 на другой сервер для тестирования. Типичный пользователь, который входит в систему, использует некоторые объекты в определенной схеме. Допустим, это пользователь fooи схема bar.

fooСхема по умолчанию используется barкак на уровне экземпляра, так и на уровне базы данных. Однако при fooвходе в систему он не может найти какие-либо объекты в barсхеме без использования полного имени.

Почему схема по умолчанию здесь не работает?

Джон Кромарти
источник

Ответы:

13

Имеет ли пользователь foo права sysadmin на SQL Server? Потому что, если это так, то любой пользователь sysadmin по умолчанию будет иметь назначенную схему dbo , независимо от того, что установлено в свойствах пользователя для конкретной базы данных.

Итак, чтобы иметь схему по умолчанию, пользователю необходимо иметь роли базы данных, такие как db_owner, db_datawriter и т. Д., А не роль сервера sysadmin.

Скажи мне, если это не твое дело.

yrushka
источник
1
Ты бог, и я кланяюсь твоим знаниям, я был озадачен, пока не наткнулся на это!
Дженс
1

Другой сценарий, в котором может возникнуть эта проблема (SQL 2008 R2) ...

У меня был пользователь, связанный с логином аутентификации SQL, который я пытался связать с существующей схемой. У логина не было прав sysadmin , поэтому вышеприведенное решение не помогло.

В конце концов я понял, что база данных по-прежнему настроена в режиме совместимости с SQL 2000. Переход на SQL 2005 решил проблему.

разочарованный
источник
Странно, но у меня, похоже, возникла эта проблема (пользователь связан с логином аутентификации SQL, который я пытался связать с существующей схемой), за исключением того, что мой уровень совместимости - «SQL Server 2016 (130)»
tbone
0

Предполагается, что схема по умолчанию на новом сервере - dbo; Если схема не была скопирована с базой данных.

Не решение, но, возможно, это может помочь, посмотрев на статью MSDN. http://msdn.microsoft.com/en-us/library/dd283095.aspx

Ник О'Нил
источник
Мы настроили схему по умолчанию для fooна новом сервере. Он устанавливается как barна уровне пользователя экземпляра, так и на уровне пользователя базы данных.
Джон Кромарти