2013-03-28 6 views
0

누군가가 약간의 빛을 비출 수 있는지 확인하기 위해 아이디어가 부족합니다.SQL Server 용 OLE DB 공급자가 작동하지만 SQL 네이티브 클라이언트가 아닙니다.

  • 2 계층 클라이언트 - 서버 응용 프로그램
  • SQL Server 2005의
  • 워크 스테이션 : 윈도우 XP
  • 클라이언트 - 서버 응용 프로그램 (1)는 SQL OLE DB 공급자를 사용합니다. (Provider = SQLOLEDB.1)
  • 클라이언트 - 서버 응용 프로그램 2는 SQL Native Client를 사용합니다. (System.Data.SqlClient.SqlConnection)

어쨌든 응용 프로그램 1은 제대로 작동하지만 응용 프로그램 2는 연결 설정에서 제한 시간이 30 초가되어야 작동합니다.

JohnnyCoder의 Database Connectivity Test with UDL File에서 배운 팁을 사용하여 문제가 발생했는지 추적합니다. SQL Server 용 Microsoft OLE DB 공급자를 사용하면 즉시 연결됩니다. SQL Native Client를 사용해도 오래 걸리지 않습니다. 그것은이라도 연결 시간 제한을 60으로 설정하지 못했습니다.

두 응용 프로그램은 다른 설치에서는 제대로 작동하지만 특정 사이트에서는 제대로 작동하지 않습니다. 따라서 보안, 방화벽 등과 같은 환경 설정과 관련이 있어야합니다.

워크 스테이션에 새로운 SQL Server 2005 Native Client를 설치하려고 시도했습니다. 불운.

그래서 제 질문은 : 클라이언트가 실제로 연결할 수 없을 때

  1. 이유는 응용 프로그램이 이제까지 그것을 작동하게합니까? SQL Native Client 시간 초과가 발생할 때 OLE DB를 사용하기위한 내부 논리가 있습니까?
  2. 다른 어떤 것을 보시겠습니까?
+0

연결 문자열은 http://connectionstrings.com/sql-server-2012#sql-server-native-client-11-0-oledb-provider에서 확인하십시오. 올 Y 른지 확인하거나 올 Y 른 내용을 변경 한 후 다시 연결하십시오. 사용중인 연결 문자열을 질문에 추가하십시오. 결과를 알려주십시오. –

+0

답장을 보내 주셔서 감사합니다. 내 전체 OLE DB 공급자 연결 문자열은 다음과 같습니다. "Provider = SQLOLEDB.1; 보안 정보 유지 = False, 사용자 ID = 사용자 이름, 암호 = 암호, 초기 카탈로그 = 데이터베이스, 데이터 원본 = server \ instance"전체 SqlConnection 문자열은 다음과 같습니다. "보안 정보 유지 = False, 사용자 ID = 사용자 이름, 암호 = 암호, 초기 카탈로그 = 데이터베이스, 데이터 원본 = 서버 \ 인스턴스"를 제외하고 정확히 동일합니다. 희망이 당신이 알고 싶었던 명확하게. – kennethc

+0

코드에서 어떻게 사용되는지 자세히 알려면 :'var conn = new System.Data.SqlClient.SqlConnection (ConnectionString);' – kennethc

답변

2

답변 : 네트워크 방화벽이 TCP/IP 패킷을 차단했습니다. 결과적으로 SQL Native Client는 20 초 후에 TCP/IP로 시간 초과되었습니다. 그리고 Named Pipe가 작동하도록 시도했습니다.