多语言展示
当前在线:355今日阅读:23今日分享:25

修改sql2000数据库密码报错sp_password

我们经常会修改sa密码,但是修改的时候会报错“sp_password”,需要执行脚本
方法/步骤
1

打开企业管理器

2

点击工具的sql查询分析器

3

把以下脚本复制到查询分析器,点击绿色三角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 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_password

推荐信息