2

내 컴퓨터, Windows 7 (MS SQL Server 2008)에서는 작동하지만 Windows Vista (MS SQL Server)에서는 그렇지 않은 C#으로 코드를 작성했습니다. 2005). 나는 두 번째 컴퓨터에 시스템을 변경할 수 없습니다, 그래서이 코드의 일부는 내 수업 "obSQL"에서이다 나는 Visual Studio 2010에서 Visual Studio 2010을SqlException : System.Data.SqlClient.SqlException (0x80131904)

을 사용하고 있습니다) :

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 서버 2005)에서 동일한 코드를 실행할 때 다음 (그것의 일부가 다른 언어, 그래서 나는 당신을 위해 그것을 번역) 오류를 발생 시킬수 : 내가 사용하는 다른 프로그램을 실행

Error SqlException: System.Data.SqlClient.SqlException (0x80131904): Error An error has occurred with the network or the occurrence when connecting to SQL Server. Can not find server or is not available. Verify that the instance name is correct and that the configuration of SQL Server allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to 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, 인스턴스, 사용자 이름 만 제공합니다. 및 암호.

그럼 ... 어떻게해야합니까?

답변

3

이 오류는 로그인 문제가 아닙니다. 잘못된 자격 증명의 문제가 아닙니다. 다른 오류 메시지가 나타납니다. 이 오류 메시지는 단순히 연결 문자열에서 서버 (아마도) 또는 데이터베이스를 찾을 수 없음을 의미합니다.

CodePlex에는 테스트 용 연결 문자열 등을 다운로드 할 수있는 오픈 소스 프로그램이 있습니다. You can find it here. 이는 문제가 어디서 무엇인지 판단하는 데 도움이됩니다.

0

저에게 그것은 연결 문자열에서 컴퓨터 이름으로 서버를 호출하고 SQL Server가 명명 된 파이프를 사용하도록 설정되어 있지 않은 것처럼 보입니다. 문제의 해결 방법은 SQL Server 구성에서 명명 된 파이프를 사용하거나 연결 문자열에서 이름 대신 SQL Server의 IP 주소를 제공하는 것입니다.