Spooler: 0x8C040028 Error, Work Around/Fix

E

Earl Bonovich

Search Words:
Microsoft Project Server Spooler 0x8C040028 Domain

---------------------------------------------------------------
Here is my scenerio and my work around for the Spooler 0x8C040028 error.

We are setup with multiple domains.
Domain A: Contains the Windows 2000 Server running Project Server
Domain B: Is the domain the user logins into
We are still in "classic" domain mode as our client doesn't have the money
to
go to Active Directory. There is a two way trust between the domains, that
is functioning just fine.

I was able to setup the user in question, with her domain login for Domain
A.
She was able to go into PWA and start up Project and connect to project
server.
She was able to open projects from Project Server and save them to Project
Server.
However, they would not publish nor get to a state where everyone could see
them.

She was getting the 0x8C040028 error in the Spooler.
I followed the MS Support knowledge base and configured the ViewDrop folder.
I went so far to giving EVERYONE full rights to that directory.
Still, no luck.

Via watching SQL Profiler I was able to see the problems.
When she was going in via a WEB technology aka: IE or via Project Pro, it
was
login her in using her DOMAIN A login.
Project Spooler though, was login in using the DOMAIN B login that she was
login in as on her Desktop workstation.

I search high and low trying to figure out how to get the two logins to
match, but
I could not find one (If anyone knows, please let me know).

So I had to create another hack/fix/work around (choose your own term) to
get
her up and working. Here it is.....
Warning as usual: Use at your own risk. Microsoft and others highly
recommend
that you do not change any object nor access the SQL Server directly. This
code
works in my specific senerio, but you should test it first and use it at
your discresion.
I can not guarantee that it will work or not work on any systems.

Okay... Now that is out of the way... Here was my solution:
--------------------------------------------------------------
The stored procedure:
MSP_WEB_SP_QRY_GetAllResourceForWindowsAccountEvenDisabled
was where I first made the change.

It accepts a single parameter which is the NT login, and it returns the
matching user
information for that domain name. Since it was recieving the domain login
for
DOMAIN B, it would never find a match. So.

I added a line of code to it at the top:
IF @p0 = 'DOMAINB\user' SET @p0 = 'DOMAINA\user'

Thus it would then find the match, and return the data and the spooler no
longer had an error.

I later then changed the code to run a stored procedure (vs the IF)
which would check a new mapping table that I created (so I could do this for
more then
one domain\login), I simply fed the stored procedure the @p0 and returned
@p0 changed
if I found a mapping, or re-returned the input if no match was found (I
returned it as an OUTPUT
variable).

Then I did a few searches and found two more stored procedures that took the
NT login
as a parameter, and applied the same changes:
MSP_WEB_SP_QRY_GetEOrDResourceForNTAccount
MSP_WEB_SP_QRY_GetResIdAuthenInfoForName

-----------------------------------------------------
I hope that helps some of you out there, I know it did for me.
I also hope that it gives MS a starting point to work on a proper fix or
proper solution going forward.

Earl
 
G

Gary Chefetz [MVP]

Earl:

Are you saying that the users have two logons? If the two-way trusts are
working, then the user's account should be created with their logon domain
credentials which should authenticate them all the way through.
 
E

Earl Bonovich

You would think that wouldn't you? Thus the reason it has drived me nuts for
the last three weeks.
The two way trust is working fine as the users can see all file shares,
Intranet websites, and actually
the database itself
From what I can tell, and been seeing in the SQL Profiler, this isn't an
authentication issue, I think it
is a query information lookup problem.

What I have seen in the SQL Profiler, is a component of Project Pro (The
spooler I am assuming),
has already authenticated thus it "knows" it can connect to the server.
But, when it is calling the stored
procedure:
MSP_WEB_SP_QRY_GetAllResourceForWindowsAccountEvenDisabled
It is passing as text (nvarchar), the user's domain login from that system.
Inside the stored procedure is a simple SELECT * from the MSP_WEB_RESOURCE
table.
It returns the results of that row it finds.

In my case, the MSP_WEB_RESOURCE record is created with DOMAINA\user as the
NT login
But spooler is connected as DOMAINA\user, but is looking for resource
information for DOMAINB\user
via this stored procedure, thus it is not returning any rows (0 records).

After this point, I am certain MS is using the WRES_ID for the user for all
remaining queries/inserts.
But since it did not get an a record back from the query, it doesn't have
the WRES_ID to work with.
Thus Spooler get's confused... "I know I can connect, but I can't figure out
who I am any more"

NOTE: If I setup the user in Project Server as DOMAINB\user; Nothing works.
Invalid Login or Can't find login
for user.
 

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