메모리 내 OLTP에 대해 지원되지 않는 SQL Server 기능
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
이 항목에서는 메모리 최적화 개체와 함께 사용할 수 없는 SQL Server 기능을 설명합니다. 또한 마지막 섹션에는 메모리 내 OLTP에 대해 지원되지 않았지만 나중에 지원되는 기능이 나열되어 있습니다.
메모리 내 OLTP에 대해 지원되지 않는 SQL Server 기능
메모리 최적화 개체(메모리 최적화 데이터 파일 그룹 포함)가 있는 데이터베이스에서는 다음 SQL Server 기능이 지원되지 않습니다.
지원되지 않는 기능 | 기능 설명 |
---|---|
메모리 최적화 테이블에 대한 데이터 압축 | 데이터 압축 기능을 사용하여 데이터베이스 내의 데이터를 압축하고 데이터베이스 크기를 줄일 수 있습니다. 자세한 내용은 Data Compression을 참조하세요. |
메모리 최적화 테이블 및 해시 인덱스, 비클러스터형 인덱스의 분할 | 분할 테이블 및 인덱스의 데이터는 데이터베이스에서 두 개 이상의 파일 그룹으로 분할될 수 있는 단위로 나뉩니다. 자세한 내용은 Partitioned Tables and Indexes을 참조하세요. |
복제 | 구독자에서 메모리 최적화 테이블에 대한 트랜잭션 복제 이외의 복제 구성은 메모리 최적화 테이블을 참조하는 테이블 또는 뷰와 호환되지 않습니다. 메모리 최적화 파일 그룹이 있는 경우 sync_mode='database snapshot'을 사용한 복제는 지원되지 않습니다. 자세한 정보는 메모리 최적화 테이블 구독자에 대한 복제를 참조하세요. |
미러링 | 데이터베이스 미러링은 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 데이터베이스에서 지원되지 않습니다. 미러링에 대한 자세한 내용은 데이터베이스 미러링(SQL Server)을 참조하세요. |
로그 다시 빌드 | 연결 또는 ALTER DATABASE를 통해 로그를 다시 빌드하는 것은 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 데이터베이스에서 지원되지 않습니다. |
연결된 서버 | 메모리 최적화 테이블과 동일한 쿼리 또는 트랜잭션에서 연결된 서버에 액세스할 수 없습니다. 자세한 내용은 연결된 서버(데이터베이스 엔진)를 참조하세요. |
대량 로깅 | 데이터베이스의 복구 모델과 관계없이 지속형 메모리 최적화 테이블에 대한 모든 작업은 항상 완전히 기록됩니다. |
최소 로깅 | 메모리 최적화 테이블에는 최소 로깅이 지원되지 않습니다. 최소 로깅에 대한 자세한 내용은 트랜잭션 로그(SQL Server) 및 대량 가져오기의 최소 로깅을 위한 선행 조건을 참조하세요. |
변경 내용 추적 | 메모리 최적화 테이블에는 변경 내용 추적이 지원되지 않습니다. |
DDL 트리거 | 데이터베이스 수준 트리거 및 서버 수준 DDL 트리거는 메모리 내 OLTP 테이블 또는 네이티브 컴파일된 모듈에서 지원되지 않습니다. |
CDC(변경 데이터 캡처) | SQL Server 2017 CU15 이상에서는 메모리 최적화 테이블이 있는 데이터베이스에서 CDC 사용을 지원합니다. 데이터베이스 및 데이터베이스의 모든 디스크 테이블에만 적용됩니다. 이전 SQL Server 버전의 경우 내부적으로 CDC는 DROP TABLE에 대해 DDL 트리거를 사용하므로 메모리 최적화 테이블을 포함하는 데이터베이스에서는 CDC를 사용할 수 없습니다. |
파이버 모드 | 파이버 모드는 메모리 최적화 테이블에서 지원되지 않습니다. 파이버 모드가 활성화된 경우 메모리 최적화 파일 그룹이 포함된 데이터베이스를 만들거나 메모리 최적화 파일 그룹을 기존 데이터베이스에 추가할 수 없습니다. 메모리 최적화 파일 그룹이 포함된 데이터베이스가 있는 경우 파이버 모드를 사용하도록 설정할 수 있습니다. 그러나 파이버 모드를 사용하도록 설정하려면 서버를 다시 시작해야 합니다. 이 경우 메모리 최적화 파일 그룹이 있는 데이터베이스는 복구되지 않습니다. 그런 다음 메모리 최적화 파일 그룹이 포함된 데이터베이스를 사용하려면 파이버 모드를 사용하지 않도록 설정할 것을 제안하는 오류 메시지가 표시됩니다. 파이버 모드가 활성화된 경우 메모리 최적화 파일 그룹이 있는 데이터베이스를 연결하고 복원하는 작업이 실패합니다. 데이터베이스는 주의 대상으로 표시됩니다. 자세한 내용은 경량 풀링 서버 구성 옵션을 참조하세요. |
Service Broker 제한 | 고유하게 컴파일된 저장 프로시저에서 큐에 액세스할 수 없습니다. 메모리 최적화 테이블에 액세스하는 트랜잭션에서 원격 데이터베이스의 큐에 액세스할 수 없습니다. |
구독자 복제 | 구독자의 메모리 최적화 테이블에 대한 트랜잭션 복제는 지원되지만 몇 가지 제한 사항이 있습니다. 자세한 내용은 메모리 최적화 테이블 구독자에 대한 복제를 참조하세요. |
데이터베이스 간 쿼리 및 트랜잭션
몇 가지 예외를 제외하고 데이터베이스 간 트랜잭션은 지원되지 않습니다. 다음 표에서는 지원되는 사례와 해당 제한 사항을 설명합니다. (참고 항목: 데이터베이스 간 쿼리)
데이터베이스 | 허용됨 | 설명 |
---|---|---|
사용자 데이터베이스, 모델, msdb | 아니요 | 대부분의 경우 데이터베이스 간 쿼리 및 트랜잭션은 지원되지 않습니다. 쿼리에서 메모리 최적화 테이블 또는 네이티브 컴파일된 저장 프로시저를 사용하는 경우 쿼리는 다른 데이터베이스에 액세스할 수 없습니다. 이 제한은 트랜잭션 및 쿼리에 적용됩니다. 예외는 시스템 데이터베이스 tempdb 및 master입니다. 여기서 master 데이터베이스는 읽기 전용 액세스에 사용할 수 있습니다. |
리소스 데이터베이스, tempdb | 예 | 메모리 내 OLTP 개체를 터치하는 트랜잭션에서 리소스 및 tempdb 시스템 데이터베이스는 추가 제한 없이 사용할 수 있습니다. |
지원되지 않는 시나리오
CLR 저장 프로시저 내부에서 컨텍스트 연결을 사용하여 메모리 최적화 테이블에 액세스합니다.
메모리 최적화 테이블에 액세스하는 쿼리의 키 집합 및 동적 커서입니다. 이러한 커서는 정적 및 읽기 전용으로 저하됩니다.
대상이 메모리 최적화 테이블인 MERGE INTO 대상을 사용하는 것은 지원되지 않습니다.
- MERGE USING 원본은 메모리 최적화 테이블에서 지원됩니다.
ROWVERSION(타임스탬프) 데이터 형식은 지원되지 않습니다. 자세한 내용은 FROM(Transact-SQL)을 참조하세요.
자동 닫기는 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 데이터 베이스에서 지원되지 않습니다.
메모리 내 OLTP 개체에 대한 CREATE/ALTER/DROP과 같은 트랜잭션 DDL은 사용자 트랜잭션 내에서 지원되지 않습니다.
이벤트 알림
정책 기반 관리(PBM).
- PBM의 방지 및 로그 전용 모드는 지원되지 않습니다. 서버에 이러한 정책이 존재하면 메모리 내 OLTP DDL이 성공적으로 실행되지 않을 수 있습니다. 주문형 및 예약 모드가 지원됩니다.
데이터베이스 포함(포함된 데이터베이스)은 메모리 내 OLTP에서 지원되지 않습니다.
- 포함된 데이터베이스 인증은 지원됩니다. 그러나 모든 메모리 내 OLTP 개체는 DMV(동적 관리 뷰) dm_db_uncontained_entities에서 포함을 벗어난 것으로 표시됩니다.
최근 추가된 지원
SQL Server의 최신 릴리스에서 이전에 지원되지 않았던 기능에 대한 지원이 추가되는 경우도 있습니다. 이 섹션에서는 메모리 내 OLTP에 대해 지원되지 않았지만 나중에 메모리 내 OLTP에서 지원되는 기능을 나열합니다.
다음 표에서 버전 값((15.x)
등)은 Transact-SQL 문 SELECT @@Version;
에서 반환되는 값을 참조합니다.
기능 이름 | SQL Server의 버전 | 설명 |
---|---|---|
데이터베이스 스냅샷 | 2019(15.x) | 데이터베이스 스냅샷은 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 데이터베이스에 대해 지원됩니다. |