Ответ 1
Поскольку dbo является владельцем базы данных, его сопоставление должно быть изменено путем изменения владельца базы данных:
ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa];
A назад назад я настроил базу данных под SQL Server 2008 под названием myDB в Windows XP, затем под логинами под сервером я нажал "Свойства" на моем имени для входа в компьютер COMP23/Andrew и сопоставил базу данных myDB с этим, используя dbowner в качестве своих прав.
Затем я клонировал эту установку XP как резервную копию, установил Visa, понимая, что я не хочу, чтобы Vista я снова отображала мою оригинальную копию XP на тот же компьютер. Однако отображение БД действительно запуталось! В основном под сервером login COMP23\Andrew, он говорит, что он сопоставлен с myDB, но когда я нажимаю myDB и смотрю на своих пользователей, его нет. Я думаю, что он потерял отображение SID, потому что он думает о своей новой машине.
Под именем сервера COMP23\Andrew я не могу отключить отображение myDB, так как, когда я это делаю, он говорит: "Невозможно отказаться от пользователя dbo". Я тоже не могу изменить пользователя dbo - это не позволит мне. Но я не могу заставить пользователя появляться под пользователями myDB! Это означает, что я не могу войти в систему через свой сайт (файл asp.net web.config)! Когда я вхожу в систему, он просто говорит "Невозможно открыть базу данных" myDB ", запрошенную логином. Ошибка входа в систему. Ошибка входа для пользователя "COMP23\ASPNET"
Любые идеи? Как я могу перенаправить это правильно? Я даже пытался переустановить SQL Server 2008, но имя компьютера все еще отображается в базе данных.
Поскольку dbo является владельцем базы данных, его сопоставление должно быть изменено путем изменения владельца базы данных:
ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa];
Прежде всего, у вас не может быть меток, связанных с именем хранимой процедуры. Во-вторых, это не autofix, а auto_fix.
Наконец, как только эти исправления будут сделаны, вы получите это сообщение об ошибке:
Msg 15600, уровень 15, состояние 1, процедура sp_change_users_login, строка 181 Недопустимый параметр или параметр был указан для процедуры 'Sys.sp_change_users_login'.
когда вы запустите эту команду:
EXEC sp_change_users_login @Action = 'auto_fix', @LoginName = '<your username>'
Поскольку вы упомянули проблему с отображением SID, попробовали ли вы использовать sp_change_users_login
? Используйте параметр autofix, чтобы переназначить ваш логин в том, что находится в базе данных.
В приведенном выше примере вы должны выполнить следующее при подключении к базе данных
EXEC `sp_change_users_login` @Action = 'autofix', @LoginName = 'COMP23\ASPNET'
USE [Database]
GO
ALTER USER [dbo] WITH NAME=[username]
GO
sp_changedbowner 'sa'
GO