首先介绍下什么是孤立用户的问题?黑客防线建站网|http://www.rongsen.com.cn
比如
,以前的数据库的很多表是用户test建立的
,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立了一个test登录用户名,而且是以前的用户密码,用该用户登录后同样没办法操作以前属于test的用户表
。
请教了很多专家,有很多解决方案,不过很多方案没办法实现,因为MS
SQL 2005的权限的关系
。这里介绍一个经过我验证的解决方法:
我们在建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户。
这里可以使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。运行下 面的代码,系统会列出当前数据库的孤立用户数。sp_change_users_login 'report'我们只需要选择当前数据库为testdb,然后运行sp_change_users_login 'update_one','test','test'系统就会提示修复了一个孤立用户。如果没有建立test的登录用户,还可以用 sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'来创建一个登录用户名为test,密码为testpassword的用户与之对应。通常情况下,数据库对象得到访问问题已经 解决了。如果有多个数据库中有同一个用户的数据表,只需要选择不同的数据库,执行update_one的那个就行了。黑客防线建站网|http://www.rongsen.com.cn