【轉】SQLServer連接字符串配置:MultipleActiveResultSets


ADO.NET 1.x 利用SqlDataReader讀取數據,針對每個結果集需要一個獨立的連接。當然,你還必須管理這些連接並且要付出相應的內存和潛在的應用程序中的高度擁擠的瓶頸代價-特別是在數據集中的Web應用程序中。

      ADO.NET 2.的一個新特征多數據結果集(Multiple Active Result Sets,簡稱MARS)-它允許在單個連接上執行多重的數據庫查詢或存儲過程。這樣的結果是,你能夠在單個連接上得到和管理多個、僅向前引用的、只讀的結果集。目前實現這個功能的數據庫只有Sql Server 2005。所以當我們針對Sql Sever 2005的時候,需要重新審視DataReader對象的使用。使用SqlServer 2005,可以在一個Command對象上同時打開多個DataReader,節約數據庫聯接所耗費的服務器資源,在實際開發中普遍存在的一種典型的從數據庫中讀寫數據的情形是,你可以使用多重連接而現在只用一個連接就足夠了。例如,如果你有一些來自於幾個表中的數據-它們不能被聯結到一個查詢中,那么你就會有多重的連接-每個連接都有一個與之相關連的命令用於讀取數據。同樣,如果你正在向一個表寫數據,那么你需要另外一個連接或連接集合-如果有多個表要被更新的話。

例如下面的代碼

               //MultipleActiveResultSets=true打開聯接

              string connstr = "server=(local);database=northwind;integrated security=true;MultipleActiveResultSets=true"; 

              SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            SqlCommand cmd1 = new SqlCommand("select * from customers", conn);
            SqlCommand cmd2 = new SqlCommand("select * from orders", conn);
            SqlDataReader rdr1 = cmd1.ExecuteReader();
           // next statement causes an error prior to SQL Server 2005
            SqlDataReader rdr2 = cmd2.ExecuteReader();
           // now you can reader from rdr1 and rdr2 at the same time.

              conn.Close();

原文鏈接:http://www.cnblogs.com/RobotH/archive/2007/08/22/865942.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM