다음을 통해 공유


CLR(공용 언어 런타임) 통합

적용 대상: SQL Server Azure SQL Managed Instance

SQL Server 및 Azure SQL Managed Instance 를 사용하면 CLR(네이티브 공용 언어 런타임) 통합을 SQL Server 서버 쪽 모듈(프로시저, 함수 및 트리거)으로 사용하여 .NET 언어로 일부 기능을 구현할 수 있습니다. CLR은 관리 코드에 언어 간 통합, 코드 액세스 보안, 개체 수명 관리 및 디버깅과 프로파일링 지원 등의 서비스를 제공합니다.

SQL Server 사용자 및 애플리케이션 개발자의 경우 CLR 통합은 Visual Basic .NET 및 Visual C#을 비롯한 모든 .NET Framework 언어를 사용하여 저장 프로시저, 트리거, 사용자 정의 형식, 사용자 정의 함수(스칼라 및 테이블 반환) 및 사용자 정의 집계 함수를 작성할 수 있음을 의미합니다. SQL Server에는 미리 설치된 .NET Framework 버전 4가 포함되어 있습니다.

이 6분 분량의 비디오에서는 Azure SQL Managed Instance에서 CLR을 사용하는 방법을 보여 줍니다.

코드 액세스 보안이 더 이상 지원되지 않음

CLR은 더 이상 보안 경계로 지원되지 않는 .NET Framework의 CAS(코드 액세스 보안)를 사용합니다. 생성된 PERMISSION_SET = SAFE CLR 어셈블리는 외부 시스템 리소스에 액세스하고, 관리되지 않는 코드를 호출하고, sysadmin 권한을 획득할 수 있습니다. SQL Server 2017(14.x) 이상 버전 sp_configure 에서 clr strict 보안 옵션은 CLR 어셈블리의 보안을 향상시킵니다. clr strict security는 기본적으로 사용되며 SAFEEXTERNAL_ACCESS 어셈블리가 UNSAFE로 표시된 것처럼 처리됩니다. 이전 버전과의 호환성을 위해 이 clr strict security 옵션을 사용하지 않도록 설정할 수 있지만 권장되지는 않습니다.

데이터베이스에 권한이 부여된 UNSAFE ASSEMBLY 해당 로그인을 사용하여 인증서 또는 비대칭 키로 모든 어셈블리에 master 서명하는 것이 좋습니다. 또한 SQL Server 관리자는 데이터베이스 엔진에서 신뢰해야 하는 어셈블리 목록에 어셈블리를 추가할 수도 있습니다. 자세한 내용은 sys.sp_add_trusted_assembly를 참조하세요.

CLR 모듈을 사용하는 경우

CLR 통합을 사용하면 정규식, 외부 리소스에 액세스하기 위한 코드(서버, 웹 서비스, 데이터베이스), 사용자 지정 암호화 등 .NET Framework에서 사용할 수 있는 복잡한 기능을 구현할 수 있습니다. 서버 쪽 CLR 통합의 이점은 다음과 같습니다.

  • 더 나은 프로그래밍 모델. .NET Framework 언어는 Transact-SQL보다 다양한 면에서 다양하며, 이전에 SQL Server 개발자가 사용할 수 없었던 구문과 기능을 제공합니다. 개발자는 프로그래밍 문제를 빠르고 효율적으로 해결하는 데 사용할 수 있는 광범위한 클래스 집합을 제공하는 .NET Framework 라이브러리의 기능을 사용할 수도 있습니다.

  • 향상된 안전 및 보안. 관리 코드는 데이터베이스 엔진 호스팅되는 공용 언어 런타임 환경에서 실행됩니다. SQL Server는 이를 사용하여 이전 버전의 SQL Server에서 사용할 수 있는 확장 저장 프로시저를 보다 안전하고 안전하게 대체할 수 있습니다.

  • 데이터 형식 및 집계 함수를 정의하는 기능입니다. 사용자 정의 형식 및 사용자 정의 집계는 SQL Server의 스토리지 및 쿼리 기능을 확장하는 두 개의 새로운 관리형 데이터베이스 개체입니다.

  • 표준화된 환경을 통한 간소화된 개발. 데이터베이스 개발은 Microsoft Visual Studio .NET 개발 환경의 향후 릴리스에 통합됩니다. 개발자는 중간 계층 또는 클라이언트 계층 .NET Framework 구성 요소 및 서비스를 작성하는 데 사용할 때 데이터베이스 개체 및 스크립트를 개발하고 디버깅하는 데 동일한 도구를 사용합니다.

  • 성능 및 확장성이 향상될 가능성이 있습니다. .NET Framework 언어 컴파일 및 실행 모델은 일반적으로 Transact-SQL보다 개선된 성능을 제공합니다.

SQL Server 언어 확장은 데이터베이스 엔진에 가까운 런타임에 대한 대체 실행 환경을 제공합니다. SQL CLR과 SQL 언어 확장 간의 차이점에 대한 자세한 내용은 SQL Server 언어 확장과 SQL CLR 비교를 참조하세요.

다음 표에서는 이 섹션의 문서를 나열합니다.

아티클 설명
CLR 통합 개요 CLR 통합을 사용하여 빌드할 수 있는 개체의 종류를 설명합니다. 또한 CLR 통합을 사용하여 데이터베이스 개체를 빌드하기 위한 요구 사항을 검토합니다.
CLR 통합 - 새로운 기능 이 릴리스의 새로운 기능에 대해 설명합니다.
CLR 통합 아키텍처 - CLR 호스팅 환경 CLR 통합의 디자인 목표를 설명합니다.
CLR 통합 사용 CLR 통합을 사용하도록 설정하는 방법을 설명합니다.