MARS:多個活動結(jié)果集 MSDN上的解釋: SQL Server 2005 在訪問數(shù)據(jù)庫引擎的應(yīng)用程序中引入了對多個活動結(jié)果集 (MARS) 的支持。在 SQL Server 的早期版本中,數(shù)據(jù)庫應(yīng)用程序無法在單個連接上保持多個活動語句。使用 SQL Server 默認(rèn)結(jié)果集時,應(yīng)用程序必須先
MARS:多個活動結(jié)果集
MSDN上的解釋:
SQL Server 2005 在訪問數(shù)據(jù)庫引擎的應(yīng)用程序中引入了對多個活動結(jié)果集 (MARS) 的支持。在 SQL Server 的早期版本中,數(shù)據(jù)庫應(yīng)用程序無法在單個連接上保持多個活動語句。使用 SQL Server 默認(rèn)結(jié)果集時,應(yīng)用程序必須先處理或取消自某一批處理生成的所有結(jié)果集,然后才能執(zhí)行該連接上的其他任何批處理。SQL Server 2005 引入了新連接屬性,支持應(yīng)用程序在每個連接上擁有多個待定請求,特別是支持每個連接具有多個活動的默認(rèn)結(jié)果集。
MARS 通過以下新功能簡化了應(yīng)用程序設(shè)計:
應(yīng)用程序可以同時打開多個默認(rèn)結(jié)果集,并且交錯讀取它們。
應(yīng)用程序可以在默認(rèn)結(jié)果集打開的同時執(zhí)行其他語句(例如 INSERT、UPDATE、DELETE 和存儲過程調(diào)用)。
下列指南對使用 MARS 的應(yīng)用程序很有幫助:
默認(rèn)結(jié)果集應(yīng)該用于使用單個 SQL 語句(SELECT、帶 OUTPUT 的 DML、RECEIVE、READ TEXT 等)生成的短期或較小結(jié)果集。
服務(wù)器游標(biāo)應(yīng)該用于使用單個 SQL 語句生成的長期或較大結(jié)果集。
對于過程請求(不論它們是否返回結(jié)果)以及返回多個結(jié)果的批處理,應(yīng)始終讀取到它們的結(jié)果的末尾。
盡可能使用 API 調(diào)用(而不是 Transact-SQL 語句)更改連接屬性和管理事務(wù)。
在 MARS 中,有多個批處理并發(fā)運行時禁止會話范圍內(nèi)的模擬。
在SQL2000的時候,一個連接同時只能運行一個批處理指令。也就是說一個連接在一個時間點只能有一個請求在運行。
但是SQL2005以后,如果使用了MARS技術(shù),一個連接可以同時開啟多個結(jié)果集。而sys.sysprocesses視圖不能
正確顯示這種行為。
MARS的執(zhí)行方式:
MARS 是從交錯執(zhí)行而不是從并行執(zhí)行的角度定義的
如何在不同的數(shù)據(jù)訪問接口里使用MARS技術(shù)
如果使用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 驅(qū)動程序 的話
那么連接字符串可以是這樣:
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);
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com