国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

連接池--在密碼修改的影響

2024-07-21 02:50:54
字體:
來源:轉載
供稿:網友
連接池--在密碼修改的影響

群里有朋友問起連接池在密碼修改后的變化,特地做了下測試

使用連接池,連接字符串為:

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

妹子鎮貼:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同心县| 岑溪市| 新丰县| 白河县| 亚东县| 仁寿县| 甘泉县| 平凉市| 台湾省| 白朗县| 淳安县| 汝城县| 马公市| 新兴县| 深水埗区| 沅陵县| 桑植县| 阿拉尔市| 新河县| 兴隆县| 新建县| 收藏| 凭祥市| 滁州市| 长寿区| 佛教| 射阳县| 色达县| 循化| 博湖县| 四川省| 蒲江县| 武宣县| 横山县| 吉安市| 宿迁市| 石河子市| 炉霍县| 西吉县| 秦皇岛市| 广德县|