SQL SERVER 使用存储过程编写重置密码以及还原密码的存储过程

转载自:SQL SERVER 使用存储过程编写重置密码以及还原密码的存储过程

需求

正式环境中系统用户密码被修改,若要用指定账户登录,在无法联系到用户获取密码的情况下,只能先将密码重置为默认密码,登录上系统后,再修改回来。此种方式直接使用sql修改很繁琐。

解决方式

使用存储过程方式,简化操作

 

存储过程实现

SQL

CREATE PROCEDURE [dbo].[updatePassword]
	(
		@userId 	VARCHAR(1000),
		@updateOrRevert int --1重置密码 2还原密码
	)
		WITH EXECUTE AS 'dbo'
	AS
	BEGIN
	Declare @userExit int;--用户记录是否存在
		Declare @defaultPassword VARCHAR(1000);--默认密码
		Declare @oldPassword VARCHAR(1000);--旧密码
		
		select @defaultPassword='371D623D73023f321650223216010e15';
		--判断表不存在时
		IF NOT EXISTS(Select 1 From Sysobjects Where Name='temp_user_password')
		--创建临时密码表
		create table temp_user_password
		(
			[userId] [varchar](100)  NOT NULL,
			[oldPassword] [varchar](1000) NOT NULL
		);
	if(@userId ='')
	begin
		print('请输入用户id')
		return;
	end
	
	if(@updateOrRevert ='')
	begin
		print('请输入类型 1重置密码 2还原密码')
		return;
	end
	
	--重置密码
	if(@updateOrRevert = 1)
	begin
	--用户id参数不为空字符串时
		if(@userId != '' )
			begin
					--根据userId查询旧密码
					Select @oldPassword=password from user_info where user_id=@userId;
					--判断临时密码表里面是否有该用户的记录
					select @userExit=1 from temp_user_password where userId=@userId;
					--如果有记录
					if(@userExit=1)
						begin
						--修改旧密码记录
						update temp_user_password set oldPassword=@oldPassword where userId=@userId;
						end
					else
						begin
						--没有记录,新增旧密码记录
						insert into temp_user_password (userId,oldPassword) values (@userId,@oldPassword);
						end
						
					--更新用户表该用户id的密码,重置为默认密码			
					update user_info set password=@defaultPassword where user_id=@userId;
			end
	end
	--还原密码
	if(@updateOrRevert = 2)
	begin
		--用户id参数不为空字符串时
		if(@userId != '' )
		begin
				--从临时表查询旧密码
				select @oldPassword=oldPassword from temp_user_password where userId=@userId;
				--旧密码不为空
				if(@oldPassword !='')
				begin
					--给该用户,重设旧密码
					update user_info set password=@oldPassword where user_id=@userId;
				end
		end	
	end
END

 

SQLSERVER 存储过程基本语法参考:

https://www.cnblogs.com/lihuiqi/p/10471740.html

已标记关键词 清除标记
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008实战(SQL Server程序员和DBA不可或缺的权威参考手册) 基本信息 原书名: SQL Server 2008 Transact-SQL Recipes: A Problem-Solution Approach 原出版社: Apress 作者: (美)Joseph Sack 译者: 金迎春 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115221063 上架时间:2010-3-5 出版日期:2010 年2月 开本:16开 页码:713 版次:1-1 编辑推荐    SQL Server程序员和DBA不可或缺的权威参考手册    查询方便,迅速解决工作中的难题    大量来自微软内部的技巧 内容简介    t-sql一直以来都是 sql server编程的基础。和传统的 t-sql书籍不同,本书以独特的 “技巧 ”形式来介绍知识点,涵盖了数据处理(增删改、视图、索引、存储过程、触发器等)、数据应用(web服务、 clr集成、分布式查询等)和数据库配置(主体、安全、数据库镜像和快照、备份等)3个方面的内容。其中每一个技巧中都包含了有代表性的示例和精炼的解析。    本书实用、高效、技巧性强,适用于 sql server专业技术人员,也可供初学者学习参考。 作译者   Joseph Sack 世界知名的SQL Server技术专家,微软认证数据库管理员(MCDBA),有10多年的SQL Server开发和管理工作经验。目前就职于微软公司高级现场工程组(Premier Field Engineering team)。除本书外,他撰写的SQL Server 2000 Fast Answers for DBAs and Developers(即本书前身)是Amazon五星著作,与人合写的Pro SQL Server 2005也广受好评。他的博客地址是http://joesack.com/WordPress/。 目录 封面 -19 封底 -18 扉页 -17 版权 -16 版权声明 -15 译者序 -14 前言 -12 致谢 -11 目录 -10 第1章 SELECT 1 1.1 基本的SELECT语句 1 1.1.1 从表中选择指定列 2 1.1.2 从所有行中选择所有列 2 1.2 使用基本WHERE子句进行有选择的查询 3 1.2.1 使用WHERE子句指定结果集中返回的行 3 1.2.2 组合搜索条件 4 1.2.3 否定搜索条件 5 1.2.4 保持WHERE子句无歧义 5 1.3 使用运算符和表达式 6 1.3.1 在日期范围搜索中使用BETWEEN 7 1.3.2 使用比较运算符 8 1.3.3 检测NULL值 9 1.3.4 基于一组值返回行 9 1.3.5 LIKE和通配符结合使用 9 1.3.6 声明变量及为变量赋值 11 1.4 数据分组 12 1.4.1 使用GROUP BY子句 12 1.4.2 使用GROUP BY ALL 13 1.4.3 使用HAVING选择性地查询分组的数据 13 1.5 对结果排序 14 1.5.1 使用ORDER BY子句 15 1.5.2 在排序的结果中使用TOP关键字 16 1.6 SELECT子句技术 18 1.6.1 使用DISTINCT消除重复值 18 1.6.2 在聚合函数中使用DISTINCT 18 1.6.3 使用列别名 19 1.6.4 使用SELECT创建脚本 20 1.6.5 字符串拼接 21 1.6.6 使用SELECT创建逗号分隔的列表 21 1.6.7 使用INTO子句 22 1.7 子查询 23 1.8 从多个数据源查询 24 1.8.1 使用内联结 25 1.8.2 使用外联结 26 1.8.3 使用交叉联结 27 1.8.4 在同一查询中多次引用同一个表 27 1.8.5 使用衍生表 28 1.8.6 使用UNION组合结果集 29 1.9 使用APPLY来为每行调用表值函数 30 1.9.1 使用CROSS APPLY 30 1.9.2 使用OUTER APPLY 32 1.10 数据源高级技术 33 1.10.1 使用TABLESAMPLE来返回随机行 33 1.10.2 使用PIVOT把单列值转化为多列和聚合数据 34 1.10.3 使用UNPIVOT
相关推荐
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《深入解析SQL Server 2008》的随书源代码 对应的书籍资料见: 深入解析SQL Server 2008(微软SQL Server开发团队必读之作) 基本信息 原书名: Microsoft SQL Server 2008 Internals 原出版社: Microsoft Press 作者: (美)Kalen Delaney    Paul S. Randal    Kimberly L. Tripp    Conor Cunningham    Adam Machanic 译者: 陈宝国 李光杰 薛赛男 出版社:人民邮电出版社 ISBN:9787115230799 上架时间:2010-7-16 出版日期:2010 年7月 开本:16开 页码:548 版次:1-1 编辑推荐    由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造    深层次展示核心引擎的功能及其工作原理、深度揭示SQL Server的内部工作原理    书中大量截图,帮助新用户以及中级用户快速学习使用产品 内容简介    本书全面探讨了sql server 2008的内部工作原理。全书共分为11章,首先在第1章中详细介绍了sql server 2008的架构和配置,然后在接下来的10个章节中深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括:数据库和数据库文件、表、索引、跟踪、日志记录和恢复、特殊存储、查询优化、计划缓存和重新编译、事务和并发、dbcc等。本书还有一个网站,上面有本书额外的第12章“查询执行”、本书的所有代码及其他工具和脚本。    本书由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造,是一本关于sql server工作原理的权威参考指南,不管您是数据库开发人员、架构师,还是数据库管理员,都可以从阅读本书中获益。    深层次展示核心引擎的功能及其工作原理    借助著名内部专家小组的指导,深入探究核心sql server引擎,并把这些知识运用在实际工作中、无论您是数据库开发人员、架构师,还是管理员,都能获得利用关键架构变更所需的深层知识,并挖掘产品的全部潜力。    深度揭示sql server的内部工作原理:    当sql server编译、扩展、压缩和移动数据库时,内部在进行什么操作    如何使用事件跟踪——从触发器到扩展事件引擎    为什么合适的索引能大大减少查询执行时间    如何用新的存储能力超越正常的行数限制    查询优化器是如何运行的    为有问题的查询计划排除故障的多种技术    何时强制sql server重用或创建新的缓存查询计划    运行dbcc时,sqlserver在内部检查什么    处理多个并发用户时,如何在5个隔离级别和2个并发模型中做出选择 作译者   Kalen Delanev自1993年起就是微软SQL Server的MVP,她为全世界的客户提供高级SQL Server培训、她是《SQL Server Magazine》的特约编辑和专栏作家,也是几本读者推崇的书籍的作者,包括《Inside Microsoft SQL Server 2005:The Storage Engine》和《Inside Microson SQL Server 2005:Query Tuning and Optimization》。   Paul S.Randal微软MVP、培训师和TechNet Magazine的特约编辑。Kimberly L.Tripp是微软MVP、培训师和《SQL Server Magazine》的特约编辑。   Conor Cunninqham微软SQL Server Core Engine团队的首席架构师.   Adam Machanic MCITP、微软MVP、讲师,几本SQL Server书籍的合著者.   Ben Nevarez从6.45版本开始使用SQL Server,是高级数据库管理员. 目录 封面 -20 封底 -19 扉页 -18 版权 -17 内容提要 -16 序 -14 前言 -13 致谢 -11 关于作者 -8 目录 -6 第1章 SQL Server 2008架构和配置 1 1.1 SQL Server版本 1 1.2 SQL Server元数据 2 1.2.1 兼容性视图 2 1.2.2 目录视图 3 1.2.3 其他元数据 4 1.3 SQL Server引擎组件 6 1.3.1 观察引擎行为 7
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页