Это выстрел в темноте, так что прости меня, если это просто зря тратит время.
Другой автор упомянул, что у данного пользователя есть идентификатор для системы и идентификатор для любой данной базы данных. В этом можно убедиться, сравнив sid между master.sys.syslogins и dbname.sys.users для одного и того же имени входа / пользователя. Если вы восстановите резервную копию с другого сервера sql, который имеет собственную копию баз данных master, sids не будет совпадать.
Sql Server 2005 не позволяет напрямую редактировать системные таблицы без особых проблем. Чтобы помочь с этими несоответствиями, они добавили хранимую процедуру, чтобы помочь вам исправить их:
USE dbName
GO
sp_change_users_login @ Action = 'Report'
Это покажет вам, какие пользователи имеют запись dbName.sys.users, но нет master.sys.syslogins - или где имя существует в обоих, но отличается по sids.
Если он показывает, что ваш пользователь не синхронизирован, процедура также имеет режим для изменения связи:
USE dbName
ИДТИ
sp_change_users_login 'Update_One', 'userNameInDbUsers', 'UserNameInLogins'
Если несоответствие sid не является вашей проблемой, я также видел очень странные вещи с Sql Server 2005. Графический интерфейс особенно глючит. Чтобы решить проблему, подобную этой, мне пришлось фактически удалить запись syslogins (с помощью команды gui или DROP LOGIN)
sp_change_users_login: http://msdn.microsoft.com/en-us/library/ms174378(SQL.90).aspx
Удалить синтаксис логина: http://msdn.microsoft.com/en-us/library/ms188012(SQL.90).aspx