公告:

关于数据库修改密码提示126代码报错解决方法

首先在企业管理器中找到 master中扩展存储过程中的sp_password,重命名为新建sp_password做准备;
打开sql查询分析器,输入以下代码后执行(F5):
有时可能在执行该语句是提示”未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作”,只需要在企业管理器—》工具—》SQL Server 配置属性—》服务器设置—》允许对系统目录直接进行修改后面的对钩选中后重新执行即可.
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


GO


测试结果可行。
新闻资讯 客户感言 关于我们 联系我们 客户留言

公司地址:广州市番禺区迎宾路115号惠信商业园605室     邮编:510000     邮箱:1799272413@qq.com   若有购物问题请联系我们客服 联系电话:400-082-1883

 

广州市管家婆网络服务有限公司
粤ICP备14064282号-1