MSSQL 환경에서 SP 개발시 지원하지 않는 데이터 암복호화 관련 기능을 추가하고자 할때 유용한 기능으로 직접 작성한 DLL Library를 연동할 때 이용된다. 실제 프로젝트 진행시 보안 이슈로 인해 Client로부터 전달 받은 데이터의 복호화를 WAS에서 진행하지 않고 그대로 DB에 전달, SP내에서 복호화 하도록 하였습니다. 이후 자주 사용할 것으로 판된되어 정리해 둔다.
개발환경
-VisualStudio 2017
-MSSQL EXP 2017
-DotNetFramework 4.6.1
CLR DLL Library 생성
STEP1
-VisualStudio에서 SQL Server -> SQL Server 데이터베이스 프로젝트 생성
STEP2
-솔루션 탐색기에서 추가 -> 새항목 -> SQL Server -> SQL CLR C# ->SQL CLR C#에서 사용자 정의 함수 추가
(해당 화면에서 저장프로시저 또는 사용자 정의 형식끼리 용도에 따라 추가할 수 있음)
-SQLGetKeys.cs를 추가
STEP3
-예제는 간단하게 두문자열을 합치는 기능으로 적용 하였다.
빌드하면 아래 경로에 적용한 SQLBaseFunctions.dll 파일이 생성된다. 해당 파일을 원하는 경로에 복사 후 MSSQL Assembly에
등록해 사용할 수 있다.
*빌드시 유의사항
생성할 CLR DLL Library는 안전여부를 떠나 Win32 등을 이용할 것이므로 UNSAFE 권한 수준으로 적용할 것이며, 프로젝트 -> SQLBaseFunctions 속성 -> SQLCLR 탭에서 권한수준을 'UNSAFE'로 선택하여 빌드한다. 또는 외부접근을 허용할 경우 EXTERNAL_ACCESS 옵션을 적용하여 외부접근을 허용할 수 있도록 한다.
(*나의 경우엔 EXTERNAL_ACCESS 적용)
*CREATE ASSEMBLY에 대한 자세한 설명은 아래 경로에서 확인 가능
MSSQL ASSEMBLY 등록
작성된 CLR DLL Library를 원하는 DB에서 script를 통해 등록할 수 있다.
USE [master]
->정상 적용시 스칼라 반환 함수 항목에 아래와 같이 적용된다.
'데이터베이스' 카테고리의 다른 글
MSSQL Left PAD 구현 (0) | 2021.01.29 |
---|---|
MSSQL 2005 RESTORE 복원중... (0) | 2020.11.10 |
SQL Server 인스턴스 이름 찾기 (0) | 2019.03.08 |
MSSQL TCP/IP 접속 허용 (0) | 2019.01.28 |
동적쿼리 SP_EXECUTESQL를 이용한 OUTPUT 파라미터 적용 예제 (0) | 2018.10.30 |