《最新Sa-无法修改密码-SQLSERVER-修改密码提示-“错误-2812-未能找到存储过程-'sp-password'”-解决方法.docx》由会员分享,可在线阅读,更多相关《最新Sa-无法修改密码-SQLSERVER-修改密码提示-“错误-2812-未能找到存储过程-'sp-password'”-解决方法.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateSa-无法修改密码-SQLSERVER-修改密码提示-“错误-2812-未能找到存储过程-sp-password。”-解决方法Sa-无法修改密码-SQLSERVER-修改密码提示-“错误-2812-未能找到存储过程-sp-password。”-解决方法SQLSERVER 修改密码提示 “错误 2812: 未能找到存储过程 sp_password。” 解决方法问题分析:
2、因SQL服务器中毒,导致病毒篡改SQL用户的密码,病毒为了阻止操作员手工修正(修改)SQL用户的密码,而把存储过程sp_password删除,导致的问题。错误如下图所示:解决思路:在系统中重新建一个sp_password的存储过程,以便更新现有的SQL用户密码步骤:1、打开查询分析器:方法1.可以依次打开:开始-运行,输入命令isqlw,按回车即可启动查询分析器,如下图所示方法2.通过开始菜单、程序、MicrosoftSQLServer、找到“查询分析器”单击打开即可启动2、登录查询分析器:在弹出的登录界面中作如下图所示的设置,点“确定”,登录到查询分析器中3、把下面附录中的重建代码复制到刚才
3、打开的查询分析器中4、按F5执行重建代码代码分析:允许修改系统数据-重建系统内置存储过程-恢复为不能直接修改系统数据5、后记:此方法只是能解决因为没有存储过程而不能修改密码的问题,出现此问题,大多数情况下操作系统已经中毒,这也是为什么更改密码之后,过段时间又不能使用的原因。可能有的朋友会想,那把密码改得更复杂,让病毒程序不能连接到SQLSERVER。其实,改密码并不能彻底解决这个问题,有兴趣的朋友可以试试使用-E参数,即“使用信任连接而不请求密码”的方式连接到SQLSERVER取得SQLSERVER的所有权限。注:本文以SQLSERVER2000界面演示解决此问题的步骤附录:重建sp_pass
4、sword存储过程代码-SQL代码开始sp_configureallowupdates,1RECONFIGUREWITHOVERRIDEgousemastergoifexists(select*fromdbo.sysobjectswhereid=object_id(Ndbo.sp_password)andOBJECTPROPERTY(id,NIsProcedure)=1)dropproceduredbo.sp_passwordgocreateproceduresp_passwordoldsysname=NULL,-theold(current)passwordnewsysname,-thene
5、wpasswordloginamesysname=NULL-usertochangepasswordonas-SETUPRUNTIMEOPTIONS/DECLAREVARIABLES-setnocountondeclareselfintselectself=CASEWHENloginameisnullTHEN1ELSE2END-RESOLVELOGINNAMEifloginameisnullselectloginame=suser_sname()-CHECKPERMISSIONS(SecurityAdminperRichardWaymire)-IF(notis_srvrolemember(se
6、curityadmin)=1)ANDnotself=1begindbccauditevent(107,self,0,loginame,NULL,NULL,NULL)raiserror(15210,-1,-1)return(1)endELSEbegindbccauditevent(107,self,1,loginame,NULL,NULL,NULL)end-DISALLOWUSERTRANSACTION-setimplicit_transactionsoffIF(trancount0)beginraiserror(15002,-1,-1,sp_password)return(1)end-RESO
7、LVELOGINNAME(disallowsntnames)ifnotexists(select*frommaster.dbo.sysloginswhereloginname=loginameandisntname=0)beginraiserror(15007,-1,-1,loginame)return(1)end-IFnon-SYSADMINATTEMPTINGCHANGETOSYSADMIN,REQUIREPASSWORD(218078)-if(self1ANDis_srvrolemember(sysadmin)=0ANDexists(SELECT*FROMmaster.dbo.syslo
8、ginsWHEREloginname=loginameandisntname=0ANDsysadmin=1)SELECTself=1-CHECKOLDPASSWORDIFNEEDED-if(self=1oroldisnotnull)ifnotexists(select*frommaster.dbo.sysxloginswheresrvidISNULLandname=loginameand(oldisnullandpasswordisnull)or(pwdcompare(old,password,(CASEWHENxstatus&2048=2048THEN1ELSE0END)=1)beginra
9、iserror(15211,-1,-1)return(1)end-CHANGETHEPASSWORD-updatemaster.dbo.sysxloginssetpassword=convert(varbinary(256),pwdencrypt(new),xdate2=getdate(),xstatus=xstatus&(2048)wherename=loginameandsrvidISNULL-UPDATEPROTECTIONTIMESTAMPFORMASTERDB,TOINDICATESYSLOGINSCHANGE-exec(usemastergrantalltonull)-FINALIZATION:RETURNSUCCESS/FAILURE-iferror0return(1)raiserror(15478,-1,-1)return(0)-sp_passwordGOsp_configureallowupdates,0RECONFIGUREWITHOVERRIDE-SQL代码结束-