Сделать вход в dbo для базы данных в SQL Server - PullRequest
1 голос
/ 11 апреля 2011

Я пытаюсь перейти с SQL Server 2005 на SQL Server 2008. Оба этих экземпляра базы данных размещены на сторонних общих серверах, к которым у меня нет полных разрешений. Они используют смешанный режим аутентификации.

У меня проблемы с настройкой новой базы данных так же, как и со старой. В частности, новая веб-панель управления не позволяет указывать dbo при создании новой базы данных, а затем при использовании Red Gate SQL Compare для синхронизации схем, которые возникают у меня из-за некоторых объектов (которые явно не указывают в сценарии dbo) создаются с префиксом учетной записи пользователя, а не dbo.

Я пролил документацию, пытаясь найти способ заставить мой логин "user1" как dbo в базу данных "db1". Я пришел к выводу, что скрипт должен выглядеть так:

ALTER AUTHORIZATION ON DATABASE::db1 TO user1

Перед запуском этого сценария имя входа "user1" уже существует, но не является пользователем для базы данных "db1". Заметьте, что мне пришлось отправить этот скрипт в службу поддержки моей хостинговой компании, чтобы запустить его. По словам хостинговой компании, оператор успешно выполняется, однако при сравнении баз данных с использованием SQL Compare пользователь «user1» не был физически добавлен в базу данных, как это было в SQL Server 2005. При попытке добавить его с помощью сценария:

CREATE USER [user1] FOR LOGIN [user1] WITH DEFAULT_SCHEMA=[dbo]

Я получаю сообщение об ошибке:

"The login already has an account under a different username"

Я попытался удалить всех других пользователей из базы данных, но сообщение об ошибке все еще сохраняется - что я нахожу странным.

Хотя я мог бы просто исправить сценарии, явно указав dbo, это неизбежно была бы бомба замедленного действия, ожидающая взрыва, потому что, если был введен какой-либо новый сценарий, который не указывал бы явно dbo, во время синхронизации произошел бы сбой. Поскольку некоторые из сценариев от сторонних производителей, это не очень хорошее решение.

Итак, мои вопросы: есть ли еще один оператор, который мне нужно выполнить, чтобы добавить «user1» в базу данных как пользователь dbo? Есть ли что-то, что изменилось в реализации между SQL Server 2005 и SQL Server 2008 R2, что могло вызвать эти несоответствия?

Я, к сожалению, не могу протестировать, чтобы найти ответ на второй вопрос, потому что у меня нет другой базы данных SQL Server 2008 для тестирования, и у меня нет полного доступа, чтобы делать что-либо, что я хочу с этим.

Старая база данных была создана с помощью панели управления, которая заставляла указывать dbo, а новая не позволяет указывать dbo при создании базы данных.

1 Ответ

3 голосов
/ 12 апреля 2011

Из того, что я собрал, должно хватить следующего:

ALTER USER [user1] WITH DEFAULT_SCHEMA=[dbo]

Создание не работает, поскольку оно уже существует.

...