2007/08/10

Linked Server 의 MySQL 트랜잭션 문제 - MSDASQL 0x80004002

Linked Server 의 설정방법은 이미 등록된 다음 문서를 참고해 보시구요,.


분산쿼리를 위한 Linked Server 설정
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=172


같은 SQL Server 끼리 연결은 크게 발생하는 문제는 여러 SQL 전문 웹사이트를 보면 거의 없는 것으로 보입니다.

간혹 발생하는 문제가 MySQL 이나 Oracle 연결시에 문젝 발생하는 것 같은데요,. MySQL 에서 트랜잭션을 지원하지 않거나 기타 이유로 인해서 일부에서 다음과 같은 오류가 발생하기도 합니다.

서버: 메시지 7390, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'MSDASQL'이(가) 필요한 트랜잭션 인터페이스를 제공하지 않아서 요청한 작업을 수행할 수 없습니다.
OLE DB 오류 추적 [OLE/DB Provider 'MSDASQL' IUnknown::QueryInterface returned 0x80004002].


위와 같은 오류메시지를 보면, 트랜잭션 처리를 할수 없다는 내용입니다.

아시다 시피 SQL Server 는 insert, update, delete 같은 쿼리는 명시적인 트랜잭션 처리를 하지 않더라도 암시적인 트랜잭션 처리를 하게 되어 있습니다.

트랜잭션처리는, 쿼리실행도중 예기치 않는 상황에서 쿼리실행이전의 상태로 롤백처리를 하기 위해서 입니다. 트랜잭션에 대한 내용은 관련 도움말을 참조해보시고요..^^


위와 같은 오류발생시에, 해당 프로바이더가 트랜잭션 처리를 하지 않도록 설정을 해주면 됩니다.



SQL Server 2005 에서는 MS 의 다음 프로바이더 리스트에서 설정해 주면 됩니다.



공급자옵션에서, 각 옵션의 의미는 다음과 같습니다.

- 동적매개변수
0이 아니면 공급자에서 매개 변수화된 쿼리에 대해 '?' 매개 변수 표식 구문을 허용한다고 나타냅니다. 이 옵션은 공급자가 ICommandWithParameters 인터페이스를 지원하고 '?'를 매개 변수 표식으로 지원하는 경우에만 설정하십시오. 이 옵션을 설정하면 SQL Server가 공급자에 대해 매개 변수화된 쿼리를 실행하도록 합니다. 공급자에 대해 매개 변수화된 쿼리를 실행할 수 있어서 일부 쿼리의 경우 성능이 향상될 수 있습니다.

- 중첩쿼리
0이 아니면 공급자에서 FROM 절의 SELECT 중첩문을 허용한다고 나타냅니다. 이 옵션을 설정하면 SQL Server에서 FROM 절의 SELECT 중첩문을 요청하는 공급자에게 일부 쿼리를 위임할 수 있습니다.

- InProcess 허용
0이 아니면 SQL Server에서는 공급자가 종속 프로세스 서버로 인스턴스화되도록 합니다. 이 옵션이 레지스트리에 설정되어 있지 않으면 기본 동작은 SQL Server 프로세스 외부에서 공급자를 인스턴스화합니다. SQL Server 프로세스 외부에서 공급자를 인스턴스화하면 공급자에 있는 오류로부터 SQL Server 프로세스를 보호할 수 있습니다. 공급자가 SQL Server 프로세스 외부에서 인스턴스화되면 긴 열(text, ntext 또는 image)을 참조하는 업데이트나 삽입은 허용되지 않습니다.

- 트랜잭션 처리된 업데이트 아님
0이 아니면 ITransactionLocal을 사용할 수 없어도 SQL Server에서 업데이트를 허용합니다. 이 옵션이 사용되면 공급자가 트랜잭션을 지원하지 않으므로 공급자에 대해 업데이트를 복구할 수 없습니다.

- 엑세스 경로인 인덱스
0이 아니면 SQL Server에서는 공급자 인덱스를 사용하여 데이터를 반입하려고 시도합니다. 기본값으로 인덱스는 메타 데이터에만 사용되며 열리지 않습니다.

- 임시 액세스 허용 안함
0이 아닌 값이 설정되어 있으면 SQL Server에서는 OLE DB 공급자에 대해 OpenRowset()OpenDataSource() 함수를 사용하여 임의 액세스를 허용하지 않습니다. 이 옵션이 설정되어 있지 않으면 기본 동작은 OpenRowset OpenDataSource를 허용합니다.



09-linkedserver-1.png
09-linkedserver-2.png

댓글 없음:

댓글 쓰기

가장 많이 본 글