2016-11-14 17 views
0

Windows 인증 (SSPI)을 사용하는 Odbc PostgreSQL 연결의 연결 문자열에 uid = 값을 넣을 때 예외가 발생합니다.사용자 이름 추가시 ODBC SSPI 연결이 실패합니다.

오류 :

Connection problem: System.InvalidOperationException: The connection was not closed. The connection's current state is connecting. 
    at System.Data.ProviderBase.DbConnectionClosedConnecting.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    at System.Data.Odbc.OdbcConnection.Open() 
    at ConsoleApplication1.Program.TestMethod(String connectionMethod) 

코드 (테스트를 위해 밖으로 코드를 뽑아 때문에 프로그램의 열기()의 첫 번째 호출) :

try 
     { 
      using (OdbcConnection connection = new OdbcConnection(odbc_connection_string)) 
      { 
       connection.Open(); 
      } 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Trace.WriteLine("Connection problem: " + ex); 
      odbc = false; 
     } 

연결 문자열 :

odbc_connection_string = "[email protected];Driver={PostgreSQL Unicode};database=hostdb-4.2.0;server=localhost;port=5432;Trusted_Connection=yes"; 

Npgsql 연결은 입력 사용자 이름을 허용합니다 :

npgsql_connection_string = "Server=localhost;Port=5432;Database=hostdb-4.2.0;User [email protected];Integrated Security=true;"; 
+0

'using (.....) '을 사용하지 않고 무슨 일이 일어나는지보십시오. OdbcConnection을 선언하고 나서 엽니 다. Pwd = your password – McNets

+0

같은 행동을합니다. –

답변

0

왜 InvalidOperationException 오류가 표시되는지 잘 모르겠습니다. 일반적으로 나는 AccessViolationExceptions를 얻고 있었다.

psqlodbc 9.3 드라이버 중 하나가이 문제의 원인입니다. psqlodbc 드라이버를 9.5.4로 변경하고 uid 필드에 값을 입력 할 수있었습니다.