Microsoft SQL Server에서 OPENQUERY는 지정한 연결된 서버(OLE DB 데이터 원본)에서 전달된 쿼리를 실행하는 함수입니다. 주로 분산 데이터베이스 환경에서 사용되며, 여러 데이터베이스 간에 데이터를 조회하거나 수정할 때 유용합니다.
Ⅰ. Open Query 란?
SQL Server의 Linked Server 기능을 활용하여 원격 데이터베이스 서버에 직접 쿼리를 전달하고 그 결과를 로컬 서버로 가져오는 역할을 합니다. 주로 다른 데이터베이스 유형(예: Oracle, MySQL 등)과의 상호작용을 위해 사용됩니다.
Ⅱ. Open Query 기본 문법
SELECT * FROM OPENQUERY([Linked Server명], [원격 서버에서 실행할 SQL 쿼리]) Linked Server명 : 미리 설정된 Linked Server 이름 원격 서버에서 실행할 SQL 쿼리: 원격 서버에서 실행될 SQL 명령 |
Ⅲ. Open Query 사용 예시
SELECT * FROM OPENQUERY(MyDatabase, 'SELECT name, age FROM User') MyDatabase라는 연결된 서버에서 User 테이블의 name과 age 컬럼을 가져옵니다. |
Ⅳ. Open Query 에서 SELECT 를 제외한 DML 실행 가능 여부
ⅰ) INSERT, UPDATE, DELETE 문은 OPENQUERY를 통해 실행할 수 있습니다.
ⅱ) 원격 서버의 트랜잭션 및 잠금 정책에 따라 성능 및 동시성에 영향을 미칠 수 있습니다.
ⅲ) MERGE 문도 실행할 수 있지만, 원격 서버의 설정에 따라 제약이 있을 수 있습니다.
Ⅴ. Linked Server의 트랜잭션 영향
ⅰ) OPENQUERY는 기본적으로 원격 서버에서 독립적인 트랜잭션을 실행합니다.
ⅱ) 로컬 서버에서 실행하는 트랜잭션과 독립적으로 실행되므로, Distributed Transaction (분산 트랜잭션, MSDTC) 이 활성화되지 않으면 ROLLBACK이 되지 않을 수 있습니다.
Ⅴ 성능 및 부하 영향
ⅰ) OPENQUERY는 원격 서버에서 직접 실행되므로, 네트워크 부하를 줄이는 효과가 있습니다.
ⅱ) 대량의 DML 작업을 수행할 경우, 원격 서버의 트랜잭션 로그 증가 및 잠금 문제가 발생할 수 있습니다.
ⅲ) 원격 서버에서 실행되는 쿼리는 해당 서버의 리소스를 직접 사용하므로, CPU 및 I/O 부하에 영향을 줄 수 있습니다.
'데이터베이스' 카테고리의 다른 글
mysqldump에 대해 알아보겠습니다. (0) | 2025.02.07 |
---|---|
MySQL 8.0에서 패스워드 정책 확인 및 변경 방법에 대해 알아보겠습니다. (0) | 2024.11.07 |
PostgreSQL에 대해 알아보겠습니다. (1) | 2024.10.29 |
aria init function returned error 에러 조치 (0) | 2024.08.06 |
DDL, DML, DCL 에 대해 알아보겠습니다. (0) | 2024.07.27 |