3

Windows 7 (MS SQL Server 2008) を搭載した私のコンピューターではうまく機能するが、Windows Vista (MS SQL Server 2005) を搭載した他のコンピューターでは機能しない C# でコードを作成しました。2 台目のコンピューターのシステムを変更できません ;) 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() で System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo、SqlInternalConnectionTds connHandler、ブール値 ignoreSniOpenTimeout、 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo サーバー情報、文字列 newPassword、ブール値 ignoreSniOpenTimeout、TimeoutTimer タイムアウト、SqlConnection owningObject) での Int64 timerExpire、ブール値の暗号化、ブール値の trustServerCert、ブール値の IntegratedSecurity) serverInfo、文字列 newPassword、Boolean redirectedUserInstance、SqlConnection owningObject、SqlConnectionString connectionOptions、TimeoutTimer タイムアウト) を System.Data に設定します。System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity ID、SqlConnectionString connectionOptions、オブジェクト providerInfo、文字列 newPassword、SqlConnection owningObject、Boolean redirectedUserInstance ) System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions オプション、オブジェクト poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningConnection) で System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection、DbConnectionPool プール、DbConnectionOptions オプション) で System.Data.ProviderBase .DbConnectionPool。System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) での CreateObject(DbConnection owningObject) System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) での System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) システムで。 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(オブジェクト送信者, EventArgs e)GetConnection(DbConnection owningObject) で System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) で System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) で System.Data.SqlClient.SqlConnection.Open() で cennik01 .obSQL..ctor (文字列ユーザー、文字列パス、文字列インスタンス、文字列 dbdir) Cennik_v2._1.Form1.button1_Click (オブジェクト送信者、EventArgs e) でGetConnection(DbConnection owningObject) で System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) で System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) で System.Data.SqlClient.SqlConnection.Open() で cennik01 .obSQL..ctor (文字列ユーザー、文字列パス、文字列インスタンス、文字列 dbdir) Cennik_v2._1.Form1.button1_Click (オブジェクト送信者、EventArgs e) で_1.Form1.button1_Click(オブジェクト送信者, EventArgs e)_1.Form1.button1_Click(オブジェクト送信者, EventArgs e)

同じデータベースを使用している他のプログラムを実行すると、正しく接続されるので、ログインなどは正しいと思います...願っています:)しかし、この2番目のプログラムは商用であるため、ソースコードはありません。彼に私の dbdir、インスタンス、ユーザー名、およびパスワード。

それで、なにかお手伝いできますか?

4

2 に答える 2