호환성 인증

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

호환성 인증을 통해 기업은 클라우드 및 에지에서 SQL Server 데이터 온-프레미스를 업그레이드하고 현대화하여 애플리케이션 호환성 위험을 제거할 수 있습니다.

동일한 데이터베이스 엔진에서 SQL Server 및 Azure SQL Database(Azure SQL Managed Instance 포함)를 모두 구동합니다. 이 공유된 데이터베이스 엔진은 사용자 데이터베이스를 온-프레미스 SQL Server와 Azure SQL Database 간에 원활하게 이동할 수 있고, Transact-SQL처럼 데이터베이스에서 실행되는 애플리케이션 코드가 원본 시스템에 있는 것처럼 계속 작동한다는 것을 의미합니다.

각 새로운 릴리스의 SQL Server 설치의 경우 기본 호환성 수준은 데이터베이스 엔진의 버전으로 설정됩니다. 그러나 이전 버전의 호환성 수준은 기존 애플리케이션의 호환성을 위해 유지됩니다. 이 호환성 매트릭스는 여기에서 볼 수 있습니다. 따라서 지정된 SQL Server 버전에서 작동하도록 인증된 애플리케이션은 실제로 해당 버전의 기본 호환성 수준에서 작동하도록 인증되었습니다.

예를 들어 데이터베이스 호환성 수준 130은 SQL Server 2016(13.x)에서 기본값이었습니다. 호환성 수준은 특정 Transact-SQL 기능 및 쿼리 최적화 동작을 적용하기 때문에 SQL Server 2016(13.x)에 작동하도록 인증된 데이터베이스는 데이터베이스 호환성 수준 130에서 암시적으로 인증되었습니다. 데이터베이스 호환성 수준이 130으로 유지되는 한, 이 데이터베이스는 좀 더 최신 버전의 SQL Server(예: SQL Server 2019 (15.x)) 및 Azure SQL Database에서 그대로 작동할 수 있습니다.

Microsoft Azure SQL Database 연속 통합 작업 모델의 기본 원칙입니다. 데이터베이스 엔진은 Azure에서 지속적으로 개선되고 업그레이드되지만 기존 데이터베이스는 현재 호환성 수준을 유지하기 때문에 기본 데이터베이스 엔진으로 업그레이드한 후에도 설계된 대로 계속 작동합니다.

이는 또한 SharePoint Server 2016 및 SharePoint Server 2019가 SQL Server 및 Azure SQL Managed Instance에서 인증하는 방법으로, 해당 SharePoint Server 버전에 대해 지원되는 데이터베이스 호환성 수준을 사용할 수 있는 SQL Server 데이터베이스 엔진를 배포할 수 있습니다. 자세한 내용은 SharePoint Server 2016의 하드웨어 및 소프트웨어 요구 사항SharePoint Server 2019의 하드웨어 및 소프트웨어 요구 사항을 참조하세요.

호환성 인증으로 업그레이드 위험 관리

호환성 인증을 사용하는 것은 데이터베이스 현대화의 중요한 접근 방식입니다. 호환성 수준을 기반으로 한 인증을 통해 개발자는 SQL Server 및 Azure SQL Database에서 지원되는 애플리케이션에 대한 기술 요구 사항을 설정하지만, 데이터베이스 플랫폼 수명 주기와 애플리케이션 수명 주기를 분리합니다. 이렇게 하면 회사는 수명 주기 정책에 따라 SQL Server 데이터베이스 엔진의 업그레이드된 상태를 유지하면서 코드에 종속되지 않는 새로운 확장성 및 성능 향상 기능을 활용할 수 있고, 애플리케이션 연결은 업그레이드를 통해 기능 상태를 유지합니다.

기능 및 성능에 부정적인 영향을 미칠 가능성은 모든 업그레이드의 주요 위험 요소입니다. 호환성 인증은 이러한 업그레이드 위험을 관리하는 측면에서 안심할 수 있음을 나타냅니다.

  • Transact-SQL 동작과 관련하여 변경 내용이 있을 경우 정확성을 위해 애플리케이션을 재인증해야 함을 의미합니다. 그러나, 데이터베이스 호환성 수준 설정은 전체 서버가 아닌 지정된 데이터베이스에 대해서만 이전 SQL Server 버전과의 호환성을 제공합니다. 데이터베이스 호환성 수준을 그대로 유지하면 데이터베이스 엔진 업그레이드 전후에 기존 애플리케이션 쿼리가 동일한 동작을 계속 표시하게 할 수 있습니다. Transact-SQL 동작 및 호환성 수준에 대한 자세한 내용은 이전 버전과의 호환성을 위해 호환성 수준 사용을 참조하세요.

  • 성능에 관련된 사항에서는 모든 버전에서 쿼리 최적화 프로그램의 향상된 기능을 도입하기 때문에 다른 데이터베이스 엔진 버전 간에 쿼리 계획의 차이가 발생할 수 있습니다. 업그레이드 범위에서 쿼리 계획의 차이점은 일반적으로 특정 쿼리 또는 작업에 부정적인 변화가 있을 수 있는 경우 위험으로 변환됩니다. 결과적으로 이러한 위험 때문에 일반적으로 애플리케이션 재인증이 필요하며, 이로 인해 업그레이드가 지연되고 수명 주기 및 지원 문제가 발생할 수 있습니다.

    업그레이드 위험을 완화하기 위해서 쿼리 최적화 프로그램의 향상된 기능이 새 릴리스의 기본 호환성 수준으로 제어되는 것입니다(즉, 새 버전에 대해 가장 높은 호환성 수준 사용 가능). 호환성 인증에는 쿼리 계획 셰이프 보호가 포함되어 있습니다. 이것은 데이터베이스 엔진 업그레이드 직후에 데이터베이스 호환성 수준을 그대로 유지하면 업그레이드 이전처럼 새 버전에서 동일한 쿼리 최적화 모델이 사용되고 쿼리 계획 셰이프가 변경되지 않는다는 개념입니다.

    자세한 내용은 이 문서의 쿼리 계획 셰이프를 사용하는 이유 섹션을 참조하세요.

호환성 수준에 대한 자세한 내용은 이전 버전과의 호환성을 위해 호환성 수준 사용을 참조하세요.

중요

지정된 호환성 수준에 대해 이미 인증된 기존 애플리케이션의 경우 SQL Server 데이터베이스 엔진를 업그레이드하고 이전 데이터베이스 호환성 수준을 유지 관리합니다. 이 시나리오에서는 애플리케이션을 다시 인증할 필요가 없습니다. 자세한 내용은 이 문서의 뒷부분에 나오는 호환성 수준 및 데이터베이스 엔진 업그레이드를 참조하세요.

새로운 개발 작업을 수행하는 경우 또는 기존 애플리케이션에 지능형 쿼리 처리 등의 새로운 기능과 일부 새로운 Transact-SQL을 사용해야 하는 경우 데이터베이스 호환성 수준을 SQL Server에서 사용 가능한 최신 수준으로 업그레이드하고, 애플리케이션이 해당 호환성 수준에서 작동하도록 애플리케이션을 다시 인증합니다. 데이터베이스 호환성 수준을 업그레이드하는 방법에 대한 자세한 내용은 데이터베이스 호환성 수준 업그레이드에 대한 모범 사례를 참조하세요.

쿼리 계획 셰이프를 사용하는 이유

쿼리 계획 셰이프는 쿼리 계획을 구성하는 다양한 연산자의 시각적 표시를 나타냅니다. 여기에는 검색, 검사, 조인, 정렬 등의 연산자와 데이터 흐름을 나타내는 연산자 간 연결, 의도한 결과 세트를 생성하기 위해 실행해야 하는 연산 순서가 포함됩니다. 쿼리 계획 셰이프는 쿼리 최적화 프로그램에서 결정됩니다.

업그레이드하는 동안 쿼리 성능을 예측 가능하게 유지하려면 기본적으로 동일한 쿼리 계획 셰이프를 사용해야 합니다. 이를 위해서는 기본 데이터베이스 엔진의 버전이 다르더라도 업그레이드 직후에 데이터베이스 호환성 수준을 변경하지 않아야 합니다. 사용 가능한 리소스 또는 기본 데이터의 데이터 분산 방식을 획기적으로 변경하는 경우처럼 쿼리 실행 에코시스템을 변경하지 않았다면 쿼리 성능이 변경되지 않은 상태로 유지됩니다.

그러나 쿼리 계획 셰이프를 유지하는 것이 업그레이드 후 성능에 영향을 미치는 유일한 요인은 아닙니다. 데이터베이스를 최신 데이터베이스 엔진로 이동하고 환경적 측면을 변경할 경우 쿼리 계획이 버전 간에 동일한 셰이프를 유지하더라도 쿼리 성능에 즉각적으로 영향을 미칠 수 있습니다. 이러한 환경적 변화에는 어느 정도의 사용 가능한 메모리 및 CPU 리소스를 제공하는 새로운 데이터베이스 엔진, 서버 또는 데이터베이스 구성 옵션의 변경, 쿼리 계획을 만드는 방법에 영향을 주는 데이터 분산 방식의 변경 등이 포함될 수 있습니다. 이때문에 데이터베이스 호환성 수준을 유지할 경우 쿼리 계획 셰이프의 변경을 방지할 수 있지만, 쿼리 성능에 영향을 주는 사용자가 시작한 변경을 비롯한 기타 다른 환경적 측면에서는 보호를 제공할 수 없다는 사실을 이해하는 것이 중요합니다.

자세한 내용은 쿼리 처리 아키텍처 가이드를 참조하세요.

호환성 인증 이점

명명된 버전 접근 방식이 아닌 호환성 기반 방법 방식의 데이터베이스 인증에는 다음과 같은 여러 가지 즉각적인 이점이 있습니다.

  • 애플리케이션 인증을 플랫폼에서 분리합니다. 공유된 데이터베이스 엔진으로 인해 Transact-SQL 쿼리를 실행해야 하는 애플리케이션의 경우 Azure 및 온-프레미스에 대한 별도의 인증 프로세스를 유지 관리할 필요가 없습니다.
  • 데이터베이스 플랫폼 현대화를 수행하는 동안 애플리케이션 및 데이터베이스 플랫폼 계층 업그레이드 주기를 분리하여 중단을 줄이고 변경 관리를 향상할 수 있기 때문에 업그레이드 위험이 감소합니다.
  • 코드 변경 없이 업그레이드합니다. 새 버전의 SQL Server 또는 Azure SQL Database로의 업그레이드를 코드 변경 없이 원본 시스템과 동일한 호환성 수준을 유지하며 수행할 수 있고, 애플리케이션에서 더 높은 데이터베이스 호환성 수준에서만 사용할 수 있는 향상된 기능을 사용해야 할 때까지는 즉시 다시 인증할 필요가 없습니다.
  • 애플리케이션의 변경이 필요 없고 데이터베이스 호환성 수준으로 제어되지 않는 향상된 기능을 사용하여 관리 효율성 및 확장성을 향상시킵니다. SQL Server에서 예를 들면 다음과 같습니다.

새 데이터베이스는 여전히 데이터베이스 엔진 버전의 기본 호환성 수준으로 설정됩니다. 하지만 데이터베이스가 이전 SQL Server 버전에서 새로운 SQL Server 또는 Azure SQL Database 버전으로 복원되거나 연결되는 경우 해당 데이터베이스는 기존 호환성 수준을 유지합니다.

중요

데이터베이스를 새로운 SQL Server 또는 Azure SQL Database 버전으로 이동하기 전에 데이터베이스 호환성 수준이 여전히 지원되는지 확인합니다. 데이터베이스 호환성 수준 지원 매트릭스는 여기에서 볼 수 있습니다.

허용된 수준보다 낮은 호환성 수준으로 데이터베이스를 업그레이드하면(예: SQL Server 2005(9.x)에서 기본값인 90) 데이터베이스를 허용된 가장 낮은 호환성 수준(100)으로 설정합니다.

현재 호환성 수준을 확인하려면 sys.databasescompatibility_level 열을 쿼리합니다.

호환성 수준 및 데이터베이스 엔진 업그레이드

업그레이드 이전의 데이터베이스 호환성 수준과 지원 가능성 상태를 유지하면서 데이터베이스 엔진를 최신 버전으로 업그레이드하려면 데이터베이스(저장 프로시저, 함수, 트리거 등의 프로그래밍 기능 개체) 및 애플리케이션(애플리케이션에서 전송된 동적 코드를 캡처하는 워크로드 추적 사용)의 애플리케이션 코드에 대한 정적 기능 노출 영역 유효성 검사를 수행하는 것이 좋습니다.

이 작업은 Microsoft Data Migration Assistant 도구(DMA)를 사용하여 쉽게 수행할 수 있습니다. DMA 도구 출력에 누락되거나 호환되지 않는 기능에 대한 오류가 없는 경우 애플리케이션이 새로운 대상 버전의 기능 회귀로부터 보호됩니다. 데이터베이스가 새 버전에서 작동하도록 변경해야 하는 경우 DMA를 통해 변경이 필요한 위치와 사용 가능한 해결 방법을 정확하게 파악할 수 있습니다. 자세한 내용은 Data Migration Assistant 개요를 참조하세요.

이 기능 유효성 검사는 데이터베이스 호환성 수준으로 보호되지 않는 중단된 Transact-SQL를 애플리케이션 코드에서 사용할 수 있기 때문에 레거시 버전(예: SQL Server 2008 R2(10.50.x) 또는 SQL Server 2012(11.x))에서 새 버전의 SQL Server 또는 Azure SQL Database로 데이터베이스를 이동할 때 특히 중요합니다. 그러나 최신 버전(예: SQL Server 2016(13.x))에서 SQL Server 2019(15.x) 또는 Azure SQL Database로 이동하는 경우에는 지원되지 않는 Transact-SQL을 걱정할 필요가 없습니다. 지원되지 않는 Transact-SQL에 대한 자세한 내용은 이전 버전과의 호환성을 위해 호환성 수준 사용을 참조하세요.

참고

DMA는 데이터베이스 호환성 수준 100 이상을 지원합니다. 원본 버전 SQL Server 2005(9.x)는 제외됩니다.

중요

Microsoft에서는 업그레이드의 성공 여부를 확인하기 위해 최소한의 테스트를 수행하고, 이전의 데이터베이스 호환성 수준을 유지할 것을 권장합니다. 자신의 애플리케이션 및 시나리오에 의미 있는 최소한의 테스트를 결정해야 합니다.

중요

Microsoft에서는 다음과 같은 경우 쿼리 계획 셰이프 보호를 제공합니다.

  • 새 SQL Server 버전(대상)은 이전 SQL Server 버전(원본)이 실행 중인 하드웨어와 유사한 하드웨어에서 실행됩니다.
  • 대상 SQL Server 및 원본 SQL Server 모두에서 동일한 지원 데이터베이스 호환성 수준이 사용됩니다.
  • 동일한 데이터베이스와 워크로드가 대상 SQL Server 및 원본 SQL Server 모두에 사용됩니다.

위의 조건에서 발생하는 모든 쿼리 계획 셰이프 회귀(원본 SQL Server 기준)는 해결될 예정입니다. 이 경우 Microsoft 고객 지원팀에 문의하세요.

참고 항목