본문 바로가기
DB/MSSQL

MSSQL C# CLR 외부 라이브러리 적용

by HmHjj 2021. 11. 19.
728x90
반응형

 

MSSQL 에서 사용 할 외부 라이브러리 clr dll 만들기.

 

준비 : VS2019 , MSSQL 2014

 

1. 프로젝트 생성. SQL Server 데이터베이스 프로젝트를 선택 후 다음 클릭. 

2. 프로젝트 구성. 프로젝트 이름을 임의 설정 'sqlclr' 하고 만들기 클릭.

3. sqlclr 프로젝트 확인 후 우클릭하여 새항목을 추가.

4. 새 항목 중 SQL CLR C# 선택 후 SQL CLR C# 사용자 정의 함수로 추가. 아래 소스 파일 이름 변경이 가능

5. 자동으로 소스 내용이 생성되며 간단한 함수 1개가 생성된다. 

 6.  테스트를 위한 hello world를 리턴하는 함수와 입력값을 그대로 리턴하는 함수 생성. 
  class 명 : UserDefinedFunctions

  함수명 : SqlFunction1 , hello

7.  컴파일 구성 방식을 설정. Release 로 변경 MSSQL 64bit 에서 사용할 거라 x64 선택
    Debug 사용시 타 서버에서는 동작 안됨.

8. 프로젝트에서 우클릭 해서 빌드 선택. 상단에 빌드 탭에서도 가능하다. 

9.  빌드 완료 된 출력 화면

10. 빌드 된 clr dll 파일 확인

 

- MSSQL 적용 가이드

MSSQL clr 등록 및 Function 생성 스크립트. 

sqlclr.dll 파일 위치는 권한 있는 폴더에 위치 시켜야 함. 

use master
GO
sp_configure 'clr enabled', 1
RECONFIGURE WITH OVERRIDE
GO
alter database master
set TRUSTWORTHY ON
go
CREATE ASSEMBLY clrcube
FROM 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQL2019\MSSQL\Binn\sqlclr.dll'
WITH PERMISSION_SET = SAFE;
go
CREATE FUNCTION [dbo].[SqlFunction1]
(
	@input [nvarchar](100)
)
RETURNS [nvarchar](100) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[SqlFunction1]
go
CREATE FUNCTION [dbo].[hello]
(
)
RETURNS [nvarchar](100) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[hello]
go

 

스크립트 수행 후 성공 화면

master에 등록 된 clr 화면과 함수 확인

 

테스트 성공 화면.

select dbo.SqlFunction1('abcd')
select dbo.hello()


SqlFunction1 함수에 abcd입력 시 abcd 결과
hello 함수 수행 시 hello world!! 결과.

clr 및 함수 삭제 방법

DROP FUNCTION [dbo].[SqlFunction1]
DROP FUNCTION [dbo].[hello]
DROP ASSEMBLY sqlclr

 

728x90
반응형

댓글