SQL Server帐号孤立的问题解决

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

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

什么是孤立用户的问题?

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

Google 了一下,有很多解决方案,不过很多方案没办法实现,因为MSSQL 2005的权限的关系。这里介绍一个经过我验证的解决方法:

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

时间: 2024-10-26 22:12:56

SQL Server帐号孤立的问题解决的相关文章

SQL Server访问Oracle查询性能问题解决

1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT*FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME WHERE CO

SQL Server 2000之日志传送功能 - 问题解决

server|解决|问题 SQL Server 2000之日志传送功能可能發生的錯誤 一.残余数据    当您进行SQL Server 2000日志传送的实验时,也许偶而会中断设定过程.如果真是如此,那么某些资料仍然会存入每台服务器的日志传送资料表,并且影响到后续的日志传送设定动作.为了保证这些剩余资料都会被清除,请确实删除每台服务器msdb数据库内日志传送资料表之相关资料. 错误信息:Error 14261: The specified primary_server_name.primary_

SQL Server 2000之日志传送功能—问题解决

server|解决|问题 可能發生的錯誤 一.残余数据    当您进行SQL Server 2000日志传送的实验时,也许偶而会中断设定过程.如果真是如此,那么某些资料仍然会存入每台服务器的日志传送资料表,并且影响到后续的日志传送设定动作.为了保证这些剩余资料都会被清除,请确实删除每台服务器msdb数据库内日志传送资料表之相关资料. 错误信息:Error 14261: The specified primary_server_name.primary_database_name ('N') al

PHP连接sql server 2005环境配置及问题解决_php技巧

一.Windows下PHP连接SQLServer 2005 设定:安装的Windows操作系统(Win7 或XP均可,其他系统暂未测试),在C盘下:PHP的相关文件位于c:/PHP下面,其配置文件php.ini位于C:\Windows下面. 连接前配置系统: 1.检查文件 php\ntwdblib.dll, 默认PHP的安装目录下面有一个,不能连接再替换.             下载正确版本的 ntwdblib.dll (2000.80.194.0) 2.配置php            a.

SQL Server WAITFOR Delay 使用变量问题解决办法

sql server2008帮助中, 有一段WAITFOR Delay 的示例, 是错误的!!!   USE AdventureWorks; GO IF OBJECT_ID('dbo.TimeDelay_hh_mm_ss','P') IS NOT NULL     DROP PROCEDURE dbo.TimeDelay_hh_mm_ss; GO CREATE PROCEDURE dbo.TimeDelay_hh_mm_ss     (     @DelayLength char(8)= '00

SQL流水帐号的生成

  1 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号. 2 --得到新编号的函数 3 CREATE FUNCTION f_NextBH() 4 RETURNS char(8) 5 AS 6 BEGIN 7 RETURN(SELECT ''BH''+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM<

保护SQL Server:为安全性而安装

由于多种原因,进行安全设置的人们常常不理解数据的真正价值,所以,他们也无法对数据进行合适的保护.将你的数据只限于需要的人访问,并保证访问的人的合法性,是一个数据库管理人员的重要工作.然而,确保数据可以访问不是意味着数据向所有人公开,相反的,你必须很仔细地保护数据,并只对需要使用数据的人进行开放. 设置安全性过程通用的软件维护和数据库更新都会对系统安全起着重要作用,通常包括以下步骤: 分配一个可靠的密码给缺省的系统管理(SA)帐号.然后,建立自己唯一命名的帐号,并将这一帐号放入sysadmin.一

SQL Server:安全设计从头起

开发人员和管理人员通常不断地考虑程序安全问题的策略──添加安全措施不再是一个可以完全接收的方法.程序的安全问题必须从设计的开始就得考虑,并贯穿开发的整个过程.以后如果要开发一个SQL Server的数据库,你一定要从开始就遵循这些安全设计规则. 最基本的要点如果你不能理解SQL Server security基本的概念,就马上先停止开发并先阅读这些开发准则,你不可能在不知道这些概念的基础上就能够正确地使一个数据库安全化.程序的安全正如一辆卡车一样.你具有一个发动机,一把钥匙,当钥匙打开发动机即发

建立安全模型以保护SQL Server

由于多种原因,进行安全设置的人们常常不理解数据的真正价值,所以,他们也无法对数据进行合适的保护.将你的数据只限于需要的人访问,并保证访问的人的合法性,是一个数据库管理人员的重要工作.然而,确保数据可以访问不是意味着数据向所有人公开,相反的,你必须很仔细地保护数据,并只对需要使用数据的人进行开放. 设置安全性过程 通用的软件维护和数据库更新都会对系统安全起着重要作用,通常包括以下步骤: 分配一个可靠的密码给缺省的系统管理(SA)帐号.然后,建立自己唯一命名的帐号,并将这一帐号放入sysadmin.