【问题标题】:Publish remote server [Win32Exception (0x80004005)]发布远程服务器 [Win32Exception (0x80004005)]
【发布时间】:2013-01-26 12:57:37
【问题描述】:

我想知道我的连接字符串是否错误,因为当我在服务器上发布它时它不起作用,否则当我在调试模式下测试它时它起作用。

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-app-20130122205025;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-app-20130122205025.mdf"
      providerName="System.Data.SqlClient" />
    <add name="SiteSourceContext" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=SiteSourceContext-20130125171153; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|SiteSourceContext-20130125171153.mdf"
      providerName="System.Data.SqlClient" />

有人可以帮忙吗?我相对较新并且正在努力学习,所以我不知道我在做什么,但这是我得到的错误:

[Win32Exception (0x80004005): The specified file is not found]

[SqlException (0x80131904): A network-related error or instance-specific occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (Provider: SQL Network Interfaces, error: 52 - Could not locate installation of a runtime database locally. Verify that SQL Server Express is installed and the runtime functionality of local database is enabled.) ]
   System.Data.SqlClient.SqlInternalConnection.OnError (SqlException exception, Boolean breakConnection, Action `1 wrapCloseInAction) 6675286
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 688

【问题讨论】:

  • 访问数据库的应用程序是否将数据库复制为应用程序的一部分?在我看来,它无法找到数据库,因为它要么不存在,要么对您的应用程序不可见。

标签: c# database entity-framework connection-string


【解决方案1】:

验证是否安装了 SQL Server Express 并启用了本地数据库的运行时功能。

【讨论】:

    【解决方案2】:

    尝试改变这个:

    Data Source=(LocalDb)\v11.0
    

    到这里:

    Data Source=.\v11.0
    

    或者这个:

    Data Source=.\SQLExpress
    

    【讨论】:

    • 我这样做了,但仍然无法正常工作:/。 Microsoft Entity Framework 是在发布时安装 SQL 数据库,还是必须手动将其安装到远程位置?
    【解决方案3】:

    请记住,使用 Data Source=(LocalDB)\v11.0 会将凭据限制为创建/拥有数据库的用户。如果您将其发布为 ASP.NET 服务,您的代码将在不同的用户下运行;可能是网络服务。

    此外,连接字符串似乎指定了一个文件,该文件可能只存在于您的开发环境中,而不是您要发布到的服务器上。 您需要在该服务器上安装 SQLExpress 并设置连接字符串以访问该服务器。我不会使用Data Source=(LocalDB)\v11.0;;相反,我会使用 Data Source=localhost\SQLEXPRESS;Data Source=.\SQLEXPRESS 来保持开发环境和部署之间的一致性。

    【讨论】:

      【解决方案4】:

      很可能,您的开发计算机和服务器中安装的 SQL Server 的实例名称不同。因此,您需要更改连接字符串。如果你已经安装了 SQL Server,如果没有,你需要安装它。

      另一种可能性是,SQL Server 的实例可能没有运行。您可以从控制面板转到 Windows 服务并检查您存储数据库的 SQL Server 服务是否已启动。如果您有多个 SQL Server 实例,则可能有多个服务。确保您为正确的实例使用连接字符串。

      此外,在您的数据库中,如果您决定使用 Windows 身份验证,则应将访问优先级授予相关的 IIS 用户(例如 IIS APPPOOL\DefaultAppPool)。或者,您可以使用 SQL Server 身份验证。

      简而言之,我相信您在引用 SQL Server 实例时遇到了问题。当你解决它时,如果你不尝试使用有效凭据访问数据库,你将遇到身份验证问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-27
        • 2014-10-04
        相关资源
        最近更新 更多