MARS: Interpretation of multiple active result sets on MSDN: SQLServer2005 introduced support for multiple active result sets in Database Engine access applications. In earlier versions of SQLServer, database applications cannot maintain multiple active statements on a single connection. When using SQLServer default result set, the application must first
MARS: Interpretation of multiple active result sets on MSDN: SQL Server 2005 introduces support for multiple active result sets in Database Engine access applications. In earlier versions of SQL Server, database applications cannot maintain multiple active statements on a single connection. When using the default result set of SQL Server, the application must first
MARS: Multiple Active result sets
Description on MSDN:
SQL Server 2005 introduces support for multiple active result sets (MARS) in Database Engine access applications. In earlier versions of SQL Server, database applications cannot maintain multiple active statements on a single connection. When using the default result set of SQL Server, the application must process or cancel all result sets generated by a batch of processing before executing any other batch processing on the connection. SQL Server 2005 introduces new connection attributes and supports applications with multiple pending requests on each connection. In particular, it supports the default result set with multiple activities for each connection.
MARS simplifies application design with the following new features:
Applications can open multiple default result sets at the same time and read them in an staggered manner.
Applications can execute other statements (such as INSERT, UPDATE, DELETE, and stored procedure calls) when the default result set is opened ).
The following guidelines are helpful for applications using MARS:
The default result set should be used to generate short-term or small result sets using a single SQL statement (SELECT, DML with OUTPUT, RECEIVE, READ TEXT, etc.
Server cursors should be used to generate long-term or large result sets using a single SQL statement.
Process requests (whether or not they return results) and batches that return multiple results should always be read to the end of their results.
Use APIs instead of Transact-SQL statements to change Connection Properties and manage transactions.
In MARS, simulation within the session range is prohibited when multiple batches are concurrently run.
In SQL2000, only one batch processing command can be run for one connection at the same time. That is to say, a connection can only have one request running at a time point.
However, after SQL2005, if the MARS technology is used, multiple result sets can be enabled for one connection at the same time. The sys. sysprocesses view cannot
Correctly display this behavior.
MARS execution method:
MARS is fromStaggered executionInsteadParallel ExecutionAngle defined
How to Use the MARS technology in different data access interfaces
If you use the SQL Server Native Client OLE DB access interface ADO and ADO. NET, this interface is used.
The connection string can be like this:
1 string connstr = "Server=(local);Database=AdventureWorks;User ID=sa;Password=test;MarsConn=true";
If you use the SQL Server Native Client ODBC driver
The connection string can be like this:
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);