답변:
Sql Server에 등록 된 어셈블리에만 참조를 추가 할 수 있습니다. 등록되지 않은 경우 참조 추가 대화 상자에 표시되지 않습니다.
DLL을 등록하려면 여러 단계가 필요합니다. 먼저 데이터베이스를 다시 구성해야합니다.
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
이 작업이 완료되면 Sql Server는 CLR을 사용할 수 있습니다. 다음으로 어셈블리를 등록해야합니다.
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
이 마지막 스크립트가 올바르게 실행되면 이제 어셈블리가 등록되고 참조 추가 대화 상자에 나타납니다.
고려해야 할 사항은 Sql Server CLR 구성의 응용 프로그램 보안입니다.
SAFE
, 단, 예외적 인 경우에만 사용한다 EXTERNAL_ACCESS
나 UNSAFE
.Assembly.Load()
의도적으로 제한 되어 있으므로 어셈블리를 동적으로 시도하거나로드하지 마십시오 .UNSAFE
.context connection = true;
) 에서 수행 된 데이터베이스 액세스는 연결된 사용자의 컨텍스트에서 실행되므로 해당 라이브러리에서 데이터에 대한 액세스 권한을 알고 있어야합니다.Visual Studio에서 SQL CLR 어셈블리를 설치하는 대안에 대해 문의한다고 가정합니다.
Visual Studio에서 코드를 가질 필요는 없습니다.
MSDN에 CLR 데이터베이스 개체 배포 에는 SQL 문 및 배포 스크립트를 포함한 옵션이 자세히 설명되어 있습니다.
웹 페이지를 가져 와서 PDF로 변환하는 매우 큰 타사 DLL을 사용합니다.
PDF는 파일 공유에 저장되고 데이터베이스는 위치 및 유형에 따라 업데이트됩니다.
이것은 3 단계 프로세스입니다.
써드 파티 DLL을 사용하여 PDF를 작성하고 URL 및 FilePath를 매개 변수로 승인하고 PDF 크기와 페이지 수를 리턴하는 콘솔 앱을 작성하십시오.
서버에서 콘솔 앱을 호출하는 CLR 저장 프로 시저 만들기
이 모든 것을 CLR 앱을 호출하여 PDF를 생성하는 단일 저장 프로 시저로 래핑 한 다음 메타 데이터를 데이터베이스에 씁니다.
나는 이것이 완벽하지 않다는 것을 알고 있으며, 방아쇠 안에서 너무 미친 짓을해서는 안됩니다!
CLR에서 타사 DLL을 사용하는 방법에 대한 질문이있는 다른 사람들에게만 언급합니다.
cmd.exe 콘솔을 회전시켜 타사 DLL을 실행하여 모든 in-proc을 실행하는 대신 충돌이 발생하더라도 SQL Server에 큰 영향을 미치지 않기를 바랍니다. 그것이 내가 희망하는 것입니다.
이것이 정말 나쁜 접근 방법인지 왜 그런지 의견을 말하십시오.