다음을 통해 공유


SQL Server용 C#용 Microsoft 확장성 SDK

적용 대상: SQL Server 2019 (15.x) 이상 버전

.NET용 Microsoft 확장성 SDK를 사용하여 SQL Server용 C# 프로그램을 구현하는 방법을 알아봅니다. SDK는 SQL Server와 데이터를 교환하고 SQL Server에서 C# 코드를 실행하는 데 사용되는 .NET 언어 확장의 인터페이스입니다.

코드는 오픈 소스이며 SQL Server 언어 확장 GitHub 리포지토리에서 찾을 수 있습니다.

구현 요구 사항

SDK 인터페이스는 SQL Server가 .NET 런타임과 통신하기 위해 충족해야 하는 요구 사항 집합을 정의합니다. SDK를 사용하려면 기본 클래스의 일부 구현 규칙을 따라야 합니다. 그런 다음, SQL Server는 C#에서 특정 메서드를 실행하고 .NET 언어 확장을 사용하여 데이터를 교환할 수 있습니다.

SDK를 사용하는 방법에 대한 예제는 자습서: C#에서 정규식(regex)을 사용하여 문자열 검색을 참조하세요.

SDK 클래스

SDK는 여러 가지 클래스로 구성되어 있습니다.

  • 추상 클래스 AbstractSqlServerExtensionExecutor는 .NET 확장에서 SQL Server와 데이터를 교환하는 데 사용하는 인터페이스를 정의합니다.

  • 여러 도우미 클래스는 CSharpDataSet 데이터 집합 개체를 구현합니다.

다음 섹션에서는 SDK에서 각 클래스에 대한 설명을 찾습니다. SDK 클래스의 소스 코드는 SQL Server 언어 확장 GitHub 리포지토리에서 사용할 수 있습니다.

클래스: AbstractSqlServerExtensionExecutor

추상 클래스 AbstractSqlServerExtensionExecutor에는 SQL Server용 .NET 언어 확장에서 C# 코드를 실행하는 데 사용되는 인터페이스가 포함되어 있습니다.

기본 C# 클래스는 이 클래스에서 상속해야 합니다. 이 클래스에서 상속한다는 것은 고유한 클래스에서 구현해야 하는 특정 메서드가 클래스에 있음을 의미합니다.

이 추상 클래스에서 상속하려면 클래스 선언에서 추상 클래스 이름으로 확장합니다. 여기서 MyClass는 클래스의 이름입니다.

public class MyClass : AbstractSqlServerExtensionExecutor {}

최소한 기본 클래스는 Execute(...) 메서드를 구현해야 합니다.

Execute 메서드

Execute 메서드는 SQL Server에서 C# 코드를 호출하기 위해 .NET 언어 확장을 통해 SQL Server에서 호출되는 메서드입니다. SQL Server에서 실행하려는 주요 작업을 포함하는 주요 메서드입니다.

SQL Server에서 C#에 메서드 인수를 전달하려면 @param에서 sp_execute_external_script 매개 변수를 사용합니다. Execute 메서드는 해당 방식으로 인수를 사용합니다.

public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);

Init 메서드

Init 메서드는 생성자 뒤와 Execute 메서드 앞에 실행됩니다. Execute 이전에 수행해야 하는 모든 작업은 이 메서드에서 수행할 수 있습니다.

public virtual void Init(string sessionId, int taskId, int numTasks);

클래스: CSharpExtension

클래스 CSharpExtension은 모든 언어 확장 API를 구현하고 네이티브 호스트에 결과를 반환합니다.

클래스: CSharpDataSet

추상 클래스 CSharpDataSet에는 .NET 확장에서 사용하는 입력 및 출력 데이터를 처리하기 위한 인터페이스가 포함되어 있습니다.