Sdílet prostřednictvím


Microsoft Extensibility SDK pro jazyk Java pro SQL Server

platí pro: SQL Server 2019 (15.x) a novější verze

Zjistěte, jak můžete implementovat program Java pro SQL Server pomocí sady Microsoft Extensibility SDK pro Javu. Sada SDK je rozhraní pro rozšíření jazyka Java, které se používá k výměně dat s SQL Serverem a ke spouštění kódu Java z SQL Serveru.

Sada SDK se instaluje jako součást SQL Serveru 2019 (15.x) a novějších verzí ve Windows i Linuxu:

  • Výchozí instalační cesta ve Windows: <instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
  • Výchozí instalační cesta v Linuxu: /opt/mssql/lib/mssql-java-lang-extension.jar

Kód je open source a najdete ho v úložišti SQL Server Language Extensions na GitHubu.

Požadavky na implementaci

Rozhraní SDK definuje požadavky, které je potřeba splnit, aby SQL Server komunikoval s běhovým prostředím Java. Pokud chcete použít sadu SDK, musíte dodržovat některá pravidla implementace ve vaší hlavní třídě. SQL Server pak může spustit konkrétní metodu ve třídě Java a vyměňovat data pomocí rozšíření jazyka Java.

Příklad použití sady SDK najdete v kurzu : Vyhledání řetězce pomocí regulárních výrazů (regex) v Javě.

Třídy sady SDK

Sada SDK se skládá ze tří tříd.

Dvě abstraktní třídy, které definují rozhraní, které rozšíření Java používá k výměně dat s SQL Serverem:

  • AbstractSqlServerExtensionExecutor
  • AbstractSqlServerExtensionDataset

Třetí třída je pomocná třída, která obsahuje implementaci objektu datové sady. Je to volitelná třída, kterou můžete použít, což usnadňuje začátek. Místo toho můžete použít vlastní implementaci takové třídy.

  • PrimitiveDataset

V následující části najdete popisy jednotlivých tříd SDK. Zdrojový kód tříd SDK je k dispozici v úložišti SQL Server Language Extensions na GitHubu.

Třída: AbstractSqlServerExtensionExecutor

Abstraktní třída AbstractSqlServerExtensionExecutor obsahuje rozhraní používané ke spuštění kódu Java rozšířením jazyka Java pro SQL Server.

Vaše hlavní třída Javy musí dědit z této třídy. Dědění z této třídy znamená, že existují určité metody ve třídě, kterou potřebujete implementovat ve své vlastní třídě.

Chcete-li dědit z této abstraktní třídy, rozšíříte o abstraktní název třídy v deklaraci třídy:

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

Minimálně vaše hlavní třída musí implementovat metodu execute(...).

Metoda execute

Metoda execute je metoda, která je volána z SQL Serveru prostřednictvím rozšíření jazyka Java pro vyvolání kódu Java z SQL Serveru. Jedná se o metodu klíče, ve které zahrnete hlavní operace, které chcete spustit z SQL Serveru.

Pokud chcete předat argumenty metody javě z SQL Serveru, použijte @param parametr v sp_execute_external_script. Metoda execute přebírá své argumenty tímto způsobem.

public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params)  {}

Metoda init

Metoda init se spustí po konstruktoru a před metodou execute. Veškeré operace, které je třeba provést před execute(...), lze provést v této metodě.

public void init(String sessionId, int taskId, int numtask) {}

Třída: AbstractSqlServerExtensionDataset

Abstraktní třída AbstractSqlServerExtensionDataset obsahuje rozhraní pro zpracování vstupních a výstupních dat používaných rozšířením Java.

Třída: PrimitiveDataset

Třída PrimitiveDataset je implementace AbstractSqlServerExtensionDataset , která ukládá jednoduché typy jako primitivní pole.

PrimitiveDataset je k dispozici v sadě SDK jako volitelná pomocná třída. Pokud tuto třídu nepoužíváte, musíte implementovat vlastní třídu, která dědí z AbstractSqlServerExtensionDataset.