자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi FireDac:다른hstmt의결과에 연결이 사용중입니다 라는 오류에 대해
2016.09.14 17:45
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
FireDac FDCONNECTION 관련 입니다
ODBC Connection 으로 하나의 FDCONNECTION 에 여러개의 FDQUERY을 연결하여
사용 한 경우인데 하나의 FDCONNECTION을 여러개의 FDQUERY에서(동일 Project의
여러 다수 Form(.PAS)의 FDQUERY에서) 사용 했는데 이 Message가 나오더군요.
(오류 message)
[Micrsoft][ODBC SQL Server Driver] 다른 hstmt의 결과에 연결이 사용 중입니다
ⓐ 물론 각 FDQEERY마다 서로 자기고유의 FDCONNECTION 을 두면 오류없이 잘
돌아 갑니다.
ⓑ 동일한 ODBC 동일한 내용 동일한 SQL 로 BDE (ODBC) 연결 하면 이때도 아무
문제 없이 잘 돌아 갑니다
* XE6에서 BDE로 잘 사용하는 것을 아무 다른 변경은 없고 단지 FireDac으로만
변경하려다가 부딪친 문제 입니다
(참고로 사용하는 SQLSERVER 는 SQLSERVER2010 입니다)
사실 FIREDAC에 대해서는 잘 모릅니다, BDE만 사용 해 가지고요.
그래서 이 내용을 확실하게 알고 싶습니다. 아시는 내용이 있으면 좀 가르켜 주시고
혹시 이것과 관련된 관련 기술자료나 이런 Reference(영문도 좋습니다) Intenet으로
어디서 구할 수있는지라도 좀 알려 주시면 감사하겠습니다
(나온 message는 파일로 첨부 하였습니다)
(좀더 부연설명 하면)
물론 SQL Server ODBC 문제 입니다 그런데 ① XE6의 FireDAC의 FDCOnnection에서 제공되는
SQL Server ODBC 가 과거(십수년전의) BDE의 SQL Server ODBC 보다 약한 것은 아닐거고
② DBMS도 SQLSERVER2010 이니 FireDAC 과 거리가 먼 차이나는 version 들도 아닐 거라는
생각입니다. (사실 만일 FireDAC이 BDE가나온시절 이전 그러니까 한 30년전에 쓰다 없어진
version 이라면 아 그냥 Support되는 수준이 낮아서라고 치부하고 상기 ⓐ로 대응 하고
말아버렸을 겁니다) 그래서 더 기술자료를 찾아 알고 싶어진 겁니다
댓글 4
-
험프리
2016.09.19 11:06
-
얄리
2016.09.19 11:11
MS SQL에서는 커넥션을 동시에 두개 이상 이용할 수 없습니다.
결론적으로 mssql은 connection을 한번에 하나만 사용하니깐 한번에 두개 이상 쓰지 말라는 메시지인거 같은데...
데브기어의 험프리님 말씀처럼 ODBC 파라미터 세팅을 살펴보시면 될지는 모르겠으나 각 FDQEERY마다 connection을 별개로 오픈하는 것이 좋지 않을까 생각됩니다.
-
준이킴
2016.10.20 13:11
쿼리 하나 + 커넥션 하나 로 구성한다면 얼마나 많이 복잡할까요 ^^
BDE 에서도 커넥션 하나 + 수십 수백개의 쿼리나 테이블을 사용했습니다. DB Express 에서도 그렇구요..
위의 에러는 다른 문제 같은데, 데브기어에서 문제 파악을 잘 못한 것 같습니다.
-
준이킴
2016.10.20 13:25
일단, 해결책은 찾았습니다.
이번에, 윈도우 10으로 업글한 후에 베를린 업데이트1 버전을 인스톨하고, 윈7+베를린으로 만든 VCL 어플을 컴파일하고 실했했더니
글쓴분과 동일한 증상이 나와서..원인을 찾아보니. 제 경우는 아래와 같습니다.
- 분명히 FDConnection 에 Native MSSQL 로 잡아주고 연결했는데도, 동일한 메시지가 나오면서 [ODBC] 라고 나오더군요..
- 윈7에 설치된 환경과 비교를 해보니 다른 점이 있더군요.
- 혹시나 하고, SQLServer Native Client 파일을 설치했습니다. ( 제 경우는 SQL Server 2008 )
- 에러가 났던 어플을 컴파일 없이 그대로 실행 해도 문제없이 돌아가네요..
결론, Native 로 FDConneciton 을 설정해 줘도, 해당 DB 에 맞는 Native 클라이언트 연결용 파일이 없으면, 알아서 ODBC 로 연결이 되는 것 같습니다.
예전 같으면, 연결이 안된다고 에러를 뿜었을텐데 FireDac 이 윈도우의 기본 ODBC 를 이용해서 ODBC 로 연결을 해주는 것 같습니다.
험프리님이 알려주신 엠바카데로 자료를 보니 Native Client 파일을 설치하라고 나와있습니다.
Delphi FireDac:다른hstmt의결과에 연결이 사용중입니다 라는 오류에 대해
2016.09.14 17:45
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
FireDac FDCONNECTION 관련 입니다
ODBC Connection 으로 하나의 FDCONNECTION 에 여러개의 FDQUERY을 연결하여
사용 한 경우인데 하나의 FDCONNECTION을 여러개의 FDQUERY에서(동일 Project의
여러 다수 Form(.PAS)의 FDQUERY에서) 사용 했는데 이 Message가 나오더군요.
(오류 message)
[Micrsoft][ODBC SQL Server Driver] 다른 hstmt의 결과에 연결이 사용 중입니다
ⓐ 물론 각 FDQEERY마다 서로 자기고유의 FDCONNECTION 을 두면 오류없이 잘
돌아 갑니다.
ⓑ 동일한 ODBC 동일한 내용 동일한 SQL 로 BDE (ODBC) 연결 하면 이때도 아무
문제 없이 잘 돌아 갑니다
* XE6에서 BDE로 잘 사용하는 것을 아무 다른 변경은 없고 단지 FireDac으로만
변경하려다가 부딪친 문제 입니다
(참고로 사용하는 SQLSERVER 는 SQLSERVER2010 입니다)
사실 FIREDAC에 대해서는 잘 모릅니다, BDE만 사용 해 가지고요.
그래서 이 내용을 확실하게 알고 싶습니다. 아시는 내용이 있으면 좀 가르켜 주시고
혹시 이것과 관련된 관련 기술자료나 이런 Reference(영문도 좋습니다) Intenet으로
어디서 구할 수있는지라도 좀 알려 주시면 감사하겠습니다
(나온 message는 파일로 첨부 하였습니다)
(좀더 부연설명 하면)
물론 SQL Server ODBC 문제 입니다 그런데 ① XE6의 FireDAC의 FDCOnnection에서 제공되는
SQL Server ODBC 가 과거(십수년전의) BDE의 SQL Server ODBC 보다 약한 것은 아닐거고
② DBMS도 SQLSERVER2010 이니 FireDAC 과 거리가 먼 차이나는 version 들도 아닐 거라는
생각입니다. (사실 만일 FireDAC이 BDE가나온시절 이전 그러니까 한 30년전에 쓰다 없어진
version 이라면 아 그냥 Support되는 수준이 낮아서라고 치부하고 상기 ⓐ로 대응 하고
말아버렸을 겁니다) 그래서 더 기술자료를 찾아 알고 싶어진 겁니다
댓글 4
-
험프리
2016.09.19 11:06
-
얄리
2016.09.19 11:11
MS SQL에서는 커넥션을 동시에 두개 이상 이용할 수 없습니다.
결론적으로 mssql은 connection을 한번에 하나만 사용하니깐 한번에 두개 이상 쓰지 말라는 메시지인거 같은데...
데브기어의 험프리님 말씀처럼 ODBC 파라미터 세팅을 살펴보시면 될지는 모르겠으나 각 FDQEERY마다 connection을 별개로 오픈하는 것이 좋지 않을까 생각됩니다.
-
준이킴
2016.10.20 13:11
쿼리 하나 + 커넥션 하나 로 구성한다면 얼마나 많이 복잡할까요 ^^
BDE 에서도 커넥션 하나 + 수십 수백개의 쿼리나 테이블을 사용했습니다. DB Express 에서도 그렇구요..
위의 에러는 다른 문제 같은데, 데브기어에서 문제 파악을 잘 못한 것 같습니다.
-
준이킴
2016.10.20 13:25
일단, 해결책은 찾았습니다.
이번에, 윈도우 10으로 업글한 후에 베를린 업데이트1 버전을 인스톨하고, 윈7+베를린으로 만든 VCL 어플을 컴파일하고 실했했더니
글쓴분과 동일한 증상이 나와서..원인을 찾아보니. 제 경우는 아래와 같습니다.
- 분명히 FDConnection 에 Native MSSQL 로 잡아주고 연결했는데도, 동일한 메시지가 나오면서 [ODBC] 라고 나오더군요..
- 윈7에 설치된 환경과 비교를 해보니 다른 점이 있더군요.
- 혹시나 하고, SQLServer Native Client 파일을 설치했습니다. ( 제 경우는 SQL Server 2008 )
- 에러가 났던 어플을 컴파일 없이 그대로 실행 해도 문제없이 돌아가네요..
결론, Native 로 FDConneciton 을 설정해 줘도, 해당 DB 에 맞는 Native 클라이언트 연결용 파일이 없으면, 알아서 ODBC 로 연결이 되는 것 같습니다.
예전 같으면, 연결이 안된다고 에러를 뿜었을텐데 FireDac 이 윈도우의 기본 ODBC 를 이용해서 ODBC 로 연결을 해주는 것 같습니다.
험프리님이 알려주신 엠바카데로 자료를 보니 Native Client 파일을 설치하라고 나와있습니다.
질문에 대한 답변 전에 한가지 안내를 먼저 드립니다.
FireDAC을 이용하시려면 직접 SQL Server를 연결하면 성능과 안정성이 더 좋습니다.
다음 링크를 참고하셔서 직접 SQL Server(MSSQL)에 연결하는 내용을 확인해보시기 바랍니다.
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Connect_to_Microsoft_SQL_Server_(FireDAC)
=======
FireDAC ODBC 관련된 내용은 아래의 링크에서 참고하시기 바랍니다.
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Connect_to_ODBC_Data_Source_(FireDAC)
마침 위 링크에서 아래와 같은 오류에 대한 대응방법이 설명되어 있습니다
오류: .
[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 10.0]Connection is busy with results for another command.
대응방법:
For an ODBC MSSQL database, set the ODBCAdvanced FDConnection parameter value to
MARS_Connection=YES
. Otherwise, when you call the Open method of FDTable, you will receive the following error:FDConnection의 ODBCAdvanced 매개변수에 MARS_Connection=YES로 설정해보시기 바랍니다.