質問するログイン新規登録

質問編集履歴

2

書式の改善

2017/01/17 03:07

投稿

jun_i
jun_i

スコア14

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  接続先のDB:AzureのSQL Database
6
6
 
7
- 私の今の解釈
7
+ ###私の今の解釈
8
8
  ・接続型
9
9
  明示的にcloseするまでDBとの接続状態は続く。
10
10
  明示的にcloseするか、アプリケーションが自体が終了すれば、接続は切れる。
@@ -15,9 +15,11 @@
15
15
 
16
16
  そこで、本当にその解釈が正しいか、検証してみたところ、以下の結果になりました。
17
17
 
18
+ ###検証結果
18
19
  ・接続型で接続
19
20
  ①あえてcloseせず放っておいても、10分くらいすると接続が切れた。
20
21
  ②明示的にcloseしたとしても、すぐには接続は切れない。(10分くらいすると切れる)
22
+
21
23
  ・非接続型で接続
22
24
  ③クエリの処理が終了したとしても、すぐには接続は切れない。(10分くらいすると切れる)つまり②の場合と同じ動き。
23
25
 
@@ -72,7 +74,7 @@
72
74
  以上、駄文で申し訳ありませんが、何か分かる方がおりましたら、よろしくお願いいたします。
73
75
 
74
76
 
75
- 2017.1.13追記
77
+ ###2017.1.13追記
76
78
  肝心なところが抜けていました。
77
79
  接続が切れている、切れていないをどう確認したかというと、Microsoft SQL Server Management Studio上で、
78
80
  sys.dm_exec_sessions と sys.dm_exec_connectionsを参照して確認しました。

1

2017\.1\.13追記という部分を追加

2017/01/17 03:07

投稿

jun_i
jun_i

スコア14

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,37 @@
69
69
 
70
70
  また、すぐに接続が切れるわけではない。という部分は、コネクションプールか何かが関係しているのでしょうか?
71
71
 
72
- 以上、駄文で申し訳ありませんが、何か分かる方がおりましたら、よろしくお願いいたします。
72
+ 以上、駄文で申し訳ありませんが、何か分かる方がおりましたら、よろしくお願いいたします。
73
+
74
+
75
+ 2017.1.13追記
76
+ 肝心なところが抜けていました。
77
+ 接続が切れている、切れていないをどう確認したかというと、Microsoft SQL Server Management Studio上で、
78
+ sys.dm_exec_sessions と sys.dm_exec_connectionsを参照して確認しました。
79
+
80
+ また、sys.dm_exec_sessionsにはSTATUSというカラムがあり、ここは主にrunningかsleepingのどちら
81
+ かになります。
82
+ もしかしたら、これが接続が切れている切れていないという意味なのか?とも思い、検証してみました。
83
+
84
+ そうしたところ、
85
+ 接続型では、上記コードの
86
+ Dim reader As SqlDataReader = command.ExecuteReader()
87
+
88
+ 非接続型では
89
+ adapter.Fill(ds)
90
+ を処理している間のみrunnigになるということが分かりました。
91
+
92
+ 接続型ではconnection.Close()をしてもしていなくても処理が終了すれば、sleepingになるので、ここの値の意味が、接続が切れている切れていないではないようです。(結果的に蛇足です。すみません)
93
+
94
+ また、もう一つ分かったことがあります。
95
+ 昨日の質問内容で、接続型でも非接続型でもすぐには接続は切れずに、しばらくすると切れると書きました。
96
+ これは、やはりコネクションプールの設定のようです。
97
+ 接続文字列でPooling=Falseとして繋げたら、接続型でも非接続型でも、処理が終了したらすぐに切断されました。
98
+
99
+ なのでまとめると、DBとの接続が切断(解除?)されたというのは、コネクションの接続のこととは、また違う部分の話なのではないのかな。と推測しています。
100
+
101
+ 私が昨日から目で確認していたものは、「コネクションが接続された。切断された。」という話で、ここまでは接続型でも非接続型でも仕組みは変わらないのではないかと思っています。
102
+
103
+ 接続型と非接続型の違いは、コネクションを繋げた後の実際にデータにアクセスする時の動作のことかと思っているのですが、ここら辺について詳しい方いたら教えていただきたいと思います。
104
+
105
+ 長文失礼いたしました。よろしくお願いいたします。