Re: Win2k3 SP1 error: New transaction cannot enlist in the specifi



OK.

Its been a while since I last programmed in VB6, so I'm a bit rusty, but I
only rememer one problem that I have come across when moving existing apps
to a Windows Server 2003.

What we came upon was the fact that Windows Server 2003 requires roles to
allow access to a COM+ package, something which wasn't necessary in earlier
version of Windows.
If you haven't yet done this, because your app does not use MTS roles, just
add a dummy role, and add Everyone to that role.
But from your error description, it doesn't sound as if that is the problem
(from what I remember, I got a "Access Denied" or some such, and not the
transaction error)

Do you use SQL Username and password, or SSPI to logon to the database (if
you set an identity on your COM+ package, the package and the COM+ dlls will
henceforth connect to the database with that identity, thus enabling SSPI
even though the ASP pages executes as IUSR_<computer name>). But ofcourse,
if you have to set the TurnOffRPCSecurity flag to 1, this implicitely means
that the WEB server lies in another domain than the SQL Server. But if there
is trust between the domains, SSPI could still be used, and you could
perhaps test if using an Administrative Account works.

Have you checked the event log, to see if you fail because of security?

I can test to set up an old VB6 project on a Windows Server 2003 tomorrow,
and see what I get.

The project uses asp-pages to transport xml-requests so that the flow goes
like this:

Windows UI -> Business Logic -> XMLHTTPRequest -> ASP -> Business
Persistancy -> DBO -> DB

Where:
Business Logic = Collection and Item classes for our objects (customer and
customers, User and Users, and so on)
Business Persistancy = A project with a number of specific classes, that has
DB table specific queries for a customer or user for example.
DBO = generic database handler

The Business Persistancy projects classes has almost all their individual
classes marked as requires, so should in effect get the same effect as your
project.


The only thing with my project is that all my Windows Server 2003 servers
are in the same domain.

// Henrik








"Ronan" <Ronan@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:20C8DDD4-DE8F-4B31-A8B9-1CA0AE8DDF1B@xxxxxxxxxxxxxxxx
> Hi Henrik
>
> Yes I have a COM+ comp "A" which runs in a transaction which calls another
> COM+ comp "B". "B" is a common DLL which is used to connect to SQL.
> I made a change to the ASP code so that the ASP calls "B" directly rather
> than "A" calls "B" and again it only worked if transaction=supported NOT
> transaction=required
> The COM+ comps are VB6 not .NET. The components were already working on a
> Win2k machine so I just copied them over to the Win2k3 server as they were
> without changing any of the settings.
> I'm going to set up a SQL database on the same machine as the web server
and
> see what happens.
>
>
> --
> Ronan
>
>
> "Henrik" wrote:
>
> > Hello Ronan.
> >
> > So let me be clear on this.
> >
> > You have a COM+ DLL, which handles call to the database.
> > This dll supports transactions, but does not initiate transaction calls.
> >
> > The other dll, calls on the first dll.
> > This dll, requires transactions, and as it calls on the first component,
> > makes dll 1 enlist in the transaction.
> >
> >
> > If this is correct, I have a couple of questions:
> >
> > Are the dll's .NET Framework dll, using System.EnterpriseServices?
> > If so, are they registered in GAC?
> > Are the dll's correctly installed? You can use RegistrationHelper to
> > automate installation of COM+ components, and there are other ways also.
> >
> > If you do a "dummy" call to to DLL which requires transactions, without
> > going on to the database dll, does it work then?
> > If it works, then the problem might lie between the different machines,
as a
> > call to the "local" dll works, but when calling on, and executes a query
> > agains a database on another machine, gets DTC error.
> > If it doesn't work, then the problem seems to be isolated to the machine
> > that hosts the dlls.
> >
> >
> > As the DTCping tool did not find any errors, it migh concievably be an
error
> > in the COM+ registration for your particular set of files.
> >
> > // Henrik
> >
> >
> >
> >
> >
> > "Ronan" <Ronan@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> > news:225A1BDF-759B-48C5-86B4-2C54821DC305@xxxxxxxxxxxxxxxx
> > > Hi Henrik
> > >
> > > Thanks for your suggestions. I downloaded the DTCPing from Microsofts
web
> > > site.
> > > It worked in both directions on both machines for DTC and RPC.
> > > I tried running the 'BEGIN DISTRIBUTED TRANSACTION' in query analyser
on
> > the
> > > web server and again this worked fine.
> > > TurnOffRPCSecurity flag in the registry was set to 1 anyway. I
rebooted
> > both
> > > machines but unfortunately it still doesn't work.
> > > One thing I didn't mention is the COM+ DLL which calls the stored
> > procedure
> > > is a common "data access" DLL which in turn is called by a another DLL
"A"
> > > (this DLL has transaction support = required) and the "data access"
DLL
> > has
> > > transaction support = supported. So "A" calls the "data access".
> > >
> > > Any other suggestions?
> > >
> > >
> > > --
> > > Ronan
> > >
> > >
> > > "Henrik" wrote:
> > >
> > > > There is a tool that Microsoft provides to check this problem, and
it is
> > > > called DTCPing.
> > > > We got it after calling MS support over the same issue. I would
enclose
> > the
> > > > tool with this Post, but I'm unsure if it is publicly available.
> > > >
> > > > Check this out.
> > > > Mail from tech guy
> > > >
> > > > Let's start changing the registry value for NetworkDTCAccess. The
formal
> > way
> > > > to accomplish this is to change value in Component Services console.
You
> > > > right click the 'My PC' icon then go to the DTC tab, then click
> > 'Security
> > > > Configuration' and enable the 'Network DTC Access' option.
> > > >
> > > > Open again DTCPing and check the reported value. If it's still
showing
> > wrong
> > > > value, let's go thru the registry. Keys are located at
> > > > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
> > > >
> > > > Values there should be 0 or 1 depending on the marked checks in the
> > screen.
> > > > Go and switch the NetworkDTCAccess from 0 to 1
> > > >
> > > > If the above does not work , we should go through other things.
First
> > one is
> > > > network. WINS should not be a problem here ,but provide me details
with
> > > > teaming .
> > > >
> > > > Another easy test here is to open a Query Analyzer from the
webserver
> > > > machine and try a 'BEGIN DISTRIBUTED TRANS' command. If this fails,
the
> > > > problem is on DTC, but if this works, then we should have a look to
the
> > > > application itself.
> > > >
> > > > If you need me to provide any detail please let me know. Regards
> > > > [Protected]
> > > >
> > > >
> > > > My response to his mail as follows:
> > > > We changed the flag on the SQL server machine, and it worked (after
the
> > > > machine was restarted).
> > > > The tool was a great help, though it makes me wonder how big the
problem
> > is,
> > > > since you have developed a
> > > > custom diagnostic tool just for this. :-)
> > > >
> > > > I've read about this problem on the internet, and so would like to
ask
> > what
> > > > to do if the machines are in different domains, and no trusts exist.
> > > > Is the only solution then to change the TurnOffRpcSecurity flag to
1, or
> > is
> > > > there any smarter way to enable transactions?
> > > >
> > > >
> > > > Which resulted in the following mail from the tech again:
> > > > Glad to hear this Henrik.
> > > > Regarding the RPC question, I'm afraid there's no choice. This
article
> > > > details how to change this value:
> > > >
> > > > 827805 BUG: MSDTC Fails to Mutually Authenticate When Computers Do
Not
> > Run
> > > > in
> > > > http://support.microsoft.com/?id=827805
> > > >
> > > > If you need further information please let me know. Also, if we can
> > close
> > > > this support request also drop me an email
> > > >
> > > > Thanks & regards
> > > > [Protected]
> > > >
> > > >
> > > >
> > > > To distill this into something useful
> > > > Make sure all is configured as it should be, and then RESTART both
> > machines.
> > > > While this problem persisted after making sure that all settings
were as
> > > > they should, the problem disappeared "magically" after rebooting.
> > > >
> > > > // Henrik
> > > >
> > > >
> > > >
> > > >
> > > > "Ronan" <Ronan@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> > > > news:1544C9BD-6F7C-4606-80D9-92F19EB199B9@xxxxxxxxxxxxxxxx
> > > > >
> > > > > Hi
> > > > >
> > > > > I'm testing a migration from windows 2000 to a windows 2003
server.
> > > > > We have a test LAN composed of a domain called "FITNESS" composed
of a
> > > > > Win2k3 Standard Edition SP1 server (PROD_COM1) with IIS, COM+ and
> > another
> > > > > WIN2K3 SP1 server running SQL Server 2000 (SP3a) called
PROD_OPDB1.
> > > > > I have an ASP web page installed on PROD_COM1 calling COM+
components
> > > > > installed on PROD_COM1 which in turn call SQL Server stored
procedures
> > on
> > > > > PROD_OPDB1. The COM+ components have transaction support set to
> > Required
> > > > but
> > > > > I keep getting this ADO error "New tranasction cannot enlist in
the
> > > > specified
> > > > > transaction coordinator" 8004d00a. The only way I can get it to
work
> > is by
> > > > > setting the transaction support to Supported.
> > > > > In the MSDTC tab in My Computer in Component Servcices in security
> > > > > configuration I have set the Trnsaction Manager Communication to
> > "Allow
> > > > > Inbound" and "Allow Outbound" and "no authentication required" .
The
> > > > FITNESS
> > > > > domain doesn't have a firewall. MSDTC is running on PROD_COM1 and
> > > > > PROD_OPDB1. The COM+ components are written in VB6. I have
installed
> > > > network
> > > > > DTC access components on both machines. I disabled RPC secuirty
for
> > MSDTC
> > > > > service on SQL server in the registry but all to no availl.
> > > > > I have looked all over the web and on these Microsoft newsgroups
but I
> > > > > haven't found anything to fix this problem so I appreciate any
help.
> > > > >
> > > > >
> > > > > Ronan
> > > >
> > > >
> > > >
> >
> >
> >


.



Relevant Pages

  • Re: Help - Timing Logic
    ... server application, both of which ran on the same box. ... the client applications and 'lodging' them in the database. ... Another part of the server application was dedicated to retrieving messages ... commit transaction ...
    (microsoft.public.dotnet.languages.vb)
  • New to n-tier (C# Web app / ASP.NET 1.1)
    ... My question in summary is "how do I call my data access ... for SQL server - the only places in the project where connection to the ... database is made), in their own folder within the VS project, therefore ... compiled into the one single dll with the rest of the app. ...
    (microsoft.public.dotnet.distributed_apps)
  • Re: transactional replication problem
    ... All transaction from killed process were rolled back... ... Did they get deleted from distribution database ... >Looking for a SQL Server replication book? ...
    (microsoft.public.sqlserver.replication)
  • Re: New to n-tier (C# Web app / ASP.NET 1.1)
    ... I have implemented a handful of apps that use Remoting internally to ... transport traffic from various database servers to different IIS6 ... for SQL server - the only places in the project where connection to the ... compiled into the one single dll with the rest of the app. ...
    (microsoft.public.dotnet.distributed_apps)
  • Maintaining Transactional Integrity with OPLOCKS ?
    ... We use an ISAM style database at the moment and suffer from clinet machines ... indexes stored on the server. ... This is a performance enhancement to the Windows client ... the transaction integrity of the database structures on the server ...
    (microsoft.public.win2000.networking)

Loading