VBAからSQL ServerのIdentity取得

これは時々必要になるのですが
scope_identity() , ident_current(‘Table’) , @@Identity
の3つの方法があるが他のセッションの影響を受けない scope_identity() が推奨と検索すると出てきます。

しかしVBAからADO ADODBでレコードセットを取って
前略
cn.execute “insert into table・・・”
rs.open “select scope_identity() as ID”,cn,adopendynamic,adlockoptimistic
としても取得してくれないのでしかたなく
rs.open “select ident_current(‘Table’) as ID”,cn,adopendynamic,adlockoptimistic
で取得していました

cursorlocationがserverサイドでdynamicを要求した場合だけ取得できないのに気がつきました
ほかの組み合わせは大丈夫のようです
しかしこのレコードセットのcursortypeは何を要求しようと結局forwardonlyに調整されます
テーブルやPK等で自動調節?
ならばなぜdynamic要求の場合だけXなのでしょう。動的だから?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です