前几天被SQL好一个郁闷, 其中包括了种种问题, 本想将解决过程记下来的, 但精力有限, 一直没能如愿. 今天看到linker对于”sql2000 因为选定的用户拥有对象,所以无法除去该用户”问题的解决方法, 感觉与我遇到的其中一个问题类似, 就单独把这个问题述一下吧.
在本地调试的一个数据库放到服务器上后发现数据库的用户名跟着数据库过去了(废话,本来就是数据库系统表中的一条记录,能不过去吗?), 但登录名支了没过去, 就随手想创建一个登录名, 以给该用户使用的, 但创建登录名时发现可能是出于安全考虑吧, 创建的登录名不允许用来操作该数据库. 报”用户、组或角色’XXX’在当前数据库中已存在 错误:15023″的错.
想手工把登录名与数据库中的用户名进行关联, 系统不让; 想删除数据库中的用户再重建, 竟然也不让删……
老办法: 放狗~
最终发现这种情况叫”存在孤立用户”, 其实用系统的一个存储过程sp_change_users_login就可以搞定的:
Use ABC
go
sp_change_users_login ‘update_one’, ‘xxx’, ‘xxx‘
解释一下参数:
ABC, 就不用说了, 想进行操作的数据库呗
update_one, 表示只对一个用户进行操作
xxx与xxx, 则分别是SQL Server的登录名与数据库中的用户名
sp_change_users_login的更详细的用法可以参考SQL Server的联机帮助, SQL Server 2005的在此, SQL 2000的链接不方便做成链接的形式, 各位可以自己到联机丛书的索引中找一下.
linker同学这下明白了吧? 呵呵, 不用谢我, 把授课费打到我的招行的帐号上就可以了. 我的帐号? 请拨110, 向接电话的那位女士咨询.





很不错,解决了一个头疼的问题!
很好,很对头