sa密码修改错误未找到存储过程
修改服务器密码或者修改SQL SERVER SA密码导致金蝶K3不可用的解决方法

A.SQL SA密码忘记需要重置,或者修改了SA的密码,导致金蝶客户端无法登陆。
金蝶K/3 Sql server忘记sa密码,修改sa密码,或者sa用户的密码过期,导致SQL混合身份验证模式被锁定。
登陆账套提示sa用户登陆失败:一、SQL SERVER 2000修改sa密码1.登陆SQL 2000查询分析器2.修改密码sp_password Null,'sa','sa'3.用sa的新密码登陆查询分析器。
二、SQL SERVER 2005或2008修改sa密码1、先用Window身份验证方式登陆进去,选择数据库实例,右键选择属性—>安全性:把服务器身份验证选项从“Window身份验证模式”改为“SQLServer和Window身份验证模式”。
点击确定,关闭当前对象资源管理器。
2、重新用Window验证方式登陆,在左边的树结构中选择“数据库”下面的“安全性”选项—>登录名—>sa,右键属性—>在“SQLServer身份验证”中输入要设置的sa密码。
在状态下,将登陆选择为启用3.重新启动SQLServer服务。
记着,是重启服务,不是关掉sqlserver2008然后再打开。
具体方法是在数据库实例上点右键,选择“重新启动”项即可。
最后关闭sqlserver2008,启动后用sa登陆。
二、进K/3账套管理,将账套逐一点“属性”,修改sa的系统口令,进行数据库连接。
K/3WISE新版修改sa密码后进账套管理录入sa的新密码,数据库文件路径和数据库日志文件路径选择位置,确定,进入账套管理。
将账套逐一点“属性”,修改sa的系统口令,进行数据库连接。
B.金蝶服务器操作系统管理员(administrator)账号密码修改导致SQL SERVER服务启动不了1.我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户"或:2.我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.两者的区别:选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.C.金蝶服务器操作系统的电脑名称被修改掉了例如:WIN-FPASDJSVKS6改K3,数据库能正常启动,K/3账套管理修改数据服务器如果是修改了计算机名,数据库服务启动不了,则放入SQL安装光盘,执行安装程序进行修复(修复过程自动进行,照提示操作就行了,不会破坏数据,也很快)。
SQLServer超级用户口令修改过

SQLServer超级用户口令修改过SQL Server超级用户口令修改过安装软件后,登录系统管理提示: SQL Server口令此提示可能由于有时sa口令遗忘或失效,也可能是环境问题所致。
首先:要分析是否设置了sa口令,或者录入的sa口令是否正确,可通过命令提示符验证sa口令。
〖操作步骤〗1. 在正在连接到的计算机中打开命令提示符窗口。
开始—运行—输入cmd—确定2. 在命令提示符处键入以下命令:osql -U sa注意:(1)‘U’字符一定为大写(2)这样可以通过sa 账户连接到本地默认实例,若要连接到计算机上安装的命名实例,请键入osql -U sa -S servername 然后按 Enter 键,随机出现以下提示:Password:3.如果没有密码,则直接按Enter 键;如果有密码,则录入sa 密码,再按 Enter 键,此操作将为 sa 传递一个 NULL(空)密码。
如果按 Enter 键后出现以下提示:1>说明sa 账户没有密码。
以上是正常的情况,如果在这个操作过程中,有错误提示,则很可能是环境问题。
其次:对环境问题进行分析。
【问题1:】现象描述:如果收到以下错误信息:"Login Failed for user \'sa\'." 或“用户'sa'登录失败”则表示输入的密码不正确。
此错误信息表示已为 sa 账户创建了密码。
原因分析:在安装数据库或配置系统管理时设置过sa口令,由于第一次登录系统管理或重新安装用友通等原因引起的。
解决方法:修改或清空SQL Server的sa口令〖操作步骤〗企业管理器—控制台根目录—Microsoft SQL Servers—SQL Server组—服务器名称(默认名称为机器名或local)—安全性—登录—双击sa右边界面)—密码重置清空这个密码即可。
补充说明:如果用户安装的是MSDE。
因MSDE没有企业管理器,可使用相关工具或命令来初始化或设置口令,建议方案:使用SQLServer企业管理器组件来设置,工具见通网站—服务工具——SQL管理工具(939号)。
解决SQL2000数据库连接失败

解决此问题有两种方法:第一种方法先停止服务器服务,双击主机屏幕右下角的的图标,弹1. 出界面选停止,再弹出的选项选择是。
2.解压data压缩包(没有的可以咨询售后服务人员),复制文件夹里所有文件,然后进入D盘,D:\Program Files\MicrosoftSQLServer\MSSQL\Data 这个路径,粘贴刚才复制的所有文件,提示替换时选全部。
重新点击这个图标,弹出界面选,开始/3.继续,等图标变成绿色三角即可关掉。
重新打开管理系统即可正常使用。
1第二种方法第一步:首先打开企业管理器,位置:服务器这台机器(也就是主机)开始-程序-Microsoft SQL Server-企业管理器依次点开-控制台根目录- Microsoft SQL Server- Microsoft SQL组-(local)(Windows NT)-安全性-登录2sa项目,双击,弹出界面然后选中右面出现的,1步数据库选项选成myhis第2步密码选项删除掉密码,然后点保存第弹出选项不填写,直接点确定。
此时,如果点确定之后界面直接消失,则程序可以正常使用了。
就不需要操作第二步了。
第二步如果弹出3错误2812:未能找到存储过程'sp_password'字样服务器这台机器(也就是主机)开始,位置:查询分析器”“则打开-程序-Microsoft SQL Server-查询分析器弹出界面如下图,直接点确定进入,如果提示错误,则选中SQL Server身份验证(Q)再点确定进入4弹出界面如下在红线箭头位置的光标处粘贴如下代码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 on5declare @self intselect @self = CASE WHEN @loginame is null THEN 1 ELSE 2 END -- RESOLVE LOGIN NAMEif @loginame is nullselect @loginame = suser_sname()-- CHECK PERMISSIONS (SecurityAdmin per Richard Waymire) -- IF (not is_srvrolemember('securityadmin') = 1)AND not @self = 1begindbcc auditevent (107, @self, 0, @loginame, NULL, NULL, NULL) raiserror(15210,-1,-1)return (1)endELSEbegindbcc auditevent (107, @self, 1, @loginame, NULL, NULL, NULL) end-- DISALLOW USER TRANSACTION --set implicit_transactions offIF (@@trancount > 0)beginraiserror(15002,-1,-1,'sp_password')return (1)end-- RESOLVE LOGIN NAME (disallows nt names)if not exists (select * from whereloginname = @loginame and isntname = 0)beginraiserror(15007,-1,-1,@loginame)return (1)end-- IF non-SYSADMIN ATTEMPTING CHANGE TO SYSADMIN, REQUIRE PASSWORD (218078) --if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists (SELECT * FROM WHERE loginname = @loginame and isntname = 0AND sysadmin = 1) )SELECT @self = 1-- CHECK OLD PASSWORD IF NEEDED --if (@self = 1 or @old is not null)if not exists (select * fromwhere srvid IS NULL andname = @loginame and6( (@old is null and password is null) orEND)) 0 1 ELSE WHEN (CASE xstatus&2048 = 2048 THEN (pwdcompare(@old, password,= 1) ) )beginraiserror(15211,-1,-1)return (1)end-- CHANGE THE PASSWORD --updategetdate(), = convert(varbinary(256), pwdencrypt(@new)), xdate2 set password =xstatus = xstatus & (~2048)where name = @loginame and srvid IS NULL-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --exec('use master grant all to null')-- FINALIZATION: RETURN SUCCESS/FAILURE --if @@error <> 0return (1)raiserror(15478,-1,-1)return (0) -- sp_password粘贴完毕后,点击红圈里的绿色三角的运行符号,提示命令已成功完成。
SA建系统用户

今天在写一个存储过程,其命名"sp_adduser",一直弄不通。
后来才去知道这个名字是保留字,汗!!!下面是我在网上找的这两个保留字的说明:sp_addlogin与ap_adduser两个存储过程的使用,以前没用到过,看书时也没有注意,今天去给一个同事建数据库和用户,一下子用不起来了,汗!在使用mysql时,grant命令同时就创建了login与user,而在sybase等其它大型数据库中却不是这样。
要通过sp_addlogin和sp_adduser来增加用户登录及授权信息。
sp_addlogin:功能:将新的用户帐号添加到Adaptive Server;在创建时指定特定登录的口令有效期、最小口令长度和所允许的最大失败登录次数。
语法:sp_addlogin loginname,passwd[,defdb][,deflanguage][,fullname][,passwdexp][,minpwdlen][,maxfieldlo gins],各个参数分别表示:登录名,用户口令,缺省数据库名称,缺省语言,全名,口令有效期,最小口令长度,允许登录失败次数;sp_adduser:功能:将新的用户添加到当前数据库;语法:sp_adduser loginname[,name in db[,grpname]],各个参数分别表示:master.dbo.syslogins中的用户名,也就是sp_addlogin加的loginname、在当前数据库中的用户名、将用户添加到数据库中的现有组。
简言之:addlogin:增加登陆用户,使你能通过isql登陆adduser:增加数据库用户,使你能use databasesp_addlogin创建新的SQL Server 登录,该登录允许用户使用SQL Server 身份验证连接到SQL Server 实例。
重要事项:后续版本的 Microsoft SQL Server 将删除该功能。
解决mssql修改sa帐户密码时出现的提示错误2812

create procedure sp_password
@old sysname = NULL,
@new sysname,
@loginame sysname = NULL
AND sysadmin = 1) )
SELECT @self = 1
if (@self = 1 or @old is not null)
if not exists (select * from master.dbo.sysxlogins
where srvid IS NULL and
begin
raiserror(15007,-1,-1,@loginame)
return (1)
end
if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists
(SELECT WHERE loginname = @loginame and isntname = 0
return (1)
end
ELSE
begin
dbcc auditevent (107, @self, 1, @loginame, NULL, NULL, NULL)
end
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,'sp_password')
return (1)
找不到存储过程 sp_addextendedproc

找不到存储过程sp_addextendedproc 找不到存储过程sp_addextendedproc,是由于sqlserver被网络病毒攻击所至。
处理办法:1打开企业管理器,A、在BUILTIN\Administrators 点右建选属性,选‘拒绝访问’。
B、在sa 上点右建选属性,设一个密码这个密码要记住,通常可以设成88482、打开管理3、在SQL Server 代理上点右建选‘属性’。
按下图设置一下。
4、打开查询分析品,输入下面的代码:(注:打开开始-------→程序-----→Microsoft SQL Server----→查询分析器-----→输入用户户和密码,确定)use mastergocreate procedure sp_addextendedproc@functname nvarchar(517),@dllname varchar(255)asset implicit_transactions offif @@trancount > 0beginraiserror(15002,-1,-1,'sp_addextendedproc')return (1)enddbcc addextendedproc( @functname, @dllname)return (0)按F5 就可以了。
(完)附加:I 另外,通过第1步处理后,在企业管理器中将不能点开原来的sqlserver服务器了,会提示:"XXXX\Administrator 连接失败",此时要把"(local)(Windows NT)"删除掉,然后在SQLSEVER组上点右键,新的SQLSERVER注册。
选择127.0.0.1 ,在选择身份验证模式时,连接使用要用SQLSERVER身份验证,登录名和密码设置为sa 和sa的密码,即可。
II在windows 的控制面版,管理工具、计算机管理、本地用户和组,用户,找到SQLDebugger 点右键属性,"帐户已经停用" 打勾,确定。
关于sa登陆密码错误的问题
关于sa登陆密码错误的问题
一、问题描述
在将其他环境的u9数据库还原到u9正在使用的数据库上后,在登陆u9做单据时,报“CLR_AllocSerials"期间出现.net Framework错误.."用户'sa'密码登陆失败。
二、问题分析
由于U9采用了CLR函数原因,其密码是单据配置的。
因此,其他其他环境数据库覆盖时,如果其他环境的sa密码和当前环境的sa密码不一致,则会导致出现上述错误。
三、解决方案
方案一
采用u9的数据恢复工具进行恢复。
这样就不会出现上述问题。
具体界面如下:
图表1
图表2
图表3
方案二
1.手工重新配置一下企业连接串,具体如下:
图表4
图表5
图表 6 2.重新选择一下u9的数据库:
图表7
3.还要记得把sql server服务重启一下。
错误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 OVERRIDEgouse mastergoif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_password]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_password]gocreate 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 ondeclare @self intselect @self = CASE WHEN @loginame is null THEN 1 ELSE 2 END-- RESOLVE LOGIN NAMEif @loginame is nullselect @loginame = suser_sname()-- CHECK PERMISSIONS (SecurityAdmin per Richard Waymire) --IF (not is_srvrolemember('securityadmin') = 1)AND not @self = 1begindbcc auditevent (107, @self, 0, @loginame, NULL, NULL, NULL)raiserror(15210,-1,-1)return (1)endELSEbegindbcc auditevent (107, @self, 1, @loginame, NULL, NULL, NULL)end-- DISALLOW USER TRANSACTION --set implicit_transactions offIF (@@trancount > 0)beginraiserror(15002,-1,-1,'sp_password')return (1)end-- RESOLVE LOGIN NAME (disallows nt names)if not exists (select * from master.dbo.syslogins whereloginname = @loginame and isntname = 0)beginraiserror(15007,-1,-1,@loginame)return (1)end-- IF non-SYSADMIN ATTEMPTING CHANGE TO SYSADMIN, REQUIRE PASSWORD (218078) -- if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists(SELECT * FROM master.dbo.syslogins WHERE loginname = @loginame and isntname = 0AND sysadmin = 1) )SELECT @self = 1-- CHECK OLD PASSWORD IF NEEDED --if (@self = 1 or @old is not null)if not exists (select * from master.dbo.sysxloginswhere srvid IS NULL andname = @loginame and( (@old is null and password is null) or(pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) = 1) ) )beginraiserror(15211,-1,-1)return (1)end-- CHANGE THE PASSWORD --update master.dbo.sysxloginsset password = convert(varbinary(256), pwdencrypt(@new)), xdate2 = getdate(), xstatus = xstatus & (~2048)where name = @loginame and srvid IS NULL-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE -- exec('use master grant all to null')-- FINALIZATION: RETURN SUCCESS/FAILURE --if @@error <> 0return (1)raiserror(15478,-1,-1)return (0) -- sp_passwordGOsp_configure 'allow updates', 0RECONFIGURE WITH OVERRIDE-- SQL代码结束。
辉煌系列常见问题集
辉煌系列常见问题集辉煌系列常见问题集一、7.X以下版本常见问题 (1)二、SQL版本常见问题 (3)三、业务处理中常见问题 (6)四、辉煌版常见打印问题 (7)五、辉煌版常见客户理解错误导致的问题 (8)六、辉煌版常见远程问题处理 (10)七、辉煌版常见数据问题 (11)八、辉煌系列版本间升级说明 (14)一、7.x以下版本常见问题1、7.x以下版本(全能竞争版、普及版、豪华版6.3)如何升级到7.2版本答:a.备份原版本数据b.用7.2安装程序安装,安装时选择原版本安装路径,再选择升级安装2、老辉煌72版本的数据怎样转换为小辉煌、支持辉煌2005的辉煌72版本?答:a.将老辉煌72转换为小辉煌,则将老辉煌数据恢复到小辉煌之后,再将附件中的changex.dbf 更名为change.dbf替换到小辉煌安装目录下的data文件夹中b.将老辉煌72转换为支持辉煌2005的辉煌72,则将老辉煌数据恢复到支持辉煌2005的辉煌72之后,再将附件中的change2005.dbf更名为change.dbf替换到支持辉煌2005的辉煌72安装目录下的data文件夹中3、7.2版本的数据如何升级到8.x版本(7.2以下版本必须先升级到7.2版本)1)7.2版本的数据正确时的升级步骤答:a.7.2备份数据(最好将管家婆安装目录下的data文件夹复制到其它目录下保存)b.7.2做年结存c.安装8.x版本,并在“系统维护”--“超级用户”--“升级7.x数据”中升级2)升级过程中报错:数据库中有相同记录答:a.如果7.2的基本信息中存在超过五级的商品:将第6级商品搬移到第5级b.如果编号或者全名存在特殊字符,如[,* ,将特殊字符去掉3)报错:c:\grasp\data\ptype不存在namepy字段答:a.用7.2安装程序对原来7.X程序做升级安装(即安装时路径选择原来7.x安装路径,再选择“升级安装”)4)没有任何报错,但是升级之后库存数量、金额与7.2不符答:在7.2版本中将成本算法改为加权平均法,再替换附件中的pinfo.dbf文件复制到出错辉煌版7.2安装目录下的data文件夹下覆盖同名文件,进入管家婆做系统重建,最后再升级到8.x4、7.x版本录账、查账时提示:tmpdly错误(以辉煌版7.2为例)答:a.备份数据b.将附件中的tmpdly.dbf,tmpdlynd.dbf文件复制到出错辉煌版7.2安装目录下的data文件夹下覆盖同名文件d.如果仍然不能解决问题,则需要将数据发回公司处理5、7.x以下版本的单据中的表格越变越小(以辉煌版7.2为例)答:a.备份数据b.将附件中的vchtype.dbf文件复制到出错辉煌版7.2安装目录下的data文件夹下覆盖同名文件6、7.2版本,在<查帐>→<业务统计>→往来单位回款统计→选定往来单位,查询<明细帐本>时提示:文件E:GRASP/DATA/EMPLOY.dbf-go-o-reccouv4-4!答:在输入的单据中没有录入经手人造成的7、过帐的时候提示,\grasp\data\sysdata.dbf发现非法字段24。
解决sql账户sa登录失败的方法 -回复
解决sql账户sa登录失败的方法-回复解决SQL 账户sa 登录失败的方法引言:在SQL Server 中,系统管理员(sa)账户是一个具有最高权限的账户,可以访问和管理数据库服务器中的所有资源。
然而,有时我们可能会遇到sa 登录失败的问题,这可能导致无法正常访问和管理数据库。
本文将逐步介绍如何解决这个问题,以确保sa 账户登录成功。
第一步:确认问题首先,我们需要确认sa 账户登录失败的原因。
在许多情况下,这是由于以下几个常见原因之一所导致的:1. 忘记sa 密码:如果您已经使用sa 账户很长时间,可能会忘记密码。
在这种情况下,您需要重置sa 的密码。
2. sa 账户被禁用:有时,出于安全原因,管理员可能会禁用sa 账户。
您需要确保sa 账户处于启用状态。
3. SQL Server 服务未启动:如果SQL Server 服务未启动,则无法正常登录sa 账户。
您需要确保SQL Server 服务正在运行。
第二步:重置sa 密码如果您忘记了sa 账户的密码,您需要重置它。
以下是一些方法可帮助您重置sa 密码:1. 使用SQL Server Management Studio(SSMS):如果您有访问SQL Server 的管理工具(如SSMS),您可以使用该工具来重置sa 密码。
打开SSMS,选择要连接的服务器,右键单击服务器名称,选择“属性”。
在“常规”选项卡上,找到“安全性”选项,然后选择“SQL Server 和Windows 验证模式”。
点击确定后,回到对象资源管理器窗口,依次选择服务器-> 安全性-> 登录。
右键单击sa 账户,选择“属性”。
在“一般”选项卡上,可以找到“密码”框,输入新密码并确认。
保存更改后,使用新密码进行sa 登录。
2. 使用Transact-SQL(T-SQL):如果您无法访问SSMS,您可以使用T-SQL 来重置sa 密码。
打开SQL Server Management Studio 或任何T-SQL 编辑器,连接到SQL Server 实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题: sql修改SA密码,提示错误2812,未能找到存储过程"SA-PASSWORD"
那把下面的代码在master库运行一下即可:
create procedure sp_password
@old sysname = NULL, -- the old (current) password
@new sysname, -- the new password
@loginame sysname = NULL -- user to change password on
as
-- 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 (disallows nt names)
if not exists (select * from master.dbo.syslogins where
loginname = @loginame and isntname = 0)
begin
raiserror(15007,-1,-1,@loginame)
return (1)
end
-- IF non-SYSADMIN ATTEMPTING CHANGE TO SYSADMIN, REQUIRE PASSWORD (218078) --
if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists
(SELECT * FROM master.dbo.syslogins WHERE loginname = @loginame and isntname = 0
AND sysadmin = 1) )
SELECT @self = 1
-- CHECK OLD PASSWORD IF NEEDED --
if (@self = 1 or @old is not null)
if not exists (select * from master.dbo.sysxlogins
where srvid IS NULL and
name = @loginame and
( (@old is null and password is null) or
(pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) = 1) ) )
begin
raiserror(15211,-1,-1)
return (1)
end
-- CHANGE THE PASSWORD --
update master.dbo.sysxlogins
set password = convert(varbinary(256), pwdencrypt(@new)), xdate2 = getdate(), xstatus = xstatus & (~2048)
where name = @loginame and srvid IS NULL
-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec('use master grant all to null')
-- FINALIZATION: RETURN SUCCESS/FAILURE --
if @@error <> 0
return (1)
raiserror(15478,-1,-1)
return (0) -- sp_password。