다음을 통해 공유


어셈블리 - 구현

적용 대상: SQL Server

이 항목에서는 데이터베이스에서 어셈블리를 구현하고 작업하는 데 도움이 되는 다음 영역에 대한 정보를 제공합니다.

  • 어셈블리 만들기

  • 어셈블리 수정

  • 어셈블리 삭제, 사용 안 함 및 사용

  • 어셈블리 버전 관리

어셈블리 만들기

어셈블리는 Transact-SQL CREATE ASSEMBLY 문을 사용하거나 어셈블리 지원 편집기를 사용하여 SQL Server Management Studio에서 만들어집니다. 또한 Microsoft Visual Studio에서 SQL Server 프로젝트를 배포하면 프로젝트에 지정된 데이터베이스에 어셈블리가 등록됩니다. 자세한 내용은 CLR 데이터베이스 개체 배포를 참조 하세요.

Transact-SQL을 사용하여 어셈블리를 만들려면

SQL Server Management Studio를 사용하여 어셈블리를 만들려면

어셈블리 수정

어셈블리는 Transact-SQL ALTER ASSEMBLY 문을 사용하거나 어셈블리 지원 편집기를 사용하여 SQL Server Management Studio에서 수정됩니다. 다음을 수행하려는 경우 어셈블리를 수정할 수 있습니다.

  • 어셈블리의 최신 버전 이진 파일을 업로드하여 어셈블리의 구현을 변경합니다. 자세한 내용은 이 항목의 뒷부분에 있는 어셈블리 버전 관리를 참조하세요.

  • 어셈블리의 권한 집합을 변경합니다. 자세한 내용은 Designing Assemblies을 참조하세요.

  • 어셈블리의 표시 유형을 변경합니다. 표시되는 어셈블리는 SQL Server에서 참조할 수 있습니다. 데이터베이스에 업로드된 경우에도 보이지 않는 어셈블리를 사용할 수 없습니다. 기본적으로 SQL Server 인스턴스에 업로드된 어셈블리가 표시됩니다.

  • 해당 어셈블리와 관련된 디버그 또는 원본 파일을 추가하거나 삭제합니다.

Transact-SQL을 사용하여 어셈블리를 수정하려면

SQL Server Management Studio를 사용하여 어셈블리를 수정하려면

어셈블리 삭제, 사용 안 함 및 사용

Transact-SQL DROP ASSEMBLY 문 또는 SQL Server Management Studio를 사용하여 어셈블리를 삭제합니다.

Transact-SQL을 사용하여 어셈블리를 삭제하려면

SQL Server Management Studio를 사용하여 어셈블리를 삭제하려면

기본적으로 SQL Server에서 만든 모든 어셈블리는 실행되지 않도록 설정됩니다. sp_configure 시스템 저장 프로시저의 clr 사용 옵션을 사용하여 SQL Server에 업로드된 모든 어셈블리의 실행을 사용하지 않도록 설정하거나 사용하도록 설정할 수 있습니다. 어셈블리 실행을 해제하면 CLR(공용 언어 런타임) 함수, 저장 프로시저, 트리거, 집계 및 사용자 정의 유형이 실행되지 않고 현재 실행 중인 경우 중지됩니다. 어셈블리 실행을 사용하지 않도록 설정해도 어셈블리를 만들거나 변경하거나 삭제하는 기능이 비활성화되지는 않습니다. 자세한 내용은 clr 사용 서버 구성 옵션을 참조 하세요.

어셈블리 실행을 사용하지 않도록 설정하고 사용하도록 설정하려면

어셈블리 버전 관리

어셈블리가 인스턴스 SQL Server에 업로드되면 어셈블리가 데이터베이스 시스템 카탈로그 내에 저장되고 관리됩니다. Microsoft .NET Framework의 어셈블리 정의에 대한 변경 내용은 데이터베이스 카탈로그에 저장된 어셈블리로 전파되어야 합니다.

어셈블리를 수정해야 하는 경우 ALTER ASSEMBLY 문을 실행하여 데이터베이스의 어셈블리를 업데이트해야 합니다. 그러면 어셈블리가 구현을 보유하는 .NET Framework 모듈의 최신 복사본으로 업데이트됩니다.

ALTER ASSEMBLY 문의 WITH UNCHECKED DATA 절은 데이터베이스의 지속형 데이터가 종속된 어셈블리도 새로 고치도록 SQL Server에 지시합니다. 특히 다음 중 어느 것이 있는 경우 WITH UNCHECKED DATA를 지정해야 합니다.

  • Transact-SQL 함수 또는 메서드를 통해 직접 또는 간접적으로 어셈블리의 메서드를 참조하는 지속형 계산 열입니다.

  • 어셈블리에 종속된 CLR 사용자 정의 유형의 열 - 이 유형은 UserDefined(비네이티브) 직렬화 형식을 구현합니다.

주의

WITH UNCHECKED DATA를 지정하지 않으면 새 어셈블리 버전이 테이블, 인덱스 또는 다른 영구 사이트의 기존 데이터에 영향을 주는 경우 에서 ALTER ASSEMBLY를 실행하지 못하도록 합니다. 그러나 SQL Server는 CLR 어셈블리가 업데이트될 때 계산 열, 인덱스, 인덱싱된 뷰 또는 식이 기본 루틴 및 형식과 일치하도록 보장하지 않습니다. ALTER ASSEMBLY를 실행할 때 식 결과와 어셈블리에 저장된 해당 식을 기반으로 하는 값이 일치하지 않도록 주의해야 합니다.

DB_OWNER 및 db_ddlowner 고정 데이터베이스 역할의 멤버만 WITH UNCHECKED DATA 절을 사용하여 ALTER ASSEMBLY를 실행할 수 있습니다.

SQL Server는 테이블의 선택되지 않은 데이터로 어셈블리가 수정되었다는 메시지를 Windows 애플리케이션 이벤트 로그에 게시합니다. 그런 다음 SQL Server는 어셈블리에 종속된 데이터가 포함된 테이블을 선택하지 않은 데이터가 있는 것으로 표시합니다. sys.tables 카탈로그 뷰의 has_unchecked_assembly_data 열에는 선택되지 않은 데이터가 포함된 테이블의 경우 값 1, 선택되지 않은 데이터가 없는 테이블의 경우 0이 포함됩니다.

확인되지 않은 데이터의 무결성을 해결하려면 선택되지 않은 데이터가 있는 각 테이블에 대해 DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS 실행합니다. DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS 실패하는 경우 유효하지 않은 테이블 행을 삭제하거나 어셈블리 코드를 수정하여 문제를 해결한 다음 추가 ALTER ASSEMBLY 문을 실행해야 합니다.

ALTER ASSEMBLY는 어셈블리 버전을 변경합니다. 어셈블리의 문화권 및 공개 키 토큰은 동일하게 유지됩니다. SQL Server는 동일한 이름, 문화권 및 공개 키를 사용하여 다른 버전의 어셈블리를 등록하는 것을 허용하지 않습니다.

버전 바인딩에 대한 컴퓨터 전체 정책과의 상호 작용

SQL Server에 저장된 어셈블리에 대한 참조가 게시자 정책 또는 컴퓨터 전체 관리자 정책을 사용하여 특정 버전으로 리디렉션되는 경우 다음 중 하나를 수행해야 합니다.

  • 이 리디렉션이 수행되는 새 버전이 데이터베이스에 있는지 확인합니다.

  • 컴퓨터 또는 게시자 정책의 외부 정책 파일로 문을 수정하여 데이터베이스에 있는 특정 버전을 참조하는지 확인합니다.

그렇지 않으면 SQL Server 인스턴스에 새 어셈블리 버전을 로드하는 시도가 실패합니다.

어셈블리의 버전을 업데이트하려면

참고 항목

어셈블리(데이터베이스 엔진)
어셈블리에 대한 정보 가져오기