2000sql注册新服务器,SQL2000附加数据库到新服务器,创建用户失败解决方法

SQL2000附加数据库到新服务器,创建用户失败解决方法

办公室服务器换新的了,以前的数据库要附加或恢复过来,弄了好久,OA的数据库总是登录不成功,上网搜到了如下的解决方法,一试果然OK了。

如果一个MSSQL文件从一台服务器移到别一台服务器进行附加上去,即使在新的服务器上建立相同的用户名,也会导致相应的登录名与数据库用户名不对应,从而造成数据访问失败:

如:

原数据库

db: test

一部份的表为用户表,所有者为testuser,而一部份为系统表,所有都为dbo

登录名为testuser, 因此您此时在数据库的用户列表中看到的是

数据库用户名testuser对应登录名testuser。

原数据服务器上,任何访问都不会出问题

当附加到新的数据库服务器后:

db: test

全部数据表的所有者都与原来相同,

安全->登录中也有testuser登录名

但此时在数据库的用户名列表中可以看到

数据库用户名testuser没有对应的登录名

多出来一个用户名dbo对应登录名testuser

从以上可以看出,MSSQL的权限控制是分三步进行处理

第一步:用户可以登录服务器与否,即由登录名控制

第二步:用户登录后他可以访问的数据库有哪些;

第三步:是否能访问相应数据库中的特定表,由表的所有者决定

通过以上的三层方式,可以做到权限的细粒化。只有当登录名与表的所有者对应起来后,相应的登录用户才拥有对应表的权限

反正我每次附加上去之后,登录名都不能对应到数据库用户表的相应所有者,而是对应到了dbo,

因此我们要对附加上后的数据库进行相应的修改:

1、在MSSQL Enterprise

Management(企业管理器)中打开属性,在ServerSettings(服务器设置)中选中allow modifications

to be made directly to thesystem catalogs(允许对系统目录直接进行修改).

2、在查询分析器中,执行

use附加数据库名

go

delete fromsysusers where name='用户名'

3、在Enterprise Management中,设置相应的登录名为数据库的owner

4、在数据库的用户列表中,确认数据表的所有者对应上了登录名

5、记得在Enterprise Management的属性中取消第1步的选择项

另附:

MSSQL数据库日志收缩方法

1、在查询分析器中执行ump transaction dbname with no_log

2、在Enterprise Management中选择相应的数据库,右键所有任务中选择收缩数据库

3、选择收缩文件,用默认选项收缩日志文件即可收到良好的效果,一般日志收缩后不到1M

作者:荡凯网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值