CursorLocation CursorType LockType

recordsetプロパティが意図通りにならないことがあるのはわかりました。

https://blogs.msdn.microsoft.com/nakama/2008/10/16/ado/
の下の方に表が出ています。
SQLserverの場合だと思います。

同じようにMysql5.7で調べてみると

結果がSQLserverと少し違います。

赤文字は意図と結果が違う
斜めはSQLserverと結果が違う

aduseclientにした時点でstatic決定は同じでした。
aduseserverでstaticになってますがrecordset.countは-1でした。

CursorLocation CursorType

前回の続き vbaからsqlserverへ
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
 cn.ConnectionString = “SQLserver接続文字列”
 cn.open
Set rs = New ADODB.Recordset
 rs.CursorLocation = adUseClient ’前回はcnにしたけど今回はrs

rs.open “select・・・・”,cn,adopendynamic,adlockoptmistic
debug.print rs.recordcount
debug.print rs.cursortype

で返らないと思ったrecordcountがちゃんと返るのですが
rs.cursortypeを見るとどうもadopendynamicになってない

でこういうサイト見つけました
http://d.hatena.ne.jp/replication/20090312/1236866953
マイクロソフトのヘルプはリンク切れ

カーソル位置でカーソルタイプが決まる?のようです
adopendynamic adopenforwardonly がサーバサイド
adopenstatic adopenkeyset がクライアントサイド

adUseClientを明示したらadopenstaticが決定するのかな?

では今までほとんど明示していないのでデフォルトのサーバーサイドカーソルでadopenkeysetも矛盾あり?実はdynamicになっていた?
MysqlとSQLserverでも挙動に違いがありそうです。

カーソル位置とカーソルタイプとロックタイプは齟齬がないように組み合わせないと意図したようになってない可能性ありですか

難しいですrecordset

recordset.recordcount が-1を返した

VBAからMySQLのバックエンドDBへ

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = “MySQL接続文字列”

rs.open “select 略”,cn,adopenkeyset,adlockoptimistic
debug.print rs.recordcount
以下略
が-1になってびっくり

いろいろ調べて
cn.CursorLocation = adUseClient
cn.ConnectionString = “MySQL接続文字列”
でちゃんとcountしてくれました。

ではSQLserverではと
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = “SQLserver接続文字列”

rs.open “select 略”,cn,adopenkeyset,adlockoptimistic
debug.print rs.recordcount
以下略
はちゃんとcountします。CursorLocationは

書かなくても
cn.CursorLocation = adUseClient と書いても
cn.CursorLocation = adUseServer と書いても同じ

でした。

うーん

WSUSをSSLに

wsusをSSL通信にしたのが大変難しかった

まず証明書のインスト

イントラネット用なのでADの自局証明機関で発行 登録のwebサービスを追加したら楽になった。証明書を取得しIISマネージャーで登録しようとしたら消えてしまう。原因不明、何度かやっていたらなぜか消えなくなった。フレンドリー名はサイト名と同じにしないとブラウザに別サイトだと怒られる。

IISマネージャーでサイト全体のSSL設定で必要にチェックを入れると通信できない。サイトを展開してClientWebServiceなど個別にチェックを入れる

https://docs.microsoft.com/ja-jp/security-updates/windowsupdateservices/18128236

wsusのマネージャーを見るとhttpのポートが表示されているが通信をキャプチャするとhttpsのポートでSSL通信になっているのでもうこれで良しとしたい