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'   -- 列出当前数据库的孤立用户数

posted @ 2010-03-16 17:42  Jack Tang  阅读(203)  评论(0编辑  收藏  举报