【问题标题】:How to connect to a database via an external host?如何通过外部主机连接到数据库?
【发布时间】:2014-09-08 08:21:19
【问题描述】:

我做了一个简单的asp.net c#网站连接到数据库,我把文件上传到了一些托管网站,但是我得到了很长的错误信息:

error System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:SQL 网络接口,错误:52 - 无法找到本地数据库运行时安装。验证 SQL Server Express 已正确安装并且本地数据库运行时功能已启用。)---> System.ComponentModel.Win32Exception (0x80004005 ): 系统在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(SqlException异常, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) 处找不到指定的文件DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource` 1 次重试)在 ASP.default_aspx.Page_ 的 System.Data.SqlClient.SqlConnection.Open() Load(Object sender, EventArgs e) ClientConnectionId:00000000-0000-0000-0000-000000000000

【问题讨论】:

    标签: c# asp.net database


    【解决方案1】:

    您的错误消息指出:

    找不到本地数据库运行时安装。验证 SQL Server Express 是否已正确安装并且本地数据库运行时功能是否已启用

    您确定那台机器上正在运行 SQL 服务器吗?您是否正确配置了连接字符串?

    【讨论】:

    • 使用我正在使用与托管站点相同的sql server:sql server 2012。并且connectionString是正确的
    • 这是否意味着您在托管站点上安装了 SQL Server?
    • 不,在 Visual Studio 2013 中,我使用的是 sql server 2012,当我创建数据库时,我选择了 sql server 2012,所以我确定这不是 sql server 错误。
    • 如果 SQL Server 没有安装在那个特定的机器上,恐怕无论如何你都无法在那里创建数据库。如果那里有远程桌面,请验证是否安装了 SQL Server。单击开始按钮并转到搜索并键入不带引号的“services.msc”。然后检查是否有名称为SQL SERVER(SQLEXPRESS) 的服务以及是否处于活动状态。
    • 我检查了它并且它是活跃的
    【解决方案2】:

    我解决了,在page_load的default.aspx页面中:

    protected void Page_Load(object sender, EventArgs e)
    

    (SqlConnection con)的参数内

    SqlConnection con = new SqlConnection("") 
    

    有本地数据库的连接字符串,但我修好了,而是放了外部数据库的连接字符串。

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 2019-03-09
      • 2011-08-19
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      相关资源
      最近更新 更多