Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

증상

Sqlncli11 ODBC 드라이버를 사용 하 여 응용 프로그램에서 Microsoft SQL Server 2012 또는 SQL Server 2014에 액세스 한다고 가정 합니다. 서버 커서와 Sqlfetch/ SQLGetData 함수를 사용 하 여 SQL server의 일부 BLOB (binary large object) 데이터에 액세스 하는 경우 varbinary (max) 또는 varchar (max)와 같은 큰 데이터 형식에 대 한 성능 문제가 발생 합니다.

원인

이는 SQL Server 2012 ODBC 드라이버의 Sqlfetch/ SQLGetData 함수 구현에 대 한 디자인 문제입니다. 쿼리에서 서버 커서를 사용 하는 경우, ODBC 드라이버는 Sqlfetch 구현 중에 sp_cursorfetch 를 호출 하 고, 서버는 모든 BLOB를 클라이언트에 보냅니다. 그런 다음, SQLGetData 가 실행 되 면 sp_cursor 모든 BLOB을 다시 가져옵니다. 이는 varbinary (max) 또는 varchar (max) 등의 큰 데이터 형식에 대 한 성능에 큰 영향을 줍니다.

해결 방법

누적 업데이트 정보

새 구현에서는 sp_cursoroption 호출 하 여 sp_cursorfetch앞에 TEXTPTR_ONLY를 가져온 다음 sp_cursor하기 전에 sp_cursoroption 를 호출 하 여 TEXTDATA에 다시 놓습니다. 이렇게 하면 성능이 향상 될 수 있습니다. 이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.

각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 다운로드 하 여 설치 하는 것이 좋습니다.

상태

Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×