공용 언어 런타임 통합

적용 대상: SQL Server Azure SQL Managed Instance

Microsoft SQL Server 및 Azure SQL Managed Instance 사용하여 서버 쪽 모듈(프로시저, 함수 및 트리거)을 SQL Server CLR(네이티브 공용 언어 런타임) 통합을 사용하여 .NET 언어로 일부 기능을 구현할 수 있습니다. CLR은 관리 코드에 언어 간 통합, 코드 액세스 보안, 개체 수명 관리 및 디버깅과 프로파일링 지원 등의 서비스를 제공합니다. SQL Server 사용자 및 애플리케이션 개발자의 경우 CLR 통합은 이제 Microsoft Visual Basic .NET 및 Microsoft Visual C#을 비롯한 모든 .NET Framework 언어를 사용하여 저장 프로시저, 트리거, 사용자 정의 형식, 사용자 정의 함수(스칼라 및 테이블 반환) 및 사용자 정의 집계 함수를 작성할 수 있음을 의미합니다. SQL Server 미리 설치된 .NET Framework 버전 4를 포함합니다.

경고

CLR은 더 이상 보안 경계로 지원되지 않는 .NET Framework의 CAS(코드 액세스 보안)를 사용합니다. PERMISSION_SET = SAFE로 만든 CLR 어셈블리에서 외부 시스템 리소스에 액세스하고, 비관리 코드를 호출하고, sysadmin 권한을 얻을 수 있습니다. SQL Server 2017(14.x)부터 CLR 어셈블리의 보안을 강화하기 위해 clr strict security라는 sp_configure 옵션이 도입되었습니다. clr strict security는 기본적으로 사용되며 SAFEEXTERNAL_ACCESS 어셈블리가 UNSAFE로 표시된 것처럼 처리됩니다. clr strict security 옵션은 이전 버전과의 호환성을 위해 사용하지 않도록 설정할 수 있지만 권장하지는 않습니다. 모든 어셈블리는 master 데이터베이스에서 UNSAFE ASSEMBLY 권한이 부여된 해당 로그인이 포함된 인증서 또는 비대칭 키로 서명하는 것이 좋습니다. 자세한 내용은 CLR strict security를 참조하세요. 또한 SQL Server 관리자는 데이터베이스 엔진에서 신뢰해야 하는 어셈블리 목록에 어셈블리를 추가할 수도 있습니다. 자세한 내용은 sys.sp_add_trusted_assembly를 참조하세요.

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

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을 사용하는 방법을 설명합니다.

참고 항목

.NET Framework 설치(SQL Server만 해당)
통합된 CLR의 성능