What kind of error is this??

M

mike

Failed to update database
"D:\INETPUB\WWWROOT\ADROUTER\APP_DATA\ADROUTER.MDF" because the database is
read-only.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Failed to update
database "D:\INETPUB\WWWROOT\ADROUTER\APP_DATA\ADROUTER.MDF" because the
database is read-only.

Source Error:
 
J

John Timney \( MVP \)

It looks like the web account does not have the correct permissions to open
the database in the directory in which it resides. MDF files need to create
an LDF file when the DB opens - if the web account cant write it cant open
the file.

--
Regards

John Timney
ASP.NET MVP
Microsoft Regional Director
 
M

mike

So what shoul i do?
i've already change the write permission of directory in iis
are there any permission that i would change?
 
J

Juan T. Llibre

It's a bug...

See :
http://lab.msdn.microsoft.com/produ...edbackid=dd6d161b-df08-40bc-b9ed-fbca71949ddc

Here's the workaround suggested by Microsoft :

1. Delete the MDF/LDF files from the App_Data directory of the website under
inetpub\wwwroot.

2. Download and install the SSEUTIL command line tool from:
http://www.microsoft.com/downloads/...28-173F-472E-A85C-27ED01CF6B02&displaylang=en

3. Using sseutil, issue a command that looks something like:
sseutil -child "NT AUTHORITY\NETWORK SERVICE" -detach D:\

You will need to change the account name and the detach path to match your
machine settings. If on IIS5/5.1, then ASPNET will be the correct user account.

Also, you can determine the detach path pretty easily by issuing sseutil -list to see
where the problematic MDFs are currently attached. The "D:\" in the sample
command line is just the first few characters that sseutil uses to auto-detach all
databases that begin with "D:\". Change the path as neeeded for your machine.

4. Set the ACLs on App_Data directory under inetpub\wwwroot to grant R/W
to the appropriate process account - NETWORK SERVICE on WS03
or ASPNET on IIS5/5.1.

5. Re-copy the MDF/LDF files from the directory where the file-based website
exists back into App_Data under inetpub\wwwroot. After the copy occurs,
check that the MDF/LDF files have now inherited the new ACLs.

6. Re-run the application (ignore any connection errors that might occur
- just hit refresh in the browser).




Juan T. Llibre, ASP.NET MVP
ASP.NET FAQ : http://asp.net.do/faq/
ASPNETFAQ.COM : http://www.aspnetfaq.com/
Foros de ASP.NET en Español : http://asp.net.do/foros/
======================================
 
J

Juan T. Llibre

re:
It looks like the web account does not have the correct permissions to open the database
in the directory in which it resides.

Correct. It's a bug. See my previous reply for the complete fix.

re:
MDF files need to create an LDF file when the DB opens - if the web account cant write
it cant open the file.

Are you thinking of mdb and ldb files ?

LDF stands for Log Data File. It's where SSE keeps its data logs.
It has nothing to do with security, like it does for Access MDBs.

Write access is needed for it, but not for security reasons.

To Mike :

I guess I should have warned you to make sure you have backups
of both the MDF and LDF files before you delete them per the
instructions offered by Microsoft as a fix, included in my previous reply.

I hope you read this in time... ;-)




Juan T. Llibre, ASP.NET MVP
ASP.NET FAQ : http://asp.net.do/faq/
ASPNETFAQ.COM : http://www.aspnetfaq.com/
Foros de ASP.NET en Español : http://asp.net.do/foros/
======================================
 
J

John Timney \( MVP \)

eek!........thats what I meant..

--
Regards

John Timney
ASP.NET MVP
Microsoft Regional Director
 
M

mike

THHHHHHHANKS ALLLLLLLLLLLLLLLLLLLLLLLL!!!!!




Juan T. Llibre said:
It's a bug...

See :
http://lab.msdn.microsoft.com/produ...edbackid=dd6d161b-df08-40bc-b9ed-fbca71949ddc

Here's the workaround suggested by Microsoft :

1. Delete the MDF/LDF files from the App_Data directory of the website
under
inetpub\wwwroot.

2. Download and install the SSEUTIL command line tool from:
http://www.microsoft.com/downloads/...28-173F-472E-A85C-27ED01CF6B02&displaylang=en

3. Using sseutil, issue a command that looks something like:
sseutil -child "NT AUTHORITY\NETWORK SERVICE" -detach D:\

You will need to change the account name and the detach path to match your
machine settings. If on IIS5/5.1, then ASPNET will be the correct user
account.

Also, you can determine the detach path pretty easily by issuing
sseutil -list to see
where the problematic MDFs are currently attached. The "D:\" in the sample
command line is just the first few characters that sseutil uses to
auto-detach all
databases that begin with "D:\". Change the path as neeeded for your
machine.

4. Set the ACLs on App_Data directory under inetpub\wwwroot to grant R/W
to the appropriate process account - NETWORK SERVICE on WS03
or ASPNET on IIS5/5.1.

5. Re-copy the MDF/LDF files from the directory where the file-based
website
exists back into App_Data under inetpub\wwwroot. After the copy occurs,
check that the MDF/LDF files have now inherited the new ACLs.

6. Re-run the application (ignore any connection errors that might occur
- just hit refresh in the browser).




Juan T. Llibre, ASP.NET MVP
ASP.NET FAQ : http://asp.net.do/faq/
ASPNETFAQ.COM : http://www.aspnetfaq.com/
Foros de ASP.NET en Espa?l : http://asp.net.do/foros/
======================================
 

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