Simple TransactionScope problem, please help

G

Guest

This problem is so simple I am surprised it's happening.

When I run the following code:

using (TransactionScope ts = new TransactionScope())
{
SqlConnection conn = new SqlConnection(@"integrated
security=SSPI;data source=WSDEV\GODS;initial catalog=MOSES");
conn.Open();
}

It waits at conn.Open(); for over 1 minute and return error message "The
transaction has already been implicitly or explicitly committed or aborted.".

If I comment out TransactionScope line, it works without any problems. So
the connection string is correct.

Can anybody point out what's happening here?

Thanks a lot.
 
S

Sahil Malik [MVP C#]

TransactionScope based transactions have a default timeout of 1 minute -
after which if you snooze for that long, it would have autorolled back. This
is done to conserve resources from bad programmers.

You can change the timeout using one of the constructors. :)
 
G

Guest

Actually, I don't think this is a timeout issue. I only open a connection to
a database on local network. If you don't use TransactionScope, I can open
this connection in no time.

But if I use TransactionScope, it wait and wait until time out. I think this
problem is when I use TransactionScope, I cannot open database connection at
all.

Thanks a lot.
 
S

Sahil Malik [MVP C#]

There is a 1 minute default transaction timeout on TransactionScope.

SM
 
G

Guest

I just checked MSDN for all members of TransactionScope at
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref12/html/T_System_Transactions_TransactionScope_Members.htm

There is no timeout property for TransactionScope.

And the error I get is "The transaction has already been implicitly or
explicitly committed or aborted".
I get this error after 1 minute 20 seconds of waiting.

So I believe there are some other settings or limitations causing this
error. The code is so simple. The database is on local area network. There
are must be some easy reason for this. Does TransactionSope support Windows
Authentication database connection?

Thanks a lot.
 
G

Guest

Now I found some other things. If I change the database to a local database,
like this:
SqlConnection conn = new SqlConnection(@"integrated security=SSPI;data
source=(local);initial catalog=Northwind");

It works.
So the problem is why this TransactionScope does not work on remote database
server.

Thanks.
 
G

Guest

Yes, there is a scope time out in the contructor. But I found the real reason
behind the problem. It's the firewall on my Windows/XP. If I turn off the
firewall, I can run this code without any problems. I will start a new thread
for this question.

Thanks a lot.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top