连接池--在密码修改的影响
群里有朋友问起连接池在密码修改后的变化,特地做了下测试
使用连接池,连接字符串为:
string connString = "Data Source=.;Initial Catalog=DemoDB1;Integrated Security=False;User ID=DBA;Password=XXXXX;Pooling=True;Connect Timeout=60";
测试1
数据库连接打开后不断开(不调用close方法),连续请求
using (SqlConnection conn = new SqlConnection(connString)){conn.Open();for (int i = 0; i < 100; i++){SqlCommand comm = conn.CreateCommand();comm.CommandText = "SELECT COUNT(1) FROM TB2";comm.CommandType = System.Data.CommandType.Text;Console.WriteLine(comm.ExecuteScalar().ToString());Console.WriteLine(DateTime.Now.ToString());System.Threading.Thread.Sleep(1 * 1000);}}
测试结果:修改密码后,程序没有任何报错,对已建立的连接没有影响
测试2
循环执行请求,每次请求会关闭链接(using会调用close方法)
for (int i = 0; i < 100; i++){using (SqlConnection conn = new SqlConnection(connString)){conn.Open();SqlCommand comm = conn.CreateCommand();comm.CommandText = "SELECT COUNT(1) FROM TB2";comm.CommandType = System.Data.CommandType.Text;Console.WriteLine(comm.ExecuteScalar().ToString());Console.WriteLine(DateTime.Now.ToString());System.Threading.Thread.Sleep(1 * 1000);}}
测试结果:程序运行后,可以使用SQL Profiler捕获到exec sp_reset_connection,当密码修改后,程序立即报错(在命令执行时报错)。
测试3
注释掉执行命令语句,查看conn.Open()是否执行sp_reset_connection
for (int i = 0; i < 100; i++){using (SqlConnection conn = new SqlConnection(connString)){conn.Open();SqlCommand comm = conn.CreateCommand();comm.CommandText = "SELECT COUNT(1) FROM TB2";comm.CommandType = System.Data.CommandType.Text;//Console.WriteLine(comm.ExecuteScalar().ToString()); Console.WriteLine(DateTime.Now.ToString());System.Threading.Thread.Sleep(1 * 1000);}}
测试结果:无法使用SQL Profiler 捕获到sp_reset_connection
测试4
在重用的连接中执行两次命令,查看是否调用两次sp_reset_connection
for (int i = 0; i < 100; i++){using (SqlConnection conn = new SqlConnection(connString)){conn.Open();SqlCommand comm = conn.CreateCommand();comm.CommandText = "SELECT COUNT(1) AS COUNT1 FROM TB2";comm.CommandType = System.Data.CommandType.Text;Console.WriteLine(comm.ExecuteScalar().ToString());Console.WriteLine(DateTime.Now.ToString());System.Threading.Thread.Sleep(10 * 1000);comm.CommandText = "SELECT COUNT(1) AS COUNT2 FROM TB2";Console.WriteLine(comm.ExecuteScalar().ToString());System.Threading.Thread.Sleep(10 * 1000);}}
测试结果:对于重用的连接,无论执行多少次命令,都只调用一次sp_reset_connection
结论:
1.对于第一次打开后的连接,不会调用 sp_reset_connection,修改密码仍然能执行请求,没有照成影响;
2.对于重用的连接,执行OPEN不会调用sp_reset_connection
3.对于重用的连接,第一次执行命令时sp_reset_connection,后续执行命令不调用sp_reset_connection
4.对于重用的连接,在sp_reset_connection时会验证,密码修改后,执行sp_reset_connection会验证失败,抛出异常
参考链接:http://msdn.microsoft.com/zh-cn/library/8xx3tyca(v=vs.110).aspx
妹子镇贴:
连接池--在密码修改的影响相关推荐
- php oracle数据库连接池,数据库管理Oracle 连接池信息的修改
最近项目中用到的Oracle数据库在服务器上是建了多个表空间供不同系统使用,两个系统同时在使用过程中,正在开发的一个项目在测试运行时,时不时就出现连接池满了,连接不上的问题,为此查了下怎么修改Orac ...
- TOMCAT 连接池数据库密码加密方法
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原文来自 ...
- 如何实现Tomcat连接池数据库密码加密
问题背景: 快逸报表应用在tomcat应用服务器进行部署时,如果需要调用tomcat配置好的数据库连接池,就不得不把报表数据源连接的密码以明文形式暴露,这样数据库连接的用户名密码都非常容易被获取,是非 ...
- java连接池hkai,MySQL连接配置文件密码加密及其在多种连接池上的应用
为了安全,连接数据库的配置文件中,如密码等信息需要采用密文的形式存放. 本文将给出多种连接池数据库密码密文存放的实现~ 如何配置数据库密码加密访问数据库? 将配置文件用户相关的信息(例如:密码)进行加 ...
- Tomcat连接池配置
1. Tomcat c3p0连接池配置 (1) 修改conf/server.xml,在<GlobalNamingResources>标签内添加如下内容 <Resource nam ...
- python连接池框架_python3.0 django mysql连接池说明
使用python的django框架连接数据库,操作数据库代码: import logging from django.db import connection LOG = logging.getLog ...
- MySQL数据库root密码修改
有时可能不小心忘记了root用户的密码,可以通过命令行修改 首先创建一个txt文件,内容为: ALTER USER 'root'@'localhost' INDENTIFIED BY '123456' ...
- druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...
项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...
- mysql连接不上怎么重置密码错误_MySQL数据库连接不上、密码修改问题
1.问题描述 版本:[CentOS8][MySQL5.7] 问题:远程使用navicat连接不上数据库,后来试了在linux中都登不进去.根据提示应该是密码不对,此文主要介绍密码修改 和一些注意事项. ...
最新文章
- Android Studio项目结构
- 工控机的io开发_Amazing!从树莓派4B主板到嵌入式无风扇工控机,只需三步!
- 在Packet Tracer中路由器静态路由配置
- Nvidia CUDA初级教程6 CUDA编程一
- scrolling=no 无法根据坐标获取元素_科曼尼KOMANIE三坐标测量仪命令不执行【维修】北京303所...
- java事件监听机制pdf,事件监听机制(转)
- ionic 刷新页面的几种方法
- 假如时光倒流,我会这么学习Java
- 好的大创计算机类课题,大学大创课题有哪些
- Multi-Task 多任务学习, 那些你不知道的事
- 永洪报表工具_国内报表工具排行?
- 电子设计教程35:LC振荡电路
- 【区块链108将】区块链追溯产品起源,让每一个产品都是放心产品
- 华为linux默认密码,登录存储系统CLI管理界面(用户名+密码)
- 缠论三大套利技术模型
- DataTable数据过滤方法
- 6.1 matlab数值微分与数值积分
- asp群发微信公众号模板消息代码asp写的
- wf 《计算机专业英语》,武汉4-5岁MFWF轻松自信说英语课程
- 网件R6220路由器刷潘多拉盒子PandoraBox