2010-01-07 6 views
0

파일을 읽을 OPENROWSET 명령을 사용하여 저장 프로 시저 내부에 연결된 서버에 트랜잭션을 유지 64 비트 SQL Server 시스템에서는 Jet.oledb 드라이버가 가져 오기 작업을 지원하지 않습니다. ,<p></p> Excel을 수행하기 위해, 엑셀에서 데이터 내가 32 비트 SQL 서버에있는 도우미 DB를하고 난 64 비트의 연결된 서버를 추가 한

내가 클라이언트 시스템 및 서버 시스템에서 DTC 서비스를 구성,

모든 것이 잘 작동,하지만 난, 삽입, 업데이트에 대한 거래를 유지하는 연결된 서버 데이터베이스에서 발생 삭제해야

추가 블록 저장 프로 시저의 트랜잭션처럼 시작에 대한 특검팀의 상단

이 XACT_ABORT ON이
이 BEGIN TRANSACTION을 BEGIN SET TRY BEGIN에 TRY

SE T는 XACT_ABORT

BEGIN TRANSACTION ON

--Code

--Code

END

가 @@ TRANCOUNT <> 0 롤백 TRANSACTION

경우 CATCH

을 BEGIN TRY

- // raise er 웹 사이트에 로그인하십시오.

DECLARE @ErrorMessage NVARCHAR (4000);

DECLARE @ErrorSeverity INT;

DECLARE @ErrorState INT;

을 선택

@ErrorMessage = ERROR_MESSAGE()

@ErrorSeverity ERROR_SEVERITY =()

@ErrorState = ERROR_STATE();

RAISERROR (@ErrorMessage, -. 메시지 텍스트

@ErrorSeverity, -- Severity. 

    @ErrorState -- State. 

    ); 

그러나이 말하는 ERR을 던져,

요청한 작업은 OLE DB 공급자 "Microsoft.Jet.OLEDB 때문에 수행 할 수 없습니다. 연결된 서버 "(null)"에 대해 "4.0"이 필요한 트랜잭션 인터페이스를 지원하지 않습니다.

엑셀 시트에서 데이터를 읽는 데 사용했던 Openrowset 함수에서 오류가 발생했습니다

,451,515,

즉,

OPENROWSET SELECT * FROM ('Microsoft.Jet.OLEDB.4.0',
'엑셀 5.0; HDR = 예; IMEX = 1, 데이터베이스 = C : \ test.XLS ','[시트 $]에서 직원 ID를 선택합니다 직원 ID는

난 정말 붙어 및 M) 'null가 아닌
모든 솔루션을 찾을 수 없습니다 나처럼 도움에 미리,

감사 미친을 받고,

답변

0

커서로 Excel 파일을 열 때, 시작하기 전은 어떨까요? ?

+0

사실 내가 읽고 작업을 수행해야하며 연결된 DB 서버의 일부 테이블에 전달해야합니다, 너무 많은 INSERT, 업데이트 및 삭제 및 수행 할 작업을 읽을 수 있습니다, 그래서 내가 안에 넣을 필요가 단일 거래 시작 .. –

1

CSV에서 가져 오는 비슷한 문제가있었습니다. 거래 이름을 BEGIN TRAN mytran으로 지정하고 @@ TRANCOUNT 대신 @@ ROWCOUNT을 (를) 확인하여 해결했습니다.

OP가 물어 본지 오래되었지만 어쩌면 누군가가이 문제에 대해 검색하는 데 도움이 될 수 있음을 이해합니다. :)