SQLSERVER修改密码提示“错误2812:未能找到存储过程'sp_passwor

解决方法

问题分析:因SQL服务器中毒,导致病毒篡改SQL用户的密码,病毒为了阻止操作员手工修正(修改)SQL用户的密码,而把存储过程'sp_password'删除,导致的问题。错误如下图所示:


解决思路:在系统中重新建一个'sp_password'的存储过程,以便更新现有的SQL用户密码

步骤:

1、打开查询分析器:

方法1.可以依次打开:开始--->运行,输入命令isqlw,按回车即可启动查询分析器

方法2.通过开始菜单、程序、MicrosoftSQLServer、找到“查询分析器”单击打开即可启动

2、复制、粘贴下面的语句运行一下就ok了。

--SQL代码开始

sp_configure'allowupdates',1
RECONFIGUREWITHOVERRIDE

go

usemaster
go

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[sp_password]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
dropprocedure[dbo].[sp_password]
go

createproceduresp_password
@oldsysname=NULL,--theold(current)password
@newsysname,--thenewpassword
@loginamesysname=NULL--usertochangepasswordon
as
--SETUPRUNTIMEOPTIONS/DECLAREVARIABLES--
setnocounton
declare@selfint
select@self=CASEWHEN@loginameisnullTHEN1ELSE2END

--RESOLVELOGINNAME
if@loginameisnull
select@loginame=suser_sname()

--CHECKPERMISSIONS(SecurityAdminperRichardWaymire)--
IF(notis_srvrolemember('securityadmin')=1)
ANDnot@self=1
begin
dbccauditevent(107,@self,0,@loginame,NULL,NULL,NULL)
raiserror(15210,-1,-1)
return(1)
end
ELSE
begin
dbccauditevent(107,@self,1,@loginame,NULL,NULL,NULL)
end

--DISALLOWUSERTRANSACTION--
setimplicit_transactionsoff
IF(@@trancount>0)
begin
raiserror(15002,-1,-1,'sp_password')
return(1)
end

--RESOLVELOGINNAME(disallowsntnames)
ifnotexists(select*frommaster.dbo.sysloginswhere
loginname=@loginameandisntname=0)
begin
raiserror(15007,-1,-1,@loginame)
return(1)
end

--IFnon-SYSADMINATTEMPTINGCHANGETOSYSADMIN,REQUIREPASSWORD(218078)--
if(@self<>1ANDis_srvrolemember('sysadmin')=0ANDexists
(SELECT*FROMmaster.dbo.sysloginsWHEREloginname=@loginameandisntname=0
ANDsysadmin=1))
SELECT@self=1

--CHECKOLDPASSWORDIFNEEDED--
if(@self=1or@oldisnotnull)
ifnotexists(select*frommaster.dbo.sysxlogins
wheresrvidISNULLand
name=@loginameand
((@oldisnullandpasswordisnull)or
(pwdcompare(@old,password,(CASEWHENxstatus&2048=2048THEN1ELSE0END))=1)))
begin
SQLSERVER修改密码提示“错误2812:未能找到存储过程'sp_passwor
raiserror(15211,-1,-1)
return(1)
end

--CHANGETHEPASSWORD--
updatemaster.dbo.sysxlogins
setpassword=convert(varbinary(256),pwdencrypt(@new)),xdate2=getdate(),xstatus=xstatus&(~2048)
wherename=@loginameandsrvidISNULL

--UPDATEPROTECTIONTIMESTAMPFORMASTERDB,TOINDICATESYSLOGINSCHANGE--
exec('usemastergrantalltonull')

--FINALIZATION:RETURNSUCCESS/FAILURE--
if@@error<>0
return(1)
raiserror(15478,-1,-1)
return(0)--sp_password

GO
sp_configure'allowupdates',0
RECONFIGUREWITHOVERRIDE

--SQL代码结束

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/325689.html

更多阅读

wifi如何修改密码和用户名 win10 修改用户名密码

wifi如何修改密码和用户名——简介 现在有很多人都在蹭网!同时也出现了很多的暴力破解软件,这给大家造成了很多的不便上网浏览网页都变得异常缓慢。最好的解决办法就是修改密码尽量长设置8位数!@#¥%……&amp;*()等等。wifi如何修改密码和

如何修改人人网密码 人人网怎么修改密码

如何修改人人网密码——简介修改人人网密码如何修改人人网密码——方法/步骤如何修改人人网密码 1、输入你的账号和密码,登录你的人人网如何修改人人网密码 2、登录成功,在人人网首页,点击账号后面的小三角,选择账户设置如何修改人人

QQ忘记密保问题怎么修改密码 qq忘记密保问题怎么办

QQ忘记密保问题怎么修改密码——简介QQ帐号如果忘记密保问题怎么办?怎么来修改密码?这个很让人头疼的问题今天让我来帮大家解决一下吧,这里我们使用帐号申诉功能,哈哈!QQ忘记密保问题怎么修改密码——工具/原料你的QQ帐号QQ忘记密保问

虚拟连接提示错误800怎么解决 虚拟连接错误800

虚拟连接提示错误800怎么解决——简介有的时候连接虚拟vpn的时候会提示错误代码800,遇到这个情况怎么解决呢。下面 教大家怎么解决此类问题:虚拟连接提示错误800怎么解决——工具/原料电脑一台虚拟连接提示错误800怎么解决——方法

移动wlan密码修改 移动wlan如何修改密码

移动wlan密码修改——简介移动wlan密码修改移动wlan密码修改——工具/原料移动wlan移动wlan密码修改——方法/步骤移动wlan密码修改 1、静态密码修改:编写短信“XGWLANMM(大小写均可)#原密码#新密码”发送至10086(密码区分大小写,长

声明:《SQLSERVER修改密码提示“错误2812:未能找到存储过程'sp_passwor》为网友夜生活分享!如侵犯到您的合法权益请联系我们删除