Проблема сопоставления имени пользователя в SQL Server 2008 - PullRequest
10 голосов
/ 27 августа 2009

Некоторое время назад я настроил базу данных под SQL Server 2008 под названием myDB в Windows XP, затем в разделе «Вход в систему под сервером» я щелкнул Свойства на имени для входа в систему моего компьютера COMP23 / Andrew и сопоставил базу данных myDB с этим, используя dbowner в качестве прав. .

Затем я клонировал эту установку XP в качестве резервной копии, установил Visa, осознав, что не хочу Vista, и заново скопировал исходную копию XP на ту же машину. Однако отображение БД действительно запуталось! В основном под именем входа сервера COMP23 \ Andrew, он говорит, что он сопоставлен с myDB, но когда я нажимаю myDB и смотрю на его пользователей, его там нет. Я думаю, что он потерял свое отображение SID, потому что он думает, что это новая машина.

Под логином сервера COMP23 \ Andrew, я не могу отменить привязку к myDB, поскольку когда я это делаю, он говорит: «Невозможно удалить пользователя dbo». Я также не могу изменить пользователя dbo - он не позволит мне. Но я также не могу заставить пользователя появляться под пользователями myDB! Это означает, что я не могу войти через мой файл настроек сайта (asp.net web.config)! Когда я вхожу в систему, он просто говорит «Невозможно открыть базу данных« myDB », запрошенную при входе в систему. Ошибка входа Ошибка входа для пользователя 'COMP23 \ ASPNET'

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

Ответы [ 4 ]

14 голосов
/ 28 августа 2009

Поскольку dbo является владельцем базы данных, его отображение необходимо изменить, изменив владельца базы данных:

ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa];
2 голосов
/ 21 октября 2011

Прежде всего, вы не можете иметь кавычки вокруг имени хранимой процедуры. Во-вторых, это не автофикс, а автофикс.

Наконец, после внесения этих исправлений вы получите следующее сообщение об ошибке:

Сообщение 15600, уровень 15, состояние 1, процедура sp_change_users_login, строка 181 Для процедуры указан недопустимый параметр или параметр 'Sys.sp_change_users_login'.

при запуске этой команды:

EXEC sp_change_users_login @Action = 'auto_fix', @LoginName = '<your username>' 
0 голосов
/ 21 января 2018
USE [Database]
GO

ALTER USER [dbo] WITH NAME=[username]
GO

sp_changedbowner 'sa' 
GO
0 голосов
/ 29 августа 2009

Поскольку вы упомянули проблему сопоставления SID, пробовали ли вы использовать sp_change_users_login? Используйте опцию автофикса для повторного сопоставления вашего логина с тем, который указан в базе данных.

Для вашего примера выше вы должны выполнить следующее при подключении к базе данных

EXEC `sp_change_users_login` @Action = 'autofix', @LoginName = 'COMP23\ASPNET'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...