當我把這個代碼:如何將數據從SQL Server提取到SqlDataReader?
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand("SELECT * FROM Table", connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while(reader.Read())
{
// Do something here
}
}
}
什麼內部發生?這是如何在網絡層面上工作的?每次調用Read
時是否會進行一次新的數據庫往返訪問,還是在內部實現任何批處理讀取?
我在問,因爲我剛纔看到ODP.NET在OracleCommand
和OracleDataReader
中提供了FetchSize
屬性,我理解爲應該通過單次往返數據庫預加載多少記錄的定義。我想知道SQL Server是否以類似的方式工作,以及是否存在可以在某處配置的類似行爲。我在SqlCommand
,SqlDataReader
或CommandBehavior
中沒有找到任何這樣的配置。
我做了[** this test **](http://i.imgur.com/K6IogT2.png),但是如果我將packetsize設置爲最小值(負值?) - 它會顯示1,7, 7,7,7,而不是1,2,3,4,5,6? – 2014-11-29 20:45:15