다음을 통해 공유


호환성 인증

적용 대상: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 동작 및 호환성 수준에 대한 자세한 내용은 이전 버전과의 호환성을 위해 호환성 수준 사용을 참조하세요.

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

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

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

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

지정된 호환성 수준에 대해 이미 인증된 기존 애플리케이션의 경우 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 버전으로 이동하기 전에 데이터베이스 호환성 수준이 여전히 지원되는지 확인합니다. 데이터베이스 호환성 수준 지원 매트릭스는 ALTER DATABASE 호환성 수준 인수에서 확인할 수 있습니다.

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

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

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

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

이 작업은 SQL Server Management Studio에서 SQL Server 마이그레이션 구성 요소를 사용하여 쉽게 수행할 수 있습니다. 누락되거나 호환되지 않는 기능에 대한 보고서 출력에 오류가 없으면 새 대상 버전의 기능 회귀로부터 애플리케이션을 보호합니다. 데이터베이스가 새 버전에서 작동하도록 변경해야 하는 경우 이 도구를 사용하여 변경이 필요한 위치와 사용 가능한 해결 방법을 파악할 수 있습니다.

이 기능 유효성 검사는 애플리케이션 코드가 데이터베이스 호환성 수준으로 보호되지 않는 중단된 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 2022(16.x) 또는 Azure SQL Database로 이동하는 경우 걱정할 Transact-SQL 중단되지 않습니다. 지원되지 않는 Transact-SQL에 대한 자세한 내용은 이전 버전과의 호환성을 위해 호환성 수준 사용을 참조하세요.

참고

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

이전 데이터베이스 호환성 수준을 유지하면서 업그레이드 성공의 유효성을 검사하기 위해 최소한의 테스트를 수행하는 것이 좋습니다. 자신의 애플리케이션 및 시나리오에 의미 있는 최소한의 테스트를 결정해야 합니다.

쿼리 계획 보호

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

  • 새 SQL Server 버전(대상)은 이전 SQL Server 버전(원본)이 실행 중인 하드웨어와 유사한 하드웨어에서 실행됩니다.

  • 동일한 지원되는 데이터베이스 호환성 수준은 대상 SQL Server와 원본 SQL Server 모두에서 사용됩니다.

  • 대상 SQL Server와 원본 SQL Server 모두에서 동일한 데이터베이스와 워크로드가 사용됩니다.

이러한 조건에서 발생하는 모든 쿼리 계획 셰이프 회귀(원본 SQL Server에 비해)가 해결됩니다. 이 경우 Microsoft 고객 지원에 문의하세요.