发布远程服务器[Win32Exception(0x80004005)]

时间:2013-01-26 12:57:38

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

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

<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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试更改此内容:

Data Source=(LocalDb)\v11.0

To This:

Data Source=.\v11.0

或者这个:

Data Source=.\SQLExpress

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

可能,开发计算机和服务器中安装的SQL Server的实例名称具有不同的名称。所以你需要改变连接字符串。如果您已安装SQL Server,则需要安装它。

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

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

简而言之,我认为您在引用SQL Server实例时遇到问题。解决问题后,如果您不尝试使用有效凭据访问数据库,则会出现身份验证问题。