国产探花免费观看_亚洲丰满少妇自慰呻吟_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

妹子鎮貼:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景东| 凤翔县| 绥芬河市| 永嘉县| 巴里| 锦州市| 绥芬河市| 镇坪县| 婺源县| 菏泽市| 白水县| 镇沅| 墨玉县| 砀山县| 马公市| 乌苏市| 仁寿县| 瑞丽市| 孝感市| 福州市| 东城区| 大足县| 垣曲县| 隆子县| 阜南县| 兴仁县| 上犹县| 丁青县| 昭觉县| 乡城县| 始兴县| 文化| 五常市| 襄樊市| 托克托县| 临漳县| 蚌埠市| 广东省| 灌阳县| 策勒县| 策勒县|