Sql Server数据库迁移孤立用户的问题处理
Sql Server数据库迁移孤立用户的问题处理
适用数据库:
SQL Server 7.0、SQL Server 2000 和 SQL Server 2005
表面现象:
对象名 ‘xxxx’ 无效
Login failed for user '%ls'.
Server user '%.*ls' is not a valid user in database '%.*ls'.
服务器用户“%s”不是数据库“%s”中的有效用户。请先将该用户帐户添加到数据库中
进一步的现象:
创建和以前用户相同帐号(如test),相同密码的帐号,还是不能访问属于以前用户的表
原因:
当您将数据库从一个运行 SQL Server 的服务器移到另一个运行 SQL Server 的服务器时,master 数据库中登录的安全标识号 (SID) 与用户数据库中用户的 SID 可能不匹配。
解决办法:
使用sp_change_users_login 系统存储过程来映射这些不匹配的用户
具体操作:
如果已经创建了和以前用户同名的用户,使用下面的命令修复:
sp_change_users_login 'update_one','test','test'
如果没有建立test的登录用户,使用下面的命令创建同名的,密码为testpassword的用户与旧用户对应:
sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'
相关命令
sp_change_users_login 'report' -- 列出当前数据库的孤立用户数