群里有朋友问起连接池在密码修改后的变化,特地做了下测试

使用连接池,连接字符串为:

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

妹子镇贴:

连接池--在密码修改的影响相关推荐

  1. php oracle数据库连接池,数据库管理Oracle 连接池信息的修改

    最近项目中用到的Oracle数据库在服务器上是建了多个表空间供不同系统使用,两个系统同时在使用过程中,正在开发的一个项目在测试运行时,时不时就出现连接池满了,连接不上的问题,为此查了下怎么修改Orac ...

  2. TOMCAT 连接池数据库密码加密方法

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原文来自 ...

  3. 如何实现Tomcat连接池数据库密码加密

    问题背景: 快逸报表应用在tomcat应用服务器进行部署时,如果需要调用tomcat配置好的数据库连接池,就不得不把报表数据源连接的密码以明文形式暴露,这样数据库连接的用户名密码都非常容易被获取,是非 ...

  4. java连接池hkai,MySQL连接配置文件密码加密及其在多种连接池上的应用

    为了安全,连接数据库的配置文件中,如密码等信息需要采用密文的形式存放. 本文将给出多种连接池数据库密码密文存放的实现~ 如何配置数据库密码加密访问数据库? 将配置文件用户相关的信息(例如:密码)进行加 ...

  5. Tomcat连接池配置

    1.  Tomcat c3p0连接池配置 (1)  修改conf/server.xml,在<GlobalNamingResources>标签内添加如下内容 <Resource nam ...

  6. python连接池框架_python3.0 django mysql连接池说明

    使用python的django框架连接数据库,操作数据库代码: import logging from django.db import connection LOG = logging.getLog ...

  7. MySQL数据库root密码修改

    有时可能不小心忘记了root用户的密码,可以通过命令行修改 首先创建一个txt文件,内容为: ALTER USER 'root'@'localhost' INDENTIFIED BY '123456' ...

  8. druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...

    项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...

  9. mysql连接不上怎么重置密码错误_MySQL数据库连接不上、密码修改问题

    1.问题描述 版本:[CentOS8][MySQL5.7] 问题:远程使用navicat连接不上数据库,后来试了在linux中都登不进去.根据提示应该是密码不对,此文主要介绍密码修改 和一些注意事项. ...

最新文章

  1. Android Studio项目结构
  2. 工控机的io开发_Amazing!从树莓派4B主板到嵌入式无风扇工控机,只需三步!
  3. 在Packet Tracer中路由器静态路由配置
  4. Nvidia CUDA初级教程6 CUDA编程一
  5. scrolling=no 无法根据坐标获取元素_科曼尼KOMANIE三坐标测量仪命令不执行【维修】北京303所...
  6. java事件监听机制pdf,事件监听机制(转)
  7. ionic 刷新页面的几种方法
  8. 假如时光倒流,我会这么学习Java
  9. 好的大创计算机类课题,大学大创课题有哪些
  10. Multi-Task 多任务学习, 那些你不知道的事
  11. 永洪报表工具_国内报表工具排行?
  12. 电子设计教程35:LC振荡电路
  13. 【区块链108将】区块链追溯产品起源,让每一个产品都是放心产品
  14. 华为linux默认密码,登录存储系统CLI管理界面(用户名+密码)
  15. 缠论三大套利技术模型
  16. DataTable数据过滤方法
  17. 6.1 matlab数值微分与数值积分
  18. asp群发微信公众号模板消息代码asp写的
  19. wf 《计算机专业英语》,武汉4-5岁MFWF轻松自信说英语课程
  20. 网件R6220路由器刷潘多拉盒子PandoraBox

热门文章

  1. 配置2008的网络与工作组环境
  2. fegin通信中速度慢等待解决异常
  3. 如果理解运算符和各类数值的布尔值
  4. Spark LogisticRegression 逻辑回归之建模
  5. ASP.NET MVC 防止 CSRF 的方法
  6. workflow4.0学习资料
  7. 传输控制协议(TCP)基础知识概述
  8. kubernetes集群网络配置方案——flannel部署
  9. Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理
  10. 机房重构(个人版)——类图