Stretch Database 관리 및 문제 해결

적용 대상: SQL Server 2016(13.x) 이상 - Windows만 해당

중요

Stretch Database는 SQL Server 2022(16.x) 및 Azure SQL Database에서 더 이상 사용되지 않습니다. 데이터베이스 엔진의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.

Stretch Database를 관리하고 문제를 해결하려면 이 문서에서 설명하는 도구와 방법을 사용하세요.

로컬 데이터 관리

Stretch Database에 활성화된 로컬 데이터베이스 및 테이블에 대한 정보 얻기

스트레치가 활성화된 SQL Server 데이터베이스와 테이블에 대한 정보를 보려면 카탈로그 뷰 sys.databasessys.tables를 엽니다. 자세한 내용은 sys.databases(TRANSACT-SQL)sys.tables(TRANSACT-SQL)를 참조하세요.

SQL Server에서 스트레치가 활성화된 테이블을 사용하는 공간을 확인하려면 다음 문을 실행합니다.

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'LOCAL_ONLY';
GO

데이터 마이그레이션 관리

테이블에 적용된 필터 함수 확인

Stretch Database에서 마이그레이션할 행을 선택하는 데 사용하는 함수를 식별하려면 sys.remote_data_archive_tables 카탈로그 뷰를 열고 filter_predicate 열의 값을 확인합니다. 값이 null이면 전체 테이블을 마이그레이션할 수 있습니다. 자세한 내용은 sys.remote_data_archive_tables(Transact-SQL)필터 함수를 사용하여 마이그레이션할 행 선택을 참조하세요.

데이터 마이그레이션 상태 확인

Stretch Database 모니터에서 데이터 마이그레이션을 모니터링하려면 SQL Server Management Studio에서 데이터베이스에 대한 작업 > 스트레치 > 모니터를 선택합니다. 자세한 내용은 데이터 마이그레이션 모니터링 및 문제 해결(Stretch Database)을 참조하세요.

또는 마이그레이션된 데이터의 배치 및 행 수를 보려면 동적 관리 뷰 sys.dm_db_rda_migration_status를 엽니다.

데이터 마이그레이션 문제 해결

문제 해결 제안 사항은 데이터 마이그레이션 모니터링 및 문제 해결(Stretch Database)을 참조하세요.

원격 데이터 관리

Stretch Database에서 사용하는 원격 데이터베이스 및 테이블에 대한 정보 얻기

마이그레이션된 데이터가 저장되는 원격 데이터베이스와 테이블에 대한 정보를 보려면 카탈로그 뷰 sys.remote_data_archive_databasessys.remote_data_archive_tables를 엽니다. 자세한 내용은 sys.remote_data_archive_databases(Transact-SQL)sys.remote_data_archive_tables(Transact-SQL)를 참조하세요.

Azure에서 스트레치가 활성화된 테이블을 사용하는 공간을 확인하려면 다음 문을 실행합니다.

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'REMOTE_ONLY';
GO

마이그레이션된 데이터 삭제

Azure로 이미 마이그레이션된 데이터를 삭제하려면 sys.sp_rda_reconcile_batch에 설명된 단계를 수행합니다.

테이블 스키마 관리

원격 테이블의 스키마를 변경하지 마세요.

Stretch Database에 대해 구성된 SQL Server 테이블과 연결된 원격 Azure 테이블의 스키마를 변경하지 마세요. 특히 열의 이름 또는 데이터 형식을 수정하지 마세요. Stretch Database 기능은 SQL Server 테이블의 스키마와 관련하여 원격 테이블의 스키마에 대해 다양한 가정을 합니다. 원격 스키마를 변경하면 Stretch Database가 변경된 테이블에 대한 작업을 중지합니다.

테이블 열 조정

원격 테이블에서 열을 실수로 삭제한 경우 스트레치 사용 SQL Server 테이블에 있지만 원격 테이블에 없는 원격 테이블에 열을 추가하려면 sp_rda_reconcile_columns를 실행합니다. 자세한 내용은 sys.sp_rda_reconcile_columns를 참조하세요.

중요

sp_rda_reconcile_columns가 원격 테이블에서 실수로 삭제한 열을 다시 만드는 경우 이전에 삭제된 열에 있었던 데이터를 복원하지 않습니다.

sp_rda_reconcile_columns는 스트레치가 활성화된 SQL Server 테이블이 아닌 원격 테이블에 있는 원격 테이블의 열을 삭제하지 않습니다. 스트레치 지원 SQL Server 테이블에 더 이상 존재하지 않는 열이 원격 Azure 테이블에 있는 경우 이러한 추가 열 때문에 Stretch Database가 제대로 작동하지 않는 것은 아닙니다. 필요에 따라 추가 열을 수동으로 제거할 수 있습니다.

성능 및 비용 관리

쿼리 성능 문제 해결

스트레치 사용 테이블을 포함하는 쿼리는 스트레치에 대해 테이블을 사용하도록 설정하기 전보다 더 느리게 수행되어야 합니다. 쿼리 성능이 크게 저하되는 경우 다음과 같은 가능한 문제를 검토합니다.

  • Azure 서버가 SQL Server와 다른 지리적 지역에 있나요? 네트워크 대기 시간을 줄이기 위해 Azure 서버를 SQL Server와 동일한 지리적 지역에 있도록 구성합니다.

  • 네트워크 상태가 저하되었을 수 있습니다. 최근 문제 또는 중단에 대한 정보는 네트워크 관리자에게 문의하세요.

인덱싱과 같은 리소스 집약적 작업에 대한 Azure 성능 수준 향상

Stretch Database에 대해 구성된 큰 테이블에서 인덱스를 빌드하거나 다시 빌드하거나 다시 구성하고, 이 시간 동안 Azure에서 마이그레이션된 데이터에 대해 과도한 쿼리가 예상되는 경우 작업 기간 동안 해당 원격 Azure 데이터베이스의 성능 수준을 높이는 것이 좋습니다. 성능 수준 및 가격에 대한 자세한 내용은 SQL Server Stretch Database 가격을 참조하세요.

Azure의 SQL Server Stretch Database 서비스를 일시 중지할 수 없습니다.

적절한 성능 및 가격 책정 수준을 선택해야 합니다. 리소스를 많이 사용하는 작업에 대한 성능 수준을 일시적으로 늘리면 작업이 완료된 후 이전 수준으로 복원합니다. 성능 수준 및 가격에 대한 자세한 내용은 SQL Server Stretch Database 가격을 참조하세요.

쿼리의 범위 변경

스트레치 사용 테이블에 대한 쿼리는 기본적으로 로컬 및 원격 데이터를 모두 반환합니다. 모든 사용자가 모든 쿼리에 대한 쿼리 범위를 변경하거나 관리자가 단일 쿼리에 대해서만 변경할 수 있습니다.

모든 사용자의 모든 쿼리에 대한 쿼리 범위 변경

모든 사용자가 모든 쿼리의 범위를 변경하려면 저장 프로시저 sys.sp_rda_set_query_mode를 실행합니다. 로컬 데이터만 쿼리하거나 모든 쿼리를 사용하지 않도록 설정하거나 기본 설정을 복원하도록 범위를 줄일 수 있습니다. 자세한 내용은 sys.sp_rda_set_query_mode를 참조하세요.

관리자가 단일 쿼리에 대한 쿼리 범위 변경

db_owner 역할 멤버의 단일 쿼리 범위를 변경하려면 WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ) 쿼리 힌트를 SELECT 문에 추가합니다. REMOTE_DATA_ARCHIVE_OVERRIDE 쿼리 힌트에는 다음 값이 있을 수 있습니다.

  • LOCAL_ONLY 로컬 데이터만 쿼리합니다.

  • REMOTE_ONLY 원격 데이터만 쿼리합니다.

  • STAGE_ONLY Stretch Database가 마이그레이션에 적합한 행을 단계별로 실행하고 마이그레이션 후 지정된 기간 동안 마이그레이션된 행을 유지하는 테이블의 데이터만 쿼리합니다. 이 쿼리 힌트는 준비 테이블을 쿼리하는 유일한 방법입니다.

예를 들어 다음 쿼리는 로컬 결과만 반환합니다.

USE [<Stretch-enabled database name>];
GO
SELECT *
FROM [<Stretch_enabled table name>]
WITH (REMOTE_DATA_ARCHIVE_OVERRIDE = LOCAL_ONLY)
WHERE someCol = 1 /* sample predicate only, please replace with an appropriate one */;
GO

관리 업데이트 및 삭제

기본적으로 스트레치 사용 테이블에서 마이그레이션에 적합한 행 또는 이미 마이그레이션된 행을 업데이트하거나 삭제할 수 없습니다. 문제를 해결해야 할 경우 db_owner 역할의 멤버가 WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ) 쿼리 힌트를 문에 추가하여 UPDATE 또는 DELETE 작업을 실행할 수 있습니다. REMOTE_DATA_ARCHIVE_OVERRIDE 쿼리 힌트에는 다음 값이 있을 수 있습니다.

  • LOCAL_ONLY 로컬 데이터만 업데이트하거나 삭제합니다.

  • REMOTE_ONLY 원격 데이터만 업데이트하거나 삭제합니다.

  • STAGE_ONLY Stretch Database가 마이그레이션에 적합한 행을 단계별로 실행하고 마이그레이션 후 지정된 기간 동안 마이그레이션된 행을 유지하는 테이블의 데이터만 업데이트하거나 삭제합니다.

참고 항목