当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server帐号孤立的问题解决

MSSQL
SQLServer中求两个字符串的交集
SQL Server 触发器 表的特定字段更新时,触发Update触发器
SQL 查询分析中使用net命令问题
SQLServer 批量导入目录文件
sql语言中delete删除命令语句详解
Linq to SQL 插入数据时的一个问题
一个简单的SQL 行列转换语句
SQLServer 常用语句(按功能分)
SQLServer 管理常用SQL语句
SQL Server 2000中的触发器使用
SQL小技巧 又快又简单的得到你的数据库每个表的记录数
Sql Server 2000删除数据库备份文件
批量更新数据库所有表中字段的内容,中木马后的急救处理
sqlserver 通用分页存储过程
远程连接局域网内的sql server 无法连接 错误与解决方法
目前用到的两个分页存储过程代码
sqlserver 多表关联时在where语句中慎用trim()方法
Sql2005注射辅助脚本[粗糙版]
sql 2005不允许进行远程连接可能会导致此失败的解决方法
MSSQL2005数据库备份导入MSSQL2000

MSSQL 中的 SQL Server帐号孤立的问题解决


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 89 ::
收藏到网摘: n/a

网站近日经常遭到攻击,好几次数据库挂马,前几天把论坛升级了,今天又升级了数据库,把之前的MSSQL 2000 升级到MSSQL 2005,用的是数据库还原功能还原的,遇到了这个帐号孤立的问题。

什么是孤立用户的问题?

比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立了一个test登录用户名,而且是以前的用户密码,用该用户登录后同样没办法操作以前属于test的用户表。

 

我们在建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为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的那个就行了。