CLR 사용자 정의 형식

SQL Server를 사용하면 .NET Framework CLR(공용 언어 런타임)에서 만든 어셈블리에 대해 프로그래밍되는 데이터베이스 개체를 만들 수 있습니다. CLR에서 제공하는 풍부한 프로그래밍 모델을 활용할 수 있는 데이터베이스 개체에는 트리거, 저장 프로시저, 함수, 집계 함수 및 형식이 있습니다.

[!참고]

SQL Server에서 CLR 코드 실행 기능은 기본적으로 OFF로 설정되어 있습니다. sp_configure 시스템 저장 프로시저를 사용하여 CLR이 실행되도록 설정할 수 있습니다.

SQL Server 2005부터 UDT(사용자 정의 형식)를 사용하여 서버의 스칼라 유형 시스템을 확장함으로써 SQL Server 데이터베이스에 CLR 개체가 저장되도록 설정할 수 있습니다. UDT에는 여러 요소와 동작이 포함될 수 있어, 단일 SQL Server 시스템 데이터 형식으로 구성된 일반적인 별칭 데이터 형식과 차별화됩니다.

UDT는 시스템 전체에서 액세스하므로 복잡한 데이터 형식을 사용하면 성능이 저하될 수 있습니다. 복잡한 데이터는 일반적인 행과 테이블을 사용하여 모델링하는 것이 효율적입니다. SQL Server의 UDT는 다음에 적합합니다.

  • 날짜, 시간, 통화 및 확장된 숫자 형식

  • 지형 공간 응용 프로그램

  • 인코딩 또는 암호화된 데이터

SQL Server에서 UDT를 개발하는 프로세스는 다음 단계로 구성됩니다.

  1. UDT를 정의하는 어셈블리를 코딩 및 작성합니다.   UDT는 검증할 수 있는 코드를 생성하는 .NET Framework CLR(공용 언어 런타임)에서 지원하는 언어를 사용하여 정의됩니다. 이러한 언어에는 Visual C# 및 Visual Basic .NET 등이 있습니다. 데이터는 .NET Framework 클래스 또는 구조의 필드와 속성으로 노출되며 동작은 클래스 또는 구조의 메서드로 정의됩니다.

  2. 어셈블리를 등록합니다.   데이터베이스 프로젝트에서 Visual Studio 사용자 인터페이스를 통해 UDT를 배포하거나, 클래스 또는 구조가 포함된 어셈블리를 데이터베이스에 복사하는 Transact-SQL CREATE ASSEMBLY 문을 사용하여 UDT를 배포할 수 있습니다.

  3. SQL Server에서 UDT를 만듭니다.   어셈블리가 호스트 데이터베이스에 로드되고 나면 Transact-SQL CREATE TYPE 문을 사용하여 UDT를 만들고, 클래스 또는 구조의 멤버를 UDT의 멤버로 표시합니다. UDT는 단일 데이터베이스의 컨텍스트에만 있으며, 등록된 후에는 UDT를 만들 때 사용된 외부 파일에 대한 종속 관계가 없습니다.

    [!참고]

    SQL Server 2005 이전에는 .NET Framework 어셈블리에서 만든 UDT가 지원되지 않았습니다. 하지만 sp_addtype을 사용하여 SQL Server 2005 및 SQL Server 2008에서 SQL Server 별칭 데이터 형식을 사용할 수 있습니다. CREATE TYPE 구문은 네이티브 SQL Server 사용자 정의 데이터 형식과 UDT를 만드는 데 모두 사용할 수 있습니다.

  4. UDT를 사용하여 테이블, 변수 또는 매개 변수를 만듭니다.   SQL Server 2005부터 사용자 정의 형식을 테이블의 열 정의, Transact-SQL 일괄 처리의 변수 또는 Transact-SQL 함수나 저장 프로시저의 인수로 사용할 수 있습니다. 자세한 내용은 CLR 사용자 정의 형식 작업을 참조하십시오.

섹션 내용