数据库'... \ DATABASE.MDF'无法升级,因为它是只读的或具有只读文件

时间:2011-09-03 13:08:01

标签: c# asp.net sql-server exception permissions

我想在WIN XP SP3上安装一个ASP.NET应用程序,
因此,我在WinXP SP3上安装了IIS 5.1.Net Framework 3.5 SP1MSSQL 2008 R2
然后,我将我的应用程序文件夹复制到C:\Inetpub\wwwroot\
接下来,我从IIS Manager中的文件夹创建了一个应用程序,并将权限设置为以下图像:

enter image description here

正如您所看到的,我无法编写甚至从数据库中读取数据,每当我想写入数据库时​​,我都会收到上述异常。
它有什么问题?

P.S:
我在VMware Workstation 7.1上使用Win XP 该应用程序在Win Vista x86和Win7 x64中运行没有任何问题 该应用程序是使用.Net Framework 3.5 SP1

编写的

5 个答案:

答案 0 :(得分:2)

您必须编辑权限,允许“网络服务”编辑MDF文件。

答案 1 :(得分:0)

您是否检查了数据库文件的属性(readonly属性)和ACL安全权限(在文件级别定义的权限 - 而不是在IIS管理控制台中)?

答案 2 :(得分:0)

我找到了解决方案。 我禁用了Windows防火墙,并通过“允许用户更改我的文件”共享了该文件夹,现在我可以轻松地从数据库中写入和读取: - )

答案 3 :(得分:0)

这很奇怪。事实证明,我的应用程序的一部分是在Sql Server中引用一个aspnetdb文件,另一个是尝试引用在应用程序中本地创建的文件。

我的连接字符串是这样的:

<add name="ApplicationServices" 
     connectionString="Data Source=localhost; Initial Catalog=aspnetdb; Integrated Security=True" providerName="System.Data.SqlClient" />

但错误是这个

  

使用默认的&#39; ProfileProvider&#39;时失败。请做出来   确保它配置正确。数据库   &#39; C:\ WEBSITES \ XXXX.SILVERLIGHT \ ADMIN \ APP_DATA \ ASPNETDB.MDF&#39;   无法升级,因为它是只读的,具有只读文件或   用户无权修改某些文件。制作   数据库或文件可写,并重新运行恢复。

我花了一段时间注意到这是在我的应用程序根目录下,而不是我的应用程序的主要部分使用的Sql Server版本。

在我的情况下,我只是重命名了本地创建的aspnetdb文件,当我重新使用它时,它只是以默认大小(10240kb和504kb)重新创建它们。

我不太确定这是怎么回事,但我的情况这是一个足够的解决方案。

我想也许我没有明确地使用配置文件提供程序,因此它使用的是默认设置。应用程序的其余部分使用了正确的连接字符串。

答案 4 :(得分:0)

您使用UsersFull Control组添加到“安全性”选项卡中

enter image description here