Share via


데이터베이스에서 사용자 정의 유형 사용

사용자 정의 유형을 만들면 이 유형은 한 데이터베이스에 고유합니다. 따라서 한 데이터베이스에 정의된 사용자 정의 유형을 다른 데이터베이스의 열 정의에 사용할 수 없습니다. 그러나 같은 사용자 정의 유형이 등록되어 있고 두 데이터베이스에서 이 사용자 정의 유형에 액세스할 수 있으면 한 데이터베이스의 사용자 정의 유형 값을 다른 데이터베이스에서 사용할 수 있도록 변환할 수 있습니다. 이 기능은 다음과 같은 작업을 수행하려고 할 때 유용합니다.

  • 다른 데이터베이스에 정의된 저장 프로시저 호출
  • 다른 두 데이터베이스에 정의된 테이블 쿼리
  • 한 데이터베이스의 데이터를 선택하여 다른 데이터베이스에 삽입

예를 들어 데이터베이스 db1과 데이터베이스 db2 모두에서 사용자 정의 유형 u1을 만든다고 가정합니다. 데이터베이스 db2에만 저장 프로시저 p2를 만들고 저장 프로시저 p2는 유형 u1 매개 변수를 사용합니다. 이 경우 데이터베이스 db1의 유형 u1 인스턴스로 저장 프로시저 p2를 호출할 수 있습니다.

USE db1
DECLARE @u u1
EXEC db2.dbo.p2 @u
GO

다른 예에는 쿼리 결과로 tempdb의 임시 테이블을 채우는 작업이 있습니다. 이 작업이 성공하려면 tempdb에 사용자 정의 유형을 등록해야 합니다.

INSERT INTO #t SELECT * FROM T 

테이블 변수에 사용자 정의 유형을 사용하거나 커서가 작업 테이블에 사용자 정의 유형을 사용하는 경우에는 tempdb에 사용자 정의 유형을 등록하지 않아도 됩니다.

여러 데이터베이스에서 사용자 정의 유형을 사용하는 경우 다음 사항을 기억해야 합니다.

  • CLR 이름을 비롯하여 유형 이름이 같아야 합니다. 또한 같은 어셈블리를 통해 두 데이터베이스에서 모두 이 유형을 구현해야 합니다. 이름, 강력한 이름, culture, 버전, 코드 액세스 권한 집합 및 이진 내용이 같으면 두 데이터베이스의 어셈블리는 동일합니다.
  • 쿼리에서 참조하는 각 사용자 정의 유형 열에 대해 SELECT 및 EXECUTE 권한이 있어야 합니다. 각 열이 정의된 데이터베이스에 대해 이러한 권한이 확인됩니다.
  • 한 어셈블리에 정의된 유형이 다른 어셈블리의 메서드를 호출할 경우 데이터베이스 경계를 넘지 않고 사용자 정의 유형 쿼리가 실행되는 것과 같은 방법으로 어셈블리 간 호출이 확인됩니다.

참고 항목

개념

CLR 사용자 정의 유형 작업

관련 자료

CLR User-Defined Types

도움말 및 정보

SQL Server 2005 지원 받기