SQL Server CLR 통합 소개

CLR(공용 언어 런타임)은 .NET Framework의 핵심으로, 모든 .NET Framework 코드에 실행 환경을 제공합니다. CLR 내에서 실행되는 코드를 관리 코드라고 합니다. CLR에서는 JIT(Just-In-Time) 컴파일, 메모리 할당 및 관리, 형식 안전성 적용, 예외 처리, 스레드 관리 및 보안 같은 프로그램 실행을 위한 다양한 기능과 서비스를 제공합니다.

CLR이 Microsoft SQL Server에서 호스트되는 경우(CLR 통합이라고 함) 관리 코드에 저장 프로시저, 트리거, 사용자 정의 함수, 사용자 정의 형식 및 사용자 정의 집계를 작성할 수 있습니다. 관리 코드는 실행되기 전에 네이티브 코드로 컴파일되기 때문에 일부 시나리오에서는 성능이 크게 향상될 수 있습니다.

.NET Framework에서 실행되는 관리 코드는 CAS(코드 액세스 보안), 코드 링크 및 애플리케이션 도메인을 사용하여 어셈블리가 특정 작업을 수행하지 못하도록 합니다. SQL Server에서는 CAS를 사용하여 관리 코드의 보안을 손쉽게 유지하고 운영 체제나 데이터베이스 서버의 성능이 떨어지지 않도록 합니다.

참고 항목

CAS(코드 액세스 보안)는 .NET Framework 및 .NET의 모든 버전에서 더 이상 사용되지 않습니다. 최신 버전의 .NET은 CAS 주석을 준수하지 않으며 CAS 관련 API를 사용하는 경우 오류가 발생합니다. 개발자는 보안 작업을 수행하는 대체 수단을 찾아야 합니다.

이 단원은 SQL Server CLR 통합으로 프로그래밍을 시작하는 데 필요한 정보만 제공하며 모든 정보를 포괄적으로 다루지는 않습니다. 자세한 내용은 CLR(공용 언어 런타임) 통합 개요를 참조하세요.

CLR 통합 활성화

Microsoft SQL Server에서 CLR(공용 언어 런타임) 통합 기능은 기본적으로 사용하지 않도록 설정되어 있으며 CLR 통합을 사용하여 구현되는 개체를 사용하려면 이를 활성화해야 합니다. Transact-SQL을 사용하여 CLR 통합을 활성화하려면 다음과 같이 clr enabled 저장 프로시저의 sp_configure 옵션을 사용합니다.

sp_configure 'clr enabled', 1  
GO  
RECONFIGURE  
GO  

clr enabled 옵션을 0으로 설정하면 CLR 통합이 비활성화됩니다. CLR 통합을 비활성화하면 SQL Server에서는 모든 CLR 루틴의 실행을 중지하고 모든 애플리케이션 도메인을 언로드합니다.

자세한 내용은 CLR 통합 사용을 참조하세요.

CLR 어셈블리 배포

테스트 서버에서 CLR 메서드를 테스트하고 확인하고 나면 개발 스크립트를 사용하여 프로덕션 서버에 배포할 수 있습니다. 배포 스크립트는 수동으로 생성하거나 SQL Server Management Studio를 사용하여 생성할 수 있습니다. 자세한 내용은 사용 중인 SQL Server 버전에 대한 SQL Server 설명서 버전을 참조하세요.

SQL Server 설명서

  1. CLR 데이터베이스 개체 배포

CLR 통합 보안

Microsoft .NET Framework CLR(공용 언어 런타임)과 통합된 Microsoft SQL Server 보안 모델은 SQL Server 내에서 실행되는 다양한 유형의 CLR 및 비 CLR 개체 간에 액세스를 관리 및 보호합니다. 이러한 개체는 서버에서 실행되는 Transact-SQL 문이나 다른 CLR 개체에서 호출할 수 있습니다.

자세한 내용은 CLR 통합 보안을 참조하세요.

CLR 어셈블리 디버깅

Microsoft SQL Server는 데이터베이스에서의 Transact-SQL 및 CLR(공용 언어 런타임) 개체 디버깅을 지원합니다. 디버깅은 여러 언어에서 수행되므로 사용자는 Transact-SQL에서 CLR 개체로 또는 CLR 개체에서 Transact-SQL로 매끄럽게 단계를 수행할 수 있습니다.

자세한 내용은 CLR 데이터베이스 개체 디버깅을 참조하세요.

참고 항목