SQL Server 언어 확장에서 .NET 런타임을 호출하는 방법
적용 대상: SQL Server 2019(15.x) 이상 버전
SQL Server 언어 확장 기능은 sp_execute_external_script 시스템 저장 프로시저를 인터페이스로 사용하여 .NET 런타임을 호출합니다.
이 방법 문서에서는 SQL Server에서 실행되는 C# 코드에 대한 구현 세부 정보를 설명합니다.
C# 클래스를 배치할 위치
외부 라이브러리 DDL을 사용하여 컴파일된 .NET 라이브러리(DLL) 및 기타 종속성을 데이터베이스에 업로드하여 SQL Server에서 C# 코드를 호출합니다. 자세한 내용은 C# 프로젝트에서 .NET DLL 만들기를 참조하세요.
기본 원칙
다음은 SQL Server에서 C#을 실행할 때 몇 가지 기본 원칙입니다.
컴파일된 사용자 지정 .NET 클래스는 DLL 파일에 있어야 합니다.
호출하는 C# 메서드는 저장 프로시저의
script
매개 변수에 제공되어야 합니다.클래스가 패키지에 속하면
packageName
을(를) 제공해야 합니다.params
은(는) C# 클래스에 매개 변수를 전달하는 데 사용됩니다. 인수가 필요한 메서드 호출은 지원되지 않습니다. 따라서 매개 변수는 인수 값을 메서드에 전달하는 유일한 방법입니다.
참고 항목
이 참고 사항은 SQL Server 2019(15.x) 이상 버전에서 C#과 관련된 지원되는 작업과 지원되지 않는 작업을 다시 설명합니다. 저장 프로시저에서는 입력 매개 변수가 지원되지만 출력 매개 변수는 지원되지 않습니다.
C# 코드 호출
sp_execute_external_script 시스템 저장 프로시저는 .NET 런타임을 호출하기 위해 사용되는 인터페이스입니다. 다음 예제에서는 .NET 확장 및 경로, 스크립트 및 사용자 지정 코드를 지정하기 위한 매개 변수를 사용하는 sp_execute_external_script
를 보여 줍니다.
참고 항목
호출할 메서드를 정의할 필요가 없습니다. 기본적으로 Execute
(이)라는 메서드가 호출됩니다. 즉 SQL Server용 C#용 Microsoft 확장성 SDK를 따르고 C# 클래스에서 Execute
메서드를 구현해야 합니다.
DECLARE @param1 INT;
SET @param1 = 3;
EXEC sp_execute_external_script
@language = N'dotnet',
@script = N'<PackageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
외부 라이브러리 사용
SQL Server 2019(15.x) 이상 버전에서는 Windows에서 C# 언어에 대한 외부 라이브러리를 사용할 수 있습니다. CREATE EXTERNAL LIBRARY DDL을 사용하여 클래스를 DLL 파일로 컴파일하고 DLL 및 기타 종속성을 데이터베이스에 업로드할 수 있습니다.
외부 라이브러리를 사용하여 DLL 파일을 업로드하는 방법의 예제:
CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO
외부 라이브러리를 만들면 SQL Server는 자동으로 C# 클래스에 액세스할 수 있으며 경로에 대한 특별 권한을 설정할 필요가 없습니다.
다음 코드는 외부 라이브러리로 업로드된 MyPackage
패키지에서 MyClass
클래스의 Execute
메서드를 호출하는 예제입니다.
EXEC sp_execute_external_script
@language = N'dotnet',
@script = N'MyPackage.MyClass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));
자세한 내용은 CREATE EXTERNAL LIBRARY를 참조하세요.