어셈블리 - 구현

적용 대상:SQL Server

이 항목에서는 사용자가 데이터베이스에서 어셈블리를 구현하고 사용하는 데 도움이 되는 다음 영역에 대해 설명합니다.

  • 어셈블리 만들기

  • 어셈블리 수정

  • 어셈블리 삭제, 해제 및 설정

  • 어셈블리 버전 관리

어셈블리 만들기

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

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

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

어셈블리 수정

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

  • 새로운 버전의 어셈블리 바이너리를 업로드하여 어셈블리 구현을 변경합니다. 자세한 내용은 이 항목의 뒷부분에 나오는 어셈블리 버전 관리를 참조하세요.

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

  • 어셈블리의 표시 여부를 변경합니다. 표시되는 어셈블리는 SQL Server 참조할 수 있습니다. 표시되지 않는 어셈블리는 데이터베이스에 업로드했더라도 사용할 수 없습니다. 기본적으로 SQL Server instance 업로드된 어셈블리가 표시됩니다.

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

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 enabled Server Configuration Option을 참조하세요.

어셈블리 실행을 해제하거나 설정하려면

어셈블리 버전 관리

어셈블리가 instance 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_ownerdb_ddlowner 고정 데이터베이스 역할의 멤버만 WITH UNCHECKED DATA 절을 사용하여 ALTER ASSEMBLY 실행을 실행할 수 있습니다.

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

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

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

버전 바인딩을 위해 컴퓨터 차원의 정책과 상호 작용

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

  • 이렇게 리디렉션된 새 버전이 데이터베이스에 있는지 확인합니다.

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

그렇지 않으면 새 어셈블리 버전을 SQL Server instance 로드하지 못합니다.

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

참고 항목

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