[quoted text, click to view] >All you have to do is to open a second connection
yes that is the only choice (the most costly in terms of resources)
[quoted text, click to view] >(this is how ODBC is doing it)
ODBC doesn't in general open more connections in order to have more active
result sets. In my case (informix) there was only one connection and
therefore one transaction. (Maybe an ODBC driver for some particular DB does
really open more connections)
[quoted text, click to view] >or to redesign your queries to retrieve only the needed results.
I didn't intend to read data that is not needed.
[quoted text, click to view] >You can even make some of this work directly on the SQL-Server.
probably you mean stored procedures.
[quoted text, click to view] >However, this will work with SQL 2005 because MS has added this capability
>to ADO.NET 2.0 but I don't know how they have implemented it so I cannot
>tell you the real consequences of using this feature with SQL-Server
>2005/ADO.NET 2.0.
>Finally, the exemples you gave me have the default of imposing a big burden
>on the resources of any SQL-Server. This is why such things as connected
>and cached recordsets have been dropped from ADO.NET because it is nearly
>impossible to scale them up on a high availability SQL-Server (which doesn't
>mean that they don't work well when you are the only single person using
>it). Good design practice require that you design your application in such
>a way to have the less possibly burden on a partaged resource like a
>SQL-Server. This is incompatible with a brut force technique.
It is clear that open cursors need RAM on the DB server. Connected
recordsets may not be the optimal thing for every task, but they are very
useful in many situations and have worked well for years.
What is a brute force technique? Assume you have a table with 50000 records
and want to display/edit data from this table in a grid, and before you see
any record, all the 50000 must be downloaded into the DataSet of the client.
This is a waste of resources (network traffic, disk access, time). One could
say in the case of such large tables there should be a filter which limits
the records retrieved to 200, for example. But I think many users won't
always specify an optimal filter. They open the window and want to see the
data. The software should be smart enough to do it in an efficient way.
Immagine you enter some criteria in an internet search engine, and it finds a
huge number of results, and before you see the first page all the results
must be downloaded to your client.
I think connected recordsets should be available when they are needed. If
they are useless, why did Microsoft introduce MARS in .NET 2.0 (but only for
their own SQL server)? I know no other DB client product that doesn't support
this technique. In my opinion the change to be made in the System.Data.Odbc