2009-08-27 5 views
10

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

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

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

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

ответ

14

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

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

Это решение работает для меня. Спасибо Ремусу! У меня была такая ситуация: domain \ oldusr больше не работает в нашей компании. domain \ oldusr, отображаемый как «dbo» (см. под пользовательскими сопоставлениями) для нескольких БД. Это вызывало проблемы, когда я пытался использовать мастер «Задачи»> «Копировать базу данных» для копирования БД с компьютера на другой. Я получал эту ошибку: не могу найти главный «домен \ oldusr», потому что он не существует или у вас нет разрешения. Выполнение вышеуказанного запроса опустило сопоставление пользователя (как dbo) с этой БД. Поэтому в итоге я смог скопировать БД с помощью Задачи> Копировать базу данных. – firepol

0

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

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

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

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

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

Msg 15600, Level 15, State 1, Procedure sp_change_users_login, Line 181 An invalid parameter or option was specified for procedure 'sys.sp_change_users_login'.

при выполнении этой команды:

EXEC sp_change_users_login @Action = 'auto_fix', @LoginName = '<your username>' 
0
USE [Database] 
GO 

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

sp_changedbowner 'sa' 
GO 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely- code-based-answers) действительно помогает улучшить качество вашего после. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –

Смежные вопросы