MARS(複数のアクティブな結果セット)の欠点を知っている人はいますか?カーソルがMARSよりも便利な場合など、MARSの使用を避ける必要がある理由を誰もが知っていますか。
明らかに、少なくとも2つの既知の(潜在的な)欠点があります(この(1) Team blog から):
これは明らかに、MARS対応デザインに対して実行するように設計されていないレガシーシステムで潜在的な問題を引き起こす可能性があります-変更せずにMARSで実行した場合」
「MARSを使用すると、複数のステートメントを含むバッチをサーバーに送信できます。サーバーはこのようなバッチの実行をインターリーブします。つまり、バッチがSETまたはUSEステートメントを介してサーバーの状態を変更したり、TSQLトランザクション管理ステートメント(BEGIN TRAN、COMMIT、ROLLBACK)を使用すると、ユーザーとサーバーの両方が混乱する可能性がありますあなたの実際の意図についてです。」
MARS対応のデザインはまだ試していませんが、現在のプロジェクトでは非常に近づいています。競合する(場合によっては依存する)クエリ操作(アクティブなレコードセットが実行しているのと同じデータベースからの構成データの遅延読み込みなど)にわずかな問題があります。
MSDNサイトに詳細情報があります (2)here
[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2) http://msdn.Microsoft.com/en-us/library/ms131686.aspx ]
何によって?本当の欠点はありません。
トランザクションのセーブポイントはサポートしていません。しかし、私はこれを欠点とは思わない。