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 authentication
    {
        connection = new SqlConnection();
        connection.ConnectionString = "user id=" + user + ";" +
                                      "password=" + pass +
                                      ";Data Source=" + instance + ";" +
                                      "Trusted_Connection=no;" +
                                      "database=" + dbdir + "; " +
                                      "connection timeout=3"; //more at http://www.connectionstrings.com/
        connection.Open();
    }

    public obSQL(string instance, string dbdir) //windows authentication
    {
        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的配置允许远程连接。 (提供程序: 命名管道提供程序,错误:40 - 无法打开连接到SQL Server )在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternalConnectionTds connHandler,Boolean ignoreSniOpenTimeout,Int64 timerExpire,布尔加密,布尔trustServerCert,布尔integratedSecurity)在System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串newPassword,布尔ignoreSniOpenTimeout ,System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection拥有对象,System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,String newPassword,Boolean redirectedUserInstance,SqlConnection owningObject,SqlConnectionString connectionOptions,TimeoutTimer超时) TimeoutTi 在System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity身份,SqlConnectionString连接选项,对象providerInfo,字符串newPassword,SqlConnection拥有对象,布尔redirectedUserInstance)在System.Data.SqlClient.SqlConnectionFactory(SqlConnectionString连接选项,字符串newPassword,布尔redirectedUserInstance) .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 拥有连接)在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)在System.Data.SqlClient.SqlConnection.Open()在cennik01.obSQL..ctor(字符串用户,字符串传递,字符串实例,字符串dbdir )在Cennik_v2._1.Form1.button1_Click(Object sender,EventArgs e)

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

所以...我能做什么?


此错误不是登录问题。 这不是凭证无效的问题。 你会得到一个不同的错误信息。 这个错误信息仅仅意味着它无法在连接字符串中找到服务器(可能)或数据库。

CodePlex上有一个开源的程序,你可以下载到测试连接字符串等。你可以在这里找到它。 这应该可以帮助你确定问题出在哪里。


对我来说,它看起来像在连接字符串中,您正在通过计算机名称调用服务器,并且SQL Server未启用命名管道。 解决该问题的方法是:启用SQL Server配置中的命名管道或连接字符串中提供SQL Server的IP地址而不是名称。

链接地址: http://www.djcxy.com/p/56719.html

上一篇: SqlException: System.Data.SqlClient.SqlException (0x80131904)

下一篇: Does Integrated Security=SSPI require a Windows user in the Adminstrators group?