【问题标题】:An attempt to attach an auto-named database for file failed尝试为文件附加自动命名数据库失败
【发布时间】:2013-06-04 17:56:57
【问题描述】:

我在 Visual Studio 2010 中构建了一个网站,并使用了存储在 ASPNETDB.mdf 数据库文件中的成员资格、用户和角色等代码,没有任何问题。现在我尝试在运行 IIS7.5 的网络上部署我的 ASP.NET 网站,我收到此错误:

An attempt to attach an auto-named database for file .mdf failed. A database with the     
same name exists, or specified file cannot be opened, or it is located on UNC share.

以下是我的数据库连接字符串:

<connectionStrings>
   <add name="KBDConnectionString" connectionString="data source=.\SQLEXPRESS;Integrated  
        Security=SSPI;AttachDBFilename=|DataDirectory|\KBD.mdf;User Instance=true" 
        providerName="System.Data.SqlClient" />
</connectionStrings>

感谢您的帮助

这是我的网站配置(IIS 文件夹):

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
   <connectionStrings>
     <add name="KBDConnectionString" connectionString="data source=.\SQLEXPRESS;  
                Integrated Security=SSPI;AttachDBFilename=|DataDirectory|KBD.mdf;User 
                Instance=true" providerName="System.Data.SqlClient" />
   </connectionStrings>
   <system.web>
      <httpHandlers>
       <add path="ImgRequest.ashx" verb="*" type="Syncfusion.Web.UI.WebControls.Diagram.NodeRenderHandler,Syncfusion.Diagram.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3d67ed1f87d44c89" />
  <add path="PaletteImgRequest.ashx" verb="*" type="Syncfusion.Web.UI.WebControls.Diagram.ThumbNodeRenderHandler,Syncfusion.Diagram.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3d67ed1f87d44c89" />
  <!--<add path="OverviewImgRequest.ashx" verb="*" type="Syncfusion.Web.UI.WebControls.Diagram.OverviewDocumentRenderHandler,Syncfusion.Diagram.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3d67ed1f87d44c89"/>-->
</httpHandlers>
<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Syncfusion.Tools.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Shared.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="Syncfusion.Core, Version=10.404.0.71, Culture=neutral, PublicKeyToken=632609B4D040F6B4" />
    <add assembly="Syncfusion.Shared.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Grid.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Tools.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Diagram.Web, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Diagram.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="Syncfusion.Diagram.Windows, Version=10.402.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Compression.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
    <add assembly="Syncfusion.Pdf.Base, Version=10.404.0.71, Culture=neutral, PublicKeyToken=3D67ED1F87D44C89" />
  </assemblies>
</compilation>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<membership defaultProvider="KBDSqlMembershipProvider">
  <providers>
    <clear />
    <add name="KBDSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="KBDConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="KrallmannBusinessDesigner" />
  </providers>
</membership>
<profile defaultProvider="KBDSqlProfileProvider">
  <providers>
    <clear />
    <add name="KBDSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="KBDConnectionString" applicationName="KrallmannBusinessDesigner" />
  </providers>
  <!--<properties>
    <add name="UserName" type="String"/>
    <add name="Email" type="String" />
  </properties>-->
</profile>
<roleManager enabled="false">
  <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
    <validation validateIntegratedModeConfiguration="false" />
    <defaultDocument>
        <files>
            <add value="Account/Login.aspx" />
        </files>
    </defaultDocument>
</system.webServer>
</configuration>

【问题讨论】:

    标签: asp.net sql sql-server asp.net-4.0 unc


    【解决方案1】:

    检查连接字符串。正确方法(如@Devjosh 引用的 MSDN 文章中所述):

    "AttachDBFilename=|DataDirectory|xxxxxx.mdf;User Instance=true"
    

    您的代码:

    AttachDBFilename=|DataDirectory|**\**KBD.mdf
    

    不需要反斜杠。

    【讨论】:

    • 请确认DataDirectory 不是UNC 路径(不以\ 开头)并且在网站配置中没有使用KBDConnectionString 名称的其他连接?
    • 我在我的网站配置上方添加
    • 尝试用AttachDBFilename=C:\MyDB\xxxxx.mdf 等实际路径替换DataDirectory。检查此站点的应用程序池使用的帐户是否有权访问此文件夹(例如,在该文件夹中创建并清空文件或获取目录列表)。
    • 即使在连接字符串中使用了不同的 SQL Server 实例后,我也会收到错误消息...
    • 它应该是像\\MyServer\c$\temp这样的UNC路径,而不是对SQL Server实例的引用。
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多