SqlException: System.Data.SqlClient.SqlException (0x80131904)

21 浏览
0 Comments

SqlException: System.Data.SqlClient.SqlException (0x80131904)

我用C#写了一段代码,在我的Windows 7电脑上(MS SQL Server 2008)运行得很好,但在另一台Windows Vista电脑上(MS SQL Server 2005)则不行。我不能更改第二台电脑的系统;)我正在使用Visual Studio 2010。

以下是来自我的“obSQL”类的代码部分:

private SqlConnection connection;
    public obSQL(string user, string pass, string instance, string dbdir) //使用SQL Server身份验证
    {
        connection = new SqlConnection();
        connection.ConnectionString = "user id=" + user + ";" +
                                      "password=" + pass +
                                      ";Data Source=" + instance + ";" +
                                      "Trusted_Connection=no;" +
                                      "database=" + dbdir + "; " +
                                      "connection timeout=3"; //更多信息请参考http://www.connectionstrings.com/
        connection.Open();
    }
    public obSQL(string instance, string dbdir) //使用Windows身份验证
    {
        connection = new SqlConnection();
        connection.ConnectionString = "Data Source=" + instance + ";" +
                                      "Trusted_Connection=yes;" +
                                      "database=" + dbdir + "; " +
                                      "connection timeout=3";
        connection.Open();
    }

它在我的电脑上(SQL Server 2008)工作得很好。但当我在另一台电脑上运行相同的代码(SQL Server 2005)时,出现错误(其中一部分是其他语言,所以我为您翻译了):

错误 SqlException: System.Data.SqlClient.SqlException (0x80131904): 错误 在连接到SQL Server时发生网络错误或错误。找不到服务器或无法访问。请验证实例名称是否正确,并且SQL Server的配置是否允许远程连接。 (提供程序:Named Pipes Provider, error: 40 - 无法打开到SQL Server的连接)

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)

at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)

at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)

at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)

at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)

at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)

at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)

at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)

at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)

at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)

at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

at System.Data.SqlClient.SqlConnection.Open()

at cennik01.obSQL..ctor(String user, String pass, String instance, String dbdir)

at Cennik_v2._1.Form1.button1_Click(Object sender, EventArgs e)

当我运行使用相同数据库的其他程序时,它可以正确连接,所以我认为登录等是正确的...希望如此 🙂 但是这个第二个程序是商业软件,所以我没有它的源代码,我只给了它我的dbdir、instance、用户名和密码。

那么...我该怎么办?

0
0 Comments

(SqlException: System.Data.SqlClient.SqlException (0x80131904))这个问题的出现的原因是无法找到连接字符串中的服务器或数据库。解决方法是使用CodePlex上的一个开源程序来测试连接字符串等。你可以在这里找到它。这应该能帮助你确定问题所在。

0
0 Comments

在这个问题中,出现了一个名为"SqlException: System.Data.SqlClient.SqlException (0x80131904)"的异常。这个问题的根源是连接字符串中使用了计算机名称来调用服务器,但是SQL服务器没有启用Named Pipes。解决这个问题的方法有两种:一是在SQL服务器配置中启用Named Pipes,二是在连接字符串中提供SQL服务器的IP地址而不是名称。

0