2010-04-28 4 views
3

하나의 응용 프로그램이 단일 데이터 소스에 둘 이상의 연결을 만들 수 없다는 어렴풋한 기억이 있습니다. 응용 프로그램의 모든 스레드가 공유해야하는 하나의 연결이 필요하다고 생각했습니다. 이 정보를 보려고했지만 더 이상 찾을 수 없습니다. 아무도 /이 작동 방식을 기억하지 않습니까?
일부 스레드가 선택한 데이터 소스에 동적으로 연결되므로 앱에서 문제가 될 수 있습니다. 둘 중 하나가 한 소스에 동시에 연결될 경우 임의의 연결 오류를보고 싶지 않으므로이 정보를 다시 확인하고 싶습니다.ODBC - 하나의 응용 프로그램에서 동일한 데이터 소스로의 다중 연결

+0

ODBC와 같은 일반적인 제한 사항은 기억하지 않습니다. MS 설명서를 간략히 살펴보면 SQL 2008 문서 (SQL Server (ODBC)와 통신 중)에서이 사실을 알 수 있습니다. "응용 프로그램은 여러 개의 데이터 원본에 연결할 수 있으며 응용 프로그램은 드라이버와 데이터 원본, 동일한 드라이버 및 데이터 소스의 조합, 심지어는 동일한 드라이버 및 동일한 데이터 소스에 대한 여러 개의 연결이 포함될 수 있습니다. –

+0

답변 주셔서 감사합니다 - 분명히 착각했습니다 - _drivers_ 일부 응용 프로그램에서 여러 연결을 지원하지 않을 수도 있지만 ODBC에는 이러한 제한이 없습니다. 또한 진술에 대한 기타 관련 정보를 주셔서 감사합니다. –

답변

2

아마도 the MSDN documentation에 언급 된 진술은 이 단 한 번의 연결에서 활성화 될 수 있다고 말한 것일 수도 있습니다. 그것은 말한다 : SQL Server가 문을받은 후 다음 발생의 연결 당

여러 활성 문이

에서, SQL 서버 TDS 프로토콜이 하나 될 때까지 해당 연결에서 다른 문의 수용을 허용하지 않습니다 :

  • 클라이언트 응용 프로그램은 전체 결과 집합을 처리합니다.
  • 클라이언트는 서버에 결과 집합의 나머지 부분을 닫을 수 있다는 내용의 명령문을 보냅니다.

즉, ODBC 응용 프로그램이 기본 결과 집합을 사용하는 경우 SQL Server는 연결 핸들에서 여러 활성 명령문 핸들을 지원하지 않으며 어느 시점에서도 한 명령문 만 능동적으로 처리 할 수 ​​있습니다.

그러나 ODBC 응용 프로그램이 API 서버 커서를 사용하는 경우 드라이버는 연결에서 여러 활성 문을 지원할 수 있습니다. 각 커서 명령에 대한 행 집합이 클라이언트에서 다시 수신되면 SQL Server는 해당 명령문이 완료된 것으로 간주하고 해당 연결 핸들을 통해 다른 명령문 핸들의 다른 명령문을 수락합니다.

여러 연결이 정상입니다. 하나의 연결마다 여러 문장을 사용하므로별로 좋지 않습니다.

1

아니요, ODBC 자체에는 제한이 없습니다. 특정 드라이버가 연결을 제한 할 수도 있지만 사양에 따른 제한 사항을 알지 못합니다.

관련 문제