SQLSERVER 修改密码提示.doc
文本预览下载声明
SQLSERVER 修改密码提示 “错误 2812: 未能找到存储过程 sp_password。” 解决方法
问题分析:因?SQL?服务器中毒,导致病毒篡改?SQL?用户的密码,病毒为了阻止操作员手工修正(修改)SQL用户的密码,而把存储过程?sp_password?删除,导致的问题。错误如下图所示:
?
解决思路:在系统中重新建一个?sp_password?的存储过程,以便更新现有的?SQL用户密码
步骤:
1、打开查询分析器:
????方法1.?可以依次打开:开始---?运行???,输入命令?isqlw,按回车即可启动查询分析器,如下图所示
???????????????
????方法2.?通过开始菜单、程序、Microsoft?SQL?Server、找到“查询分析器”单击打开即可启动2、登录?查询分析器:在弹出的登录界面中作如下图所示的设置,点“确定”,登录到查询分析器中
3、把下面附录中的重建代码复制到刚才打开的查询分析器中
?
4、按?F5??执行重建代码
??????代码分析:允许修改系统数据???---??重建系统内置存储过程???----?恢复为不能直接修改系统数据
?
5、后记:此方法只是能解决因为没有存储过程而不能修改密码的问题,出现此问题,大多数情况下操作系统已经中毒,这也是为什么更改密码之后,过段时间又不能使用的原因。
可能有的朋友会想,那把密码改得更复杂,让病毒程序不能连接到SQLSERVER?。其实,改密码并不能彻底解决这个问题,有兴趣的朋友可以试试使用?-E?参数,即“使用信任连接而不请求密码”的方式连接到?SQLSERVER??取得SQLSERVER?的所有权限。
?
注:本文以?SQL?SERVER?2000?界面演示解决此问题的步骤
?
附录:重建?sp_passsword?存储过程?代码
--?SQL代码开始?
sp_configure?allow?updates,?1RECONFIGURE?WITH?OVERRIDE
go
use?mastergo
if?exists?(select?*?from?dbo.sysobjects?where?id?=?object_id(N[dbo].[sp_password])?and?OBJECTPROPERTY(id,?NIsProcedure)?=?1)drop?procedure?[dbo].[sp_password]go
create?procedure?sp_password????@old?sysname?=?NULL,????????--?the?old?(current)?password????@new?sysname,???????????????--?the?new?password????@loginame?sysname?=?NULL????--?user?to?change?password?onas????--?SETUP?RUNTIME?OPTIONS?/?DECLARE?VARIABLES?--?set?nocount?on????declare?@self?int????select?@self?=?CASE?WHEN?@loginame?is?null?THEN?1?ELSE?2?END
????--?RESOLVE?LOGIN?NAME????if?@loginame?is?null????????select?@loginame?=?suser_sname()
????--?CHECK?PERMISSIONS?(SecurityAdmin?per?Richard?Waymire)?--?IF?(not?is_srvrolemember(securityadmin)?=?1)????????AND?not?@self?=?1?begin????dbcc?auditevent?(107,?@self,?0,?@loginame,?NULL,?NULL,?NULL)????raiserror(15210,-1,-1)????return?(1)?end?ELSE?begin????dbcc?auditevent?(107,?@self,?1,?@loginame,?NULL,?NULL,?NULL)?end
????--?DISALLOW?USER?TRANSACTION?--?set?implicit_transactions?off?IF?(@@trancount??0)?begin??raiserror(15002,-1,-1,sp_password)??return?(1)?end
????--?RESOLVE?LOGIN?NAME?(disal
显示全部