Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x) en latere versies
Meer informatie over het implementeren van een Java-programma voor SQL Server met behulp van de Microsoft Extensibility SDK voor Java. De SDK is een interface voor de Java-taalextensie die wordt gebruikt om gegevens uit te wisselen met SQL Server en Java-code uit te voeren vanuit SQL Server.
De SDK wordt geïnstalleerd als onderdeel van SQL Server 2019 (15.x) en nieuwere versies, op zowel Windows als Linux:
- Standaardinstallatiepad in Windows:
<instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar - Standaardinstallatiepad in Linux:
/opt/mssql/lib/mssql-java-lang-extension.jar
De code is open source en vindt u in de GitHub-opslagplaats voor SQL Server Language Extensions.
Implementatievereisten
De SDK-interface definieert een set vereisten waaraan moet worden voldaan voor SQL Server om te communiceren met de Java-runtime. Als u de SDK wilt gebruiken, moet u enkele implementatieregels in uw hoofdklasse volgen. SQL Server kan vervolgens een specifieke methode uitvoeren in de Java-klasse en gegevens uitwisselen met behulp van de Java-taalextensie.
Zie Zelfstudie: Zoeken naar een tekenreeks met reguliere expressies (regex) in Java voor een voorbeeld van hoe u de SDK kunt gebruiken.
SDK-klassen
De SDK bestaat uit drie klassen.
Twee abstracte klassen die de interface definiëren die de Java-extensie gebruikt om gegevens uit te wisselen met SQL Server:
AbstractSqlServerExtensionExecutorAbstractSqlServerExtensionDataset
De derde klasse is een helperklasse die een implementatie van een gegevenssetobject bevat. Het is een optionele klasse die u kunt gebruiken, waardoor u gemakkelijker aan de slag kunt gaan. U kunt ook uw eigen implementatie van een dergelijke klasse gebruiken.
PrimitiveDataset
In de volgende sectie vindt u beschrijvingen van elke klasse in de SDK. De broncode van de SDK-klassen is beschikbaar in de GitHub-opslagplaats voor SQL Server Language Extensions.
Klasse: AbstractSqlServerExtensionExecutor
De abstracte klasse AbstractSqlServerExtensionExecutor bevat de interface die wordt gebruikt voor het uitvoeren van Java-code door de Java-taalextensie voor SQL Server.
Uw belangrijkste Java-klasse moet overnemen van deze klasse. Overnemen van deze klasse betekent dat er bepaalde methoden in de klasse zijn die u in uw eigen klasse moet implementeren.
Als u wilt overnemen van deze abstracte klasse, gaat u verder met de abstracte klassenaam in de klassedeclaratie:
public class <MyClass> extends AbstractSqlServerExtensionExecutor {}
Uw hoofdklasse moet minimaal de methode execute(...) implementeren.
Methode uitvoeren
De methode execute is de methode die wordt aangeroepen vanuit SQL Server via de Java-taalextensie om Java-code aan te roepen vanuit SQL Server. Het is een sleutelmethode waarin u de belangrijkste bewerkingen opneemt die u wilt uitvoeren vanuit SQL Server.
Als u methodeargumenten wilt doorgeven aan Java vanuit SQL Server, gebruikt u de @param parameter in sp_execute_external_script. De methode execute gebruikt de argumenten op die manier.
public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params) {}
Methode init
De init-methode wordt uitgevoerd na de constructor-methode en vóór de execute-methode. Operationes die moeten worden uitgevoerd voordat execute(...) kan worden gebruikt, kunnen in deze methode worden uitgevoerd.
public void init(String sessionId, int taskId, int numtask) {}
Klasse: AbstractSqlServerExtensionDataset
De abstracte klasse AbstractSqlServerExtensionDataset bevat de interface voor het verwerken van invoer- en uitvoergegevens die worden gebruikt door de Java-extensie.
Klasse: PrimitiveDataset
De klasse PrimitiveDataset is een implementatie van AbstractSqlServerExtensionDataset die eenvoudige typen opslaat als primitieve matrices.
PrimitiveDataset wordt geleverd in de SDK als een optionele helperklasse. Als u deze klasse niet gebruikt, moet u uw eigen klasse implementeren die wordt overgenomen van AbstractSqlServerExtensionDataset.