CLR 사용자 정의 형식CLR User-Defined Types

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions)

SQL ServerSQL Server는 .NET Framework CLR (공용 언어 런타임)에서 생성 된 어셈블리에 대해 프로그래밍 된 데이터베이스 개체를 만들 수 있는 기능을 제공 합니다.gives you the ability to create database objects that are programmed against an assembly created in the .NET Framework common language runtime (CLR). CLR에서 제공하는 풍부한 프로그래밍 모델을 활용할 수 있는 데이터베이스 개체에는 트리거, 저장 프로시저, 함수, 집계 함수 및 형식이 있습니다.Database objects that can take advantage of the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

참고

SQL ServerSQL Server에서 CLR 코드 실행 기능은 기본적으로 OFF로 설정되어 있습니다.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. Sp_configure 시스템 저장 프로시저를 사용 하 여 CLR을 사용 하도록 설정할 수 있습니다.The CLR can be enabled by using the sp_configure system stored procedure.

부터는 SQL Server 2005(9.x)SQL Server 2005 (9.x) udt (사용자 정의 형식)를 사용 하 여 서버의 스칼라 형식 시스템을 확장 함으로써 데이터베이스에 CLR 개체를 저장할 수 있습니다 SQL ServerSQL Server .Beginning with SQL Server 2005(9.x)SQL Server 2005 (9.x), you can use user-defined types (UDTs) to extend the scalar type system of the server, enabling storage of CLR objects in a SQL ServerSQL Server database. UDT에는 여러 요소와 동작이 포함될 수 있어, 단일 SQL ServerSQL Server 시스템 데이터 형식으로 구성된 일반적인 별칭 데이터 형식과 차별화됩니다.UDTs can contain multiple elements and can have behaviors, differentiating them from the traditional alias data types which consist of a single SQL ServerSQL Server system data type.

UDT는 시스템 전체에서 액세스하므로 복잡한 데이터 형식을 사용하면 성능이 저하될 수 있습니다.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. 복잡한 데이터는 일반적인 행과 테이블을 사용하여 모델링하는 것이 효율적입니다.Complex data is generally best modeled using traditional rows and tables. SQL ServerSQL Server의 UDT는 다음에 적합합니다.UDTs in SQL ServerSQL Server are well suited to the following:

  • 날짜, 시간, 통화 및 확장된 숫자 형식Date, time, currency, and extended numeric types

  • 지형 공간 애플리케이션Geospatial applications

  • 인코딩 또는 암호화된 데이터Encoded or encrypted data

SQL ServerSQL Server에서 UDT를 개발하는 프로세스는 다음 단계로 구성됩니다.The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. UDT를 정의하는 어셈블리를 코딩 및 작성합니다.Code and build the assembly that defines the UDT. UDT는 검증할 수 있는 코드를 생성하는 .NET Framework CLR(공용 언어 런타임)에서 지원하는 모든 언어를 사용하여 정의합니다.UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. 이러한 언어에는 Visual C# 및 Visual Basic .NET 등이 있습니다.This includes Visual C# and Visual Basic .NET. 데이터는 .NET Framework 클래스 또는 구조의 필드와 속성으로 노출되며 동작은 클래스 또는 구조의 메서드로 정의됩니다.The data is exposed as fields and properties of a .NET Framework class or structure, and behaviors are defined by methods of the class or structure.

  2. 어셈블리를 등록합니다.Register the assembly. 데이터베이스 프로젝트에서 Visual Studio 사용자 인터페이스를 통해 UDT를 배포하거나, 클래스 또는 구조가 포함된 어셈블리를 데이터베이스에 복사하는 Transact-SQLTransact-SQL CREATE ASSEMBLY 문을 사용하여 UDT를 배포할 수 있습니다.UDTs can be deployed through the Visual Studio user interface in a database project, or by using the Transact-SQLTransact-SQL CREATE ASSEMBLY statement, which copies the assembly containing the class or structure into a database.

  3. SQL Server에서 UDT를 만듭니다.Create the UDT in SQL Server. 어셈블리가 호스트 데이터베이스에 로드되고 나면 Transact-SQLTransact-SQL CREATE TYPE 문을 사용하여 UDT를 만들고, 클래스 또는 구조의 멤버를 UDT의 멤버로 표시합니다.Once an assembly is loaded into a host database, you use the Transact-SQLTransact-SQL CREATE TYPE statement to create a UDT and expose the members of the class or structure as members of the UDT. UDT는 단일 데이터베이스의 컨텍스트에만 있으며, 등록된 후에는 UDT를 만들 때 사용된 외부 파일에 대한 종속 관계가 없습니다.UDTs exist only in the context of a single database, and, once registered, have no dependencies on the external files from which they were created.

    참고

    SQL Server 2005(9.x)SQL Server 2005 (9.x) 이전에는 .NET Framework 어셈블리에서 만든 UDT가 지원되지 않았습니다.Before SQL Server 2005(9.x)SQL Server 2005 (9.x), UDTs created from .NET Framework assemblies were not supported. 그러나 SQL ServerSQL Server sp_addtype를 사용 하 여 별칭 데이터 형식을 계속 사용할 수 있습니다.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. CREATE TYPE 구문은 네이티브 SQL ServerSQL Server 사용자 정의 데이터 형식과 UDT를 만드는 데 모두 사용할 수 있습니다.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. UDT를 사용 하 여 테이블, 변수 또는 매개 변수 만들기 부터 SQL Server 2005(9.x)SQL Server 2005 (9.x) 사용자 정의 형식은 테이블의 열 정의, Transact-SQLTransact-SQL 일괄 처리의 변수 또는 함수나 저장 프로시저의 인수로 사용 될 수 있습니다 Transact-SQLTransact-SQL .Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005(9.x)SQL Server 2005 (9.x), a user-defined type can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

섹션 내용In This Section

사용자 정의 형식 만들기Creating a User-Defined Type
UDT를 만드는 방법에 대해 설명합니다.Describes how to create UDTs.

SQL Server의 사용자 정의 형식 등록Registering User-Defined Types in SQL Server
SQL ServerSQL Server에서 UDT를 등록하고 관리하는 방법에 대해 설명합니다.Describes how to register and manage UDTs in SQL ServerSQL Server.

SQL 서버의 사용자 정의 형식 작업Working with User-Defined Types in SQL Server
UDT를 사용하여 쿼리를 만드는 방법에 대해 설명합니다.Describes how to create queries using UDTs.

ADO.NET의 사용자 정의 형식 액세스Accessing User-Defined Types in ADO.NET
ADO.NET의 .NET Framework Data Provider for SQL ServerSQL Server를 사용하여 UDT 작업을 수행하는 방법에 대해 설명합니다.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.