阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1980|回复: 3

SQL 密码无法修改修复语句

[复制链接]
  • TA的每日心情
    开心
    2018-10-10 08:38
  • 签到天数: 159 天

    [LV.7]常住居民III

    发表于 2012-12-30 11:46:39 | 显示全部楼层 |阅读模式
    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

    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2017-8-19 00:22
  • 签到天数: 849 天

    [LV.10]以坛为家III

    发表于 2013-8-22 10:46:24 | 显示全部楼层
    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


    本文来自:阳光网驿_企业信息化专家 详细出处请参考:http://bbs.sunwy.org/thread-158321-1-1.html
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2013-9-8 09:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2013-9-8 10:44:32 | 显示全部楼层
    这个很好很强大,但是我还没有测试呢。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2017-12-25 10:01
  • 签到天数: 403 天

    [LV.9]以坛为家II

    发表于 2014-5-21 14:12:07 | 显示全部楼层
    这个回复一个,遇到了再上来看看                 
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表