아래와 같은 경우 SQL Server 동작을 이해하려고합니다.Oracle에서 데이터를 추출하는 동안 SQL Server 2005의 테이블 잠금 동작
SQL Server에서 만든 연결된 서버를 사용하여 Oracle에서 SQL Server 2005 데이터베이스로 약 50 만 행을 가져옵니다. Insert Into select
쿼리에 약 50 개의 기수 열을 사용하고 있습니다.
쿼리를 완료하지 못했고 수동으로 중지 할 때까지는 무기한으로 실행되는 것으로 나타났습니다. 그러나 약 1 시간 후 대상 테이블을 확인하면 테이블의 행을 찾을 수있었습니다. 그러나 쿼리 실행이 중지되지도 않았고 desination 테이블에서 독점적 인 잠금을 해제하지도 않았습니다.
오라클 링크 서버로 간단한 쿼리를 실행했을 때 오라클과 SQL Server의 데이터 유형 중 일부가 명시 적으로 변환되어야한다는 것을 알았습니다 (특히 은 SQL 서버 Varchar
).
이 문제를 겪은 모든 데이터 유형을 명시 적으로 변환 한 후에도이 전체 페치를 아무런 문제없이 완료 할 수 있습니다. 즉, 쿼리가 정상적으로 중지되고 테이블에 부주의 한 잠금을 해제합니다.
내가 가진 질문은 쿼리에서 데이터 형식 변환 문제에도 불구하고 쿼리가 모든 데이터를 가져와 왜 모든 데이터를 가져온 후에도 해당 데이터를 가져온 이유는 무엇입니까? 이 문제에 대한 설명은 고맙게 여길 것입니다 (문제가 해결 되었더라도 :))
질문 : ** 왜 ** 숫자 * 값을 SQL Server의'varchar'로 저장하고 있습니까?!?!? [나쁜 습관 : 잘못된 데이터 유형 선택] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type .aspx) - 항상 가장 적절한 데이터 유형을 사용해야합니다. –
나는 당신이 공유하는 링크에 대해 절대적으로 동의하고 감사하며, 도움이되었습니다. 하지만 어쨌든 많은 의존성으로 인해 테이블 데이터 유형을 변경할 수 없었습니다. 심지어 내가 그런 식으로 설계된 이유를 알아 냈습니다. SQL Server 데이터 형식과 호환되지 않는 Oracle의 데이터 형식 형식이 있습니까? – Charudatta