关闭

Database is read-only 的解决方法

1443人阅读 评论(0) 收藏 举报

You need Read/Write permission on both MDF and LDF in order to editing data.  If you're using IIS 6.0, you need to add Network Process account and give Read/Write permission to these two files.  You also need to detach the database before changing the permissions on the file.  You can do this using SSEUtil.exe tool:
http://www.microsoft.com/downloads/details.aspx?FamilyID=FA87E828-173F-472E-A85C-27ED01CF6B02&displaylang=en

> SSEUtil.exe -child "NT Authority/Network Service" -detach

 

Thanks,
Lan 
   
- What is Network Process Account.
>>>  This account is use by IIS6.  For more detail on the account, see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconiis60applicationisolationmodes.asp

    - How can i create it.
>>> It should already created for you
    - What do you mean by detach.
>>> you need to detach the database to release the current info in master database; so that the next time you load the page, it load the new permission for this database
    - how can i use this tool for the same, as it is doing nothing when i have tried,
>>> here're the steps:

   1) open window explorer, go to your app_data folder of your web project (e.g. d:/mywebsite/app_data folder)
   2) select both *.mdf and *.ldf, right mouse click and click on Properties
   3) click on security tab, click "Add" button
   4) type <your Machine Name>/Network Service in the "Enter the object names to select textbox, click ok
   5) make sure Read and Write permissions checkboxes are checked and click ok
   6) open cmd window (assuming you already have a copy of SSEUtil tool)
   7) type SSEUtil -d d:/mywebsite/app_data/test.mdf  --- this step detach the database
   8) run your page

Hope that help,
Lan

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/details.aspx?FamilyID=FA87E828-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).

We are working on a fix in SSE that will eliminate the manual reconfiguration for RTM.

 


 

It's probably read only because the user that the SQL Server service runs as
only has read permissions on the files. Change the Windows permissions and
restart the database service.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19888次
    • 积分:309
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    DataAbout