【问题标题】:Database '...\DATABASE.MDF' cannot be upgraded because it is read-only or has read-only files数据库 '...\DATABASE.MDF' 无法升级,因为它是只读的或具有只读文件
【发布时间】:2011-11-09 17:35:36
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我已经检查过了。它不是只读的。 Win XP中如何查看文件的ACL安全权限?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        这很奇怪。结果发现,我的应用程序的一部分引用了 Sql Server 中的一个 aspnetdb 文件,而另一个尝试引用了在应用程序中本地创建的一个文件。

        我的连接字符串是为此:

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

        但错误是这样的

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

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

        在我的例子中,我只是重命名了本地创建的 aspnetdb 文件,当我重新运行应用程序时,它只是以默认大小(10240kb 和 504kb)重新创建它们。

        我不太确定这是怎么发生的,但我的情况是,这已经足够解决了。

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

        【讨论】:

          【解决方案5】:

          您使用Full ControlUsers 组添加到安全选项卡中

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-07-29
            • 1970-01-01
            • 2013-01-14
            • 1970-01-01
            • 1970-01-01
            • 2015-04-21
            • 1970-01-01
            相关资源
            最近更新 更多