「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>SQL Server]]

* 目次 [#jdcfcf03]
#contents

*概要 [#sd345b4e]
コネクションとセッション、そして、トランザクションとの関連。

*詳細 [#s1c4d485]
-SQL Server の「コネクション」と「セッション」について at SE の雑記~
http://blog.engineer-memo.com/2016/01/02/sql-server-%E3%81%AE%E3%80%8C%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8D%E3%81%A8%E3%80%8C%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8D%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

**コネクション [#v75417ac]
-クライアント、サーバー間の接続。

-以下で意識する。
--コネクションのオーバーヘッド
--消費リソース / コネクション
--コネクション・プーリング

**セッション [#a6efab41]
-通常は、1コネクション・1セッション。
-MARSを使用すると、1コネクション・nセッションになる。~
--SQL Server の MARS (Multiple Active Result Sets) 機能を使用すると、~
単一の接続を利用して、複数のセッションを使用できるようになる。~
--具体的には、SELECTを実行した後に、データリーダを使用したりする。
-[[MARS>#o9daf09a]]を使用すると、1コネクション・nセッションになる。

*コネクション [#v75417ac]
**MARS (Multiple Active Result Sets) [#o9daf09a]
-呼称
--MARS : Multiple Active Result Set
--複数のアクティブな結果セット

*セッション [#a6efab41]
-複数のバッチを単一の接続で実行できる機能

*MARS [#o9daf09a]
--本機能を使用すると、
--1コネクション:1セッションのところが、
--1コネクション:nセッションになる。

--サンプルコードを見ると、
---1コネクション中に複数のDataReaderで使用するクエリの結果セットを保持できるもよう。
---若しくは、カーソル操作(読み取りと更新)を非同期に処理することができる。

--機能を有効にするには、キーワード ペア "MultipleActiveResultSet=True" を接続文字列に追加。

**sp_getbindtoken / sp_bindsession [#bbb2d42e]
-バインドされた接続(bind connections)などと呼ばれるが、超マイナーな機能

-2つの接続を1つにまとめる事が出来る。

--[[MARS>#o9daf09a]]の前身の機能で、本機能の登場により、~
複数の結果セットを保持する目的では使用しなくなった。

--トランザクションもまとめる事が出来る~
(セッションをバインドすると、同じトランザクションに参加できる)。

-参考
--Share a single transaction using sp_getbindtoken sp_bindsession~
https://www.sqlindia.com/share-a-transaction-using-sp_getbindtoken-sp_bindsession/

*参考 [#u35fe3d6]
-SQL Server の「コネクション」と「セッション」について at SE の雑記~
http://blog.engineer-memo.com/2016/01/02/sql-server-%E3%81%AE%E3%80%8C%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8D%E3%81%A8%E3%80%8C%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8D%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

-MSDN
--複数のアクティブな結果セット (MARS) の使用~
https://msdn.microsoft.com/ja-jp/library/ms131686.aspx
--複数のアクティブな結果セット (MARS) の有効化~
https://msdn.microsoft.com/ja-jp/library/h32h3abf.aspx
**Microsoft Docs [#b8481720]

***sp_getbindtoken / sp_bindsession [#w888c581]
-SQL Server

--sp_getbindtoken (TRANSACT-SQL)~
https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-getbindtoken-transact-sql

--sp_bindsession (TRANSACT-SQL)~
https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-bindsession-transact-sql

***MARS (Multiple Active Result Sets) [#ld00bce9]
-複数のアクティブな結果セット (MARS)~
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/multiple-active-result-sets-mars
--複数のアクティブな結果セットの有効化~
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/enabling-multiple-active-result-sets
--データの操作~
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/manipulating-data

----
Tags: [[:データアクセス]], [[:SQL Server]]



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS