Ошибка сопоставления пользователей в SQL Server 2008

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, но имя компьютера все еще отображается в базе данных.

Ответ 1

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

ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa];

Ответ 2

Прежде всего, у вас не может быть меток, связанных с именем хранимой процедуры. Во-вторых, это не 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>' 

Ответ 3

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

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

EXEC `sp_change_users_login` @Action = 'autofix', @LoginName = 'COMP23\ASPNET'

Ответ 4

USE [Database]
GO

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

sp_changedbowner 'sa' 
GO