打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转]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 from sysusers where name='用户名'
3、在Enterprise Management中,设置相应的登录名为数据库的owner
4、在数据库的用户列表中,确认数据表的所有者对应上了登录名
5、记得在Enterprise Management的属性中取消第1步的选择项

另附:
MSSQL数据库日志收缩方法
1、在查询分析器中执行ump transaction dbname with no_log
2、在Enterprise Management中选择相应的数据库,右键所有任务中选择收缩数据库
3、选择收缩文件,用默认选项收缩日志文件即可收到良好的效果,一般日志收缩后不到1M

 

 

 

作者:荡凯网络

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Navicat for sql server附加数据库
Sqlserver中 登录用户只能看到自己拥有权限的库
如何安装 SQL Server Management Studio18.12.1?
处理SQLServer数据库孤立用户的解决方案
SQL Server 2008 中新建用户登录并指定该用户的数据库
通过 命令提示符(cmd.exe)连接 Oracle 数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服