DetailPage-MSS-KB

기술 자료

기술 자료: 917752 - 마지막 검토: 2007년 12월 3일 월요일 - 수정: 3.3

 

이 페이지에서

현상

영문자와 숫자가 조합된 PIN 코드가 설정된 Bluetooth 장치가 있다면. 사용자가 Microsoft .NET Framework 데이터 공급자를 ODBC .NET Framework 2.0에 [NULL]에 대한 데이터 원본 응용 프로그램에서 연결할 수 있습니다. 다음 OdbcConnection 개체의 BeginTransaction 메서드를 트랜잭션을 시작할 수 있습니다. 트랜잭션에 대한 데이터 원본을 지원하지 않는 트랜잭션 격리 수준을 지정합니다. 이 시나리오에서 예상대로 OdbcException 예외가 발생하지 않습니다. 그러나 .NET Framework 1.1을 사용할 때 예상대로 예외가 발생합니다.

원인

BeginTransaction 메서드는 ODBC 오류 (SQL_ERROR) 보고서 때문에 이 문제가 발생합니다 있는 SQLSetConnectAttr 함수를 반환합니다. ODBC .NET Framework 데이터 공급자를 기본 트랜잭션 관리 모드를 자동 커밋 모드입니다. 트랜잭션 격리 수준이 제대로 설정되어 있을 때 데이터 공급자를 경우에만 자동 커밋 모드를 해제합니다. 따라서 잘못된 트랜잭션 격리 수준을 지정하지 않으면 트랜잭션 작동하지 않습니다. Commit 메서드를 또는 Rollback 메서드를 호출할 경우 사용할 수 없습니다. Commit 메서드 및 Rollback 메서드를 ODBC 오류 (SQL_ERROR) 보고하지 않습니다.

해결 방법

Microsoft로부터 지원되는 핫픽스를 사용하실 수 있습니다. 그러나 이 문서에서 설명하는 문제를 해결하기 위해 설계되었습니다. 이러한 특정 문제가 발생하는 시스템에만 적용하십시오. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 NET Framework 2.0 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.

이 문제를 즉시 해결하려면 핫픽스를 구하려면 Microsoft 고객 지원 서비스에 문의하십시오. Microsoft 고객 지원 센터 전화 번호 및 지원 비용에 대한 정보를 전체 목록은 다음 Microsoft 웹 사이트를 방문하십시오.
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
참고 Microsoft 기술 지원 전문가가 특정 업데이트로 문제를 해결할 수 있다고 판단하는 경우, 일반적으로 지원 호출에 발생하는 비용이 취소될 수 있습니다. 추가 지원 질문과 문제에는 특정 업데이트가 필요하지 않은 지원 비용이 적용됩니다.

전제 조건

이 핫픽스를 적용하려면 컴퓨터에 설치되어 있는 Microsoft 기술 자료의 다음 문서를 설명하는 파일을 지원하는 Microsoft이 있어야 합니다.
916002  (http://support.microsoft.com/kb/916002/ ) FIX: SqlClient 클래스를 ADO.NET 2.0 기반 응용 프로그램을 사용하여 SQL Server 2005 인스턴스에 연결할 때 오류 메시지: "새 요청에 올바른 트랜잭션 설명자가 와야 합니다 때문에 시작할 수 없습니다."

재시작 요구 사항

이 핫픽스를 적용한 후에는 컴퓨터를 다시 시작할 필요가 없습니다.

레지스트리 정보

레지스트리를 변경할 필요가 없습니다.

핫픽스 파일 정보

이 핫픽스에는 이 문서에 나와 있는 문제를 해결하는 데 필요한 파일만 포함되어 있습니다. 이 핫픽스에는 제품을 최신 빌드로 완전히 업데이트하는 데 필요한 파일이 모두 포함되지 않을 수 있습니다.이 핫픽스의 영어 버전은 다음 표에 나열된 파일 특성(또는 그 이후의 파일 특성)이 있습니다. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 항목에서 표준 시간대 탭을 사용하십시오.

.NET Framework 2.0 32 비트 버전

표 축소표 확대
파일 이름파일 버전파일 크기날짜시간플랫폼
Mscordacwks.dll2.0.50727.158800,7682006-24-5월14:59x 86
Mscorlib.dll2.0.50727.1584,317,1842006-24-5월14:59x 86
Mscorwks.dll2.0.50727.1585,623,2962006-24-5월14:59x 86
Sos.dll2.0.50727.158377,3442006-24-5월14:59x 86
System.data.dll2.0.50727.1582,893,8242006-24-5월14:59x 86

.NET Framework 2.0 x 64 기반 버전

표 축소표 확대
파일 이름파일 버전파일 크기날짜시간플랫폼
Mscordacwks.dll2.0.50727.1581,597,4402006-24-5월06: 09x 64
Mscorlib.dll2.0.50727.1583,956,7362006-24-5월11: 25x 64
Mscorwks.dll2.0.50727.15810,306,0482006-24-5월06: 05x 64
Sos.dll2.0.50727.158476,1602006-24-5월06: 15x 64
System.data.dll2.0.50727.1582,959,8722006-24-5월11: 25x 64

.NET Framework 2.0 Itanium 아키텍처 버전

표 축소표 확대
파일 이름파일 버전파일 크기날짜시간플랫폼
Mscordacwks.dll2.0.50727.1582,710,0162006-24-5월06: 14IA-64
Mscorlib.dll2.0.50727.1583,956,7362006-24-5월12: 03IA-64
Mscorwks.dll2.0.50727.15821,260,2882006-24-5월06: 11IA-64
Sos.dll2.0.50727.158857,0882006-24-5월06: 22IA-64
System.data.dll2.0.50727.1583,102,2082006-24-5월12: 03IA-64

해결 과정

이 문제를 해결하려면 올바른 트랜잭션 격리 수준을 사용하여 확인해야 합니다. 응용 프로그램 트랜잭션 수준을 올바른지 여부를 확인하십시오 코드에서 예외를 throw하는 코드를 추가할 수 있습니다.

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.

추가 정보

Microsoft SQL Server 업데이트를 명명 스키마에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
822499  (http://support.microsoft.com/kb/822499/ ) 새 명명 스키마에 Microsoft SQL Server 소프트웨어 업데이트 패키지에 대한

소프트웨어 업데이트 용어에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684  (http://support.microsoft.com/kb/824684/ ) Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

추가 정보

Rollback 메서드를 사용할 수 없기 때문에 데이터 손상을 인해 이 문제가 발생할 수 있습니다. 예를 들어, 잘못된 트랜잭션 수준을 지정할 수 있습니다. 데이터 손상이 발생하는 경우 롤백을 예상합니다. 그러나 롤백이 발생하지 않습니다. Commit 메서드의 오류를 보고하지 않으므로 데이터를 예상대로 커밋되지 않은 있습니다 때문에 데이터 손상이 발생할 수 있습니다.

문제를 재현하는 방법

  1. Access 데이터 파일 (.mdb)를 만들고 두 개의 열이 포함된 테이블을 만듭니다. 데이터 파일 d:\db1.mdb 폴더에 저장되고 테이블 이름을 T1 있는지 가정하십시오. C1, C2 두 열이 명명된 가정하십시오.
  2. 일부 레코드를 T1 테이블에 삽입하십시오.
  3. Microsoft Visual Studio 2005를 사용하여 C# 프로젝트를 만들고 다음 다음 코드를 사용하여 메서드를. 에 붙여
    string cnstr = @"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\db1.mdb;UID=Admin;PWD=;"
    OdbcConnection cn = new OdbcConnection(cnstr);
    cn.Open();
    System.Diagnostics.Debug.WriteLine("connected.");
    
    try
    {
    OdbcTransaction trn = cn.BeginTransaction(IsolationLevel.ReadUncommitted);
    OdbcCommand cmd = new OdbcCommand("select * from T1", C1, C2);
    OdbcDataReader dr;
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    System.Diagnostics.Debug.WriteLine(dr[1].ToString());
    }
    dr.Close();
    trn.Commit();
    }
    catch (OdbcException odbcex)
    {
    System.Diagnostics.Debug.WriteLine(odbcex.Message);
    System.Diagnostics.Debug.WriteLine(odbcex.StackTrace);
    }
    cn.Close();
    cn = null;
    
  4. 응용 프로그램을 실행하고 메서드를 호출해야 합니다.
이러한 단계를 완료한 후에는 예외가 발생하지 알 수 있습니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 2.0
키워드: 
kbmt kbprb kbtshoot kbexpertiseadvanced KB917752 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store