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

증상

다음 시나리오를 고려하십시오.

  • 연결된 된 서버는 로컬 서버와 Microsoft SQL Server 2012 인스턴스를 갖추고 원격 서버 간에 구성 되어 있습니다.

  • 로컬 서버는 같은 대/소문자 구분 데이터 정렬 한 데이터 정렬을 사용 하 여 구성 됩니다.

  • 원격 서버에는 다른 데이터 정렬을 대/소문자 구분 데이터 정렬 등 로컬 서버에 구성 된 개체입니다.

  • 연결이 만들어질 Microsoft JDBC 드라이버에서 SQL Server 대 한 Microsoft ODBC 드라이버가 SQL Server, SQL OLE DB 공급자 또는 SQL Native Client에 대 한 로컬 서버에 있습니다.

  • 드라이버는 로컬 서버에서 sp_prepexec 저장 프로시저를 호출 하는 준비 된 문으로 Transact SQL 업데이트 쿼리를 실행 합니다.

  • 쿼리에서 원격 서버의 테이블을 업데이트합니다. 로컬 서버에서 다른 데이터 정렬을 사용 하 여 열 개체를 포함 합니다.

이 시나리오에서 쿼리 실행의 성능 저하를 발생할 수 있습니다. 업데이트 쿼리의 실행 계획을 선택 하면 필터링 없이 원격 서버에 있는 테이블에 원격 검색 수행 됩니다 볼 수 있습니다. 따라서 쿼리는 원격 테이블을 스캔 하 고 다음 로컬 서버에 있는 모든 행을 검색 하는 경우 많은 읽기를 수행할 수 있습니다.

예를 들어, 기본 대/소문자 구분 데이터 정렬을 가진 로컬 서버에는 쿼리를 준비 하 고 원격 서버는 대 소문자를 구분 하는 열이 포함 된 T1 테이블에. 이 업데이트는 t 1의 모든 행을 검사 합니다.
DECLARE @p1 INTEXEC sp_prepexec @p1 output, N'@P0 NVARCHAR(16), @P1 NVARCHAR(16)',
N'UPDATE RemoteServer.RemoteDatabase.dbo.T1 SET COL1=@P0 WHERE COL2=@P1',
N'a', N'a'
SELECT @p1

원인

준비 된 업데이트 쿼리 서버 데이터 정렬이 일치 하지 않는 경우 원격 테이블 스캔은 문제가 발생 합니다.

SQL Server용 각각의 새로운 누적 업데이트는 모이전 누적 업데이트에 포함된 모든 핫픽스 및 보안 수정 프로그램을 포함합니다. SQL Server에 대한 최신 누적 업데이트를 확인해 보십시오.


핫픽스 정보지원되는 핫픽스를 Microsoft에서 구할 수 있습니다. 그러나 이 핫픽스는 오직 이 문서에서 설명하는 문제를 해결하는 작업에만 사용됩니다. 이 문제가 발생하는 시스템에만 이 핫픽스를 적용해야 합니다.

핫픽스를 다운로드할 수 있는 경우, 이 기술 자료 문서의 상단에 "핫픽스 다운로드 가능" 섹션이 있습니다. 이 섹션이 표시 되지 않으면 Microsoft 고객 서비스 및 지원 핫픽스를 구하는 요청을 제출 합니다.

참고: 추가 문제가 발생하거나 문제 해결이 필요한 경우, 별도로 서비스를 요청해야 할 수도 있습니다. 추가 지원 질문과 이 특정 핫픽스가 필요하지 않은 문제에는 일반 지원 비용이 적용됩니다. 전체 목록은 Microsoft 고객 서비스 및 지원 전화 번호 또는 별도 서비스 요청을 만들려면, 다음 Microsoft 웹 사이트를 방문 하십시오.

http://support.microsoft.com/contactus/?ws=support참고: "핫픽스 다운로드 사용 가능" 형식은 핫픽스 사용이 가능한 언어를 표시합니다. 사용자 언어가 표시되지 않는 것은 핫픽스를 해당 언어로 사용할 수 없기 때문입니다.

전제 조건이 핫픽스를 적용 하려면 SQL Server 2012가 설치 되어 있어야 합니다.

레지스트리 정보이 핫픽스를 적용 한 후에 레지스트리를 변경할 필요가 없습니다.

핫픽스 대체 정보이 핫픽스는 다른 핫픽스를 대체하지 않습니다.


상태

Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.

해결 방법

작동 하도록 다음 방법 중 하나를 사용 하십시오 문제가 많습니다.

  • 클라이언트 응용 프로그램의 소스 코드에서 준비 된 문을 사용 하지 마십시오. 대신 사용할 수 있습니다 임시 문 또는 저장된 프로시저 처럼 호출 가능한 문을 드라이버 인터페이스를 지 원하는 경우.

  • 두 서버에서 일치 하는 데이터 정렬을 사용 합니다.

자세한 내용

추적 플래그를 활성화 하려면 시작 매개 변수를 추가 합니다. -T4199 또는 DBCC TRACEON(4199,-1) 동작이 가능 하도록 준비 된 문을 컴파일 전에.

추적 플래그를 설정 하려면 다음 방법 중 하나를 사용할 수 있습니다.

  • SQL Server 시작 하기 전에 Microsoft SQL Server 구성 관리자를 사용 하 여 해당된 인스턴스를 마우스 오른쪽 단추로 클릭 시작 매개 변수를 추가 합니다. -T4199 다시 시작 하 고 모든 연결 인스턴스를 통해 나중에 유지 되도록 합니다.

  • 동적으로 런타임에 서비스 시작을 가져옵니다 및 모든 연결 "(-1)에 대 한 전역 설정을 사용 하도록 설정 합니다." 설정 또는 해제 스위치를 사용 하 여 테스트를 수행 하려는 경우 프로시저 캐시를 해제 해야 합니다.

    설정을 활성화 하려면 다음을 사용 하 여 전체적으로, 동적으로.
    DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE
    설정을 해제 하려면 다음을 사용 하 여 전체적으로, 동적으로.
    DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE


도움이 더 필요하세요?

더 많은 옵션을 원하세요?

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

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

이 정보가 유용한가요?

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

의견 주셔서 감사합니다!

×