MARS:多個活動結果集 MSDN上的解釋: SQL Server 2005 在訪問數據庫引擎的應用程序中引入了對多個活動結果集 (MARS) 的支持。在 SQL Server 的早期版本中,數據庫應用程序無法在單個連接上保持多個活動語句。使用 SQL Server 默認結果集時,應用程序必須先
MARS:多個活動結果集
MSDN上的解釋:
SQL Server 2005 在訪問數據庫引擎的應用程序中引入了對多個活動結果集 (MARS) 的支持。在 SQL Server 的早期版本中,數據庫應用程序無法在單個連接上保持多個活動語句。使用 SQL Server 默認結果集時,應用程序必須先處理或取消自某一批處理生成的所有結果集,然后才能執行該連接上的其他任何批處理。SQL Server 2005 引入了新連接屬性,支持應用程序在每個連接上擁有多個待定請求,特別是支持每個連接具有多個活動的默認結果集。
MARS 通過以下新功能簡化了應用程序設計:
應用程序可以同時打開多個默認結果集,并且交錯讀取它們。
應用程序可以在默認結果集打開的同時執行其他語句(例如 INSERT、UPDATE、DELETE 和存儲過程調用)。
下列指南對使用 MARS 的應用程序很有幫助:
默認結果集應該用于使用單個 SQL 語句(SELECT、帶 OUTPUT 的 DML、RECEIVE、READ TEXT 等)生成的短期或較小結果集。
服務器游標應該用于使用單個 SQL 語句生成的長期或較大結果集。
對于過程請求(不論它們是否返回結果)以及返回多個結果的批處理,應始終讀取到它們的結果的末尾。
盡可能使用 API 調用(而不是 Transact-SQL 語句)更改連接屬性和管理事務。
在 MARS 中,有多個批處理并發運行時禁止會話范圍內的模擬。
在SQL2000的時候,一個連接同時只能運行一個批處理指令。也就是說一個連接在一個時間點只能有一個請求在運行。
但是SQL2005以后,如果使用了MARS技術,一個連接可以同時開啟多個結果集。而sys.sysprocesses視圖不能
正確顯示這種行為。
MARS的執行方式:
MARS 是從交錯執行而不是從并行執行的角度定義的
如何在不同的數據訪問接口里使用MARS技術
如果使用SQL Server Native Client OLE DB 訪問接口 ADO跟ADO.NET就是使用這個接口
那么 連接字符串可以是這樣:
1 string connstr = "Server=(local);Database=AdventureWorks;User ID=sa;Password=test;MarsConn=true";
如果使用SQL Server Native Client ODBC 驅動程序 的話
那么連接字符串可以是這樣:
1 SQLSetConnectAttr(hdbc, SQL_COPT_SS_MARS_ENABLED, SQL_MARS_ENABLED_YES, SQL_IS_UINTEGER); 2 SQLDriverConnect(hdbc, hwnd,"DRIVER=SQL Server Native Client 10.0;SERVER=(local);trusted_connection=yes;", SQL_NTS, szOutConn, MAX_CONN_OUT, &cbOutConn, SQL_DRIVER_COMPLETE);
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com