Re: Concurrent Connections / Shared Transaction
From: Pablo Castro [MS] (pablocas_at_online.microsoft.com)
Date: 03/16/05
- Next message: Hemang Shah: "Re: Performing Lookups on Dataset"
- Previous message: Andrew: "No 'findby' method in strongly typed dataset"
- In reply to: Shawn B.: "Re: Concurrent Connections / Shared Transaction"
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 16 Mar 2005 14:38:10 -0800
In MARS there are fixed interleave points in the server. For DML statements
(e.g. UPDATEs), the whole statement will run without yielding. For SELECT,
FETCH and a few other statements we'll yield on network writes so if we
return lots of rows you'll see intra-statement interleaving.
There is a great article on MARS here which includes more details on how
statements are interleaved:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/MARSinSQL05.asp
-- Pablo Castro Program Manager - ADO.NET Team Microsoft Corp. This posting is provided "AS IS" with no warranties, and confers no rights. "Shawn B." <leabre@html.com> wrote in message news:uL8Xf7bKFHA.1528@TK2MSFTNGP09.phx.gbl... > What do you mean by interleaved? Do you mean that one will execute and > complete and then the other command in the transaction will execute and > complete and then the next one, from a queue of some sort? versus > executing > parallel? > > > Thanks, > Shawn > > > "Pablo Castro [MS]" <pablocas@online.microsoft.com> wrote in message > news:elFsi4OKFHA.1500@TK2MSFTNGP09.phx.gbl... >> Actually, bound sessions allow you to share the transaction space among > two >> connections but doesn't give you concurrent access to it. If you try to >> execute a batch on a connection while the other is actively doing > something >> within the transaction the server will return an error saying that the >> transaction context is in use. >> >> COM+ is the only solution I know of for this scenario. Even with COM+/DTC >> you'll see some serialization around the transaction. In ADO.NET 2.0 + >> SQL >> Server 2005 you can mix MARS plus asynchronous command execution to >> submit >> two requests concurrently within the same transaction; however, note that > in >> that case you won't get parallelism in the server; multiple MARS sessions >> within a connection are interleaved, not executed in parallel. >> >> -- >> Pablo Castro >> Program Manager - ADO.NET Team >> Microsoft Corp. >> >> This posting is provided "AS IS" with no warranties, and confers no > rights. >> >> >> "Angel Saenz-Badillos[MS]" <angelsa@online.microsoft.com> wrote in >> message >> news:uJbeJ0FKFHA.1340@TK2MSFTNGP10.phx.gbl... >> > As long as both connections are to the same instance of Sql Server you > can >> > use sp_bindsession to get this behavior without having to use > distributed >> > transactions. >> > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_ba-bz_9ini.asp >> > >> > Hope this helps. >> > -- >> > Angel Saenz-Badillos [MS] Managed Providers >> > This posting is provided "AS IS", with no warranties, and confers no >> > rights.Please do not send email directly to this alias. >> > This alias is for newsgroup purposes only. >> > I am now blogging about ADO.NET: http://weblogs.asp.net/angelsb/ >> > >> > >> > >> > >> > "Dumitru Sbenghe" <sbenghe@yahoo.com> wrote in message >> > news:uyT4fXwJFHA.2752@TK2MSFTNGP10.phx.gbl... >> >> Given the current status of ADO.NET (version 1.1), you can not do what >> >> you >> >> want. Because the SqlClient provider permit only one command running >> >> on > a >> >> given connection at a time, the only solution will be a distributed >> >> transaction coordinator + 2 connections with 2 commands executed >> >> concurrently aka ES/COM+ in .NET . or wait until ADO.NET 2.0 will be >> >> released :), version which will permit this behavior. >> >> >> >> >> >> >> >> Dumitru >> >> >> >> >> >> "Shawn B." <leabre@html.com> wrote in message >> >> news:uA6kqFtJFHA.1096@tk2msftngp13.phx.gbl... >> >> > Greetings, >> >> > >> >> > I have two SqlCommands objects that each need to execute >> >> > concurrently >> > but >> >> > I >> >> > want them both to be a part of the same transaction. >> >> > >> >> > What I'm doing is created one SqlCommand and Beginning a >> >> > transaction. >> >> > >> >> > I have another SqlCommand that is being executed from within an >> >> > Asynchronous >> >> > delegate that needs to participate in the same transaction. The >> >> > problem >> >> > is >> >> > that I get the infamous exception stating that the connection is >> >> > already >> >> > in >> >> > use. >> >> > >> >> > COM+ is not an answer here. >> >> > >> >> > What I want to know is if there is a way to make this work correctly >> > using >> >> > only ADO.NET? >> >> > >> >> > >> >> > Thanks, >> >> > Shawn >> >> > >> >> > >> >> >> >> >> > >> > >> >> > >
- Next message: Hemang Shah: "Re: Performing Lookups on Dataset"
- Previous message: Andrew: "No 'findby' method in strongly typed dataset"
- In reply to: Shawn B.: "Re: Concurrent Connections / Shared Transaction"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|