如何修复某个数据库“用户”列表中的登录名?
在一台Win2000电脑上的SQL Server2000企业版中,对其某个数据库(比如MYDATA)进行了备份。
在一台WinXP的电脑上安装了一个SQL个人版,建立一个同名数据库MYDATA,建立相同于Win2000机上的登录帐户。然后在WinXP上用Win2000上的备份进行恢复,恢复后发现:
1、MYDATA数据库下的用户列表中,用户名称对应的登录名丢失(空),
2、“安全性”上的登录帐户的“可访问数据库权限”空,重新加入MYDATA数据库时出错。
对此问题如何处理?谢谢。
问题点数:20、回复次数:9Top
1 楼bzscs(沙虫 我爱小美)回复于 2004-12-01 11:58:45 得分 0
好像要先删除原有的登录号,然后关闭企业管理器,再重新打开,再设置登录号Top
2 楼ljial(数据库还真是越搞越不懂,越搞越有味道)回复于 2004-12-01 12:35:14 得分 0
因为你只是回复mydata
,用户信息除了记录在mydata数据库中外
还有master数据库得syslogins中
所以必须在2台机器上都建立此用户Top
3 楼yesyesyes()回复于 2004-12-01 13:36:13 得分 0
在QA中运行
sp_change_users_login 'Auto_Fix','用户名',null,'用户密码'Top
4 楼liaojh()回复于 2004-12-01 16:35:46 得分 0
to bzscs:删除后重建登录号没用,重建时提示用户已经存在。
to yesyesyes:QA是什么?我在SQL查询分析器中运行sp_change_users_login 'Auto_Fix', 'system', NULL, '12345678'
系统提示如下:
服务器: 消息 8144,级别 16,状态 2,过程 sp_change_users_login,行 0
为过程或函数 sp_change_users_login 指定的参数太多。
to ljial:master数据库的syslogins表,我对了两边的数据,用户名(name列)都在,只是dbid列的值对不上,Win2000那边自设用户都是7,WinXP这边自设用户都是12且不能修改。
现在真正能解决的方法是将数据库下的用户删除,这时才可修改登录帐户的数据库访问权限,可问题是数据库的用户记录着登录帐户在本数据库的具体操作权限,这样处理后所有权限都要重设一遍,很麻烦很复杂,有没有什么好办法?Top
5 楼yesyesyes()回复于 2004-12-01 16:47:23 得分 0
QA就是查询分析器
你再试试
sp_change_users_login 'Update_One', '用户名', '登录名'
不过sp_change_users_login 只能用于 SQL Server 登录;它不能用于 Windows 登录。
Top
6 楼liaojh()回复于 2004-12-02 10:59:21 得分 0
to yesyesyes:还是一样的出错提示,我的 SQL Server 是只允许 SQL Server 登录的,不允许 Windows 登录的。Top
7 楼yesyesyes()回复于 2004-12-02 12:31:16 得分 10
那好像只能一个一个删,再一个一个重建Top
8 楼ljial(数据库还真是越搞越不懂,越搞越有味道)回复于 2004-12-02 13:30:05 得分 10
将此用户对应到角色,即使重建,只要重新分配角色就可以了,不需要所有权限都要重设一遍Top
9 楼liaojh()回复于 2004-12-02 14:56:43 得分 0
to yesyesyes:如果光删登录帐号,再重建登录帐号是没用的,只能先到数据库的“用户”处删用户,然后再重建帐号,这时的帐号才能设置访问数据库权限。但删了数据库的用户,登录帐号在本数据库的操作权限就丢失了,需重建。
to ljial:将用户对应到角色是个好办法,以前我没想到用角色,如用角色就可以省很多事了,这样就不用为每个相同角色的用户一个一个去重设权限了。谢谢!
最后谢谢大家!谢谢每一位帮助我的人!Top




