Bagikan melalui


Cara memanggil runtime .NET di Ekstensi Bahasa SQL Server

Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru

Fitur Ekstensi Bahasa SQL Server menggunakan prosedur tersimpan sistem sp_execute_external_script sebagai antarmuka untuk memanggil runtime .NET.

Artikel panduan ini menjelaskan detail implementasi untuk kode C# yang dijalankan di SQL Server.

Tempat menempatkan kelas C#

Anda memanggil kode C# di SQL Server dengan mengunggah pustaka .NET (DLL) yang dikompilasi dan dependensi lainnya ke dalam database menggunakan DDL pustaka eksternal. Untuk informasi selengkapnya, lihat Membuat DLL .NET dari proyek C#.

Prinsip dasar

Berikut ini adalah beberapa prinsip dasar saat menjalankan C# di SQL Server.

  • Kelas .NET kustom yang dikompilasi harus ada dalam file DLL.

  • Metode C# yang Anda panggil harus disediakan dalam script parameter pada prosedur tersimpan.

  • Jika kelas termasuk dalam paket, packageName kelas harus disediakan.

  • params digunakan untuk meneruskan parameter ke kelas C#. Memanggil metode yang memerlukan argumen tidak didukung. Oleh karena itu, parameter adalah satu-satunya cara untuk meneruskan nilai argumen ke metode Anda.

Catatan

Catatan ini memulihkan operasi yang didukung dan tidak didukung khusus untuk C# di SQL Server 2019 (15.x) dan versi yang lebih baru. Pada prosedur tersimpan, parameter input didukung, sementara parameter output tidak didukung.

Kode C# panggilan

Prosedur tersimpan sistem sp_execute_external_script adalah antarmuka yang digunakan untuk memanggil runtime .NET. Contoh berikut menunjukkan sp_execute_external_script penggunaan ekstensi .NET, dan parameter untuk menentukan jalur, skrip, dan kode kustom Anda.

Catatan

Anda tidak perlu menentukan metode mana yang akan dipanggil. Secara default, metode yang disebut Execute dipanggil. Ini berarti Anda perlu mengikuti Microsoft Extensibility SDK untuk C# untuk SQL Server dan menerapkan Execute metode di kelas C# Anda.

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;

Menggunakan pustaka eksternal

Di SQL Server 2019 (15.x) dan versi yang lebih baru, Anda dapat menggunakan pustaka eksternal untuk bahasa C# di Windows. Anda dapat mengkompilasi kelas Anda ke dalam file DLL dan mengunggah DLL dan dependensi lainnya ke dalam database menggunakan CREATE EXTERNAL LIBRARY DDL.

Contoh cara mengunggah file DLL dengan pustaka eksternal:

CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO

Saat membuat pustaka eksternal, SQL Server secara otomatis memiliki akses ke kelas C#, dan Anda tidak perlu mengatur izin khusus apa pun ke jalur tersebut.

Kode berikut adalah contoh memanggil Execute metode di kelas MyClass dari paket MyPackage, yang diunggah sebagai pustaka eksternal:

EXEC sp_execute_external_script
    @language = N'dotnet',
    @script = N'MyPackage.MyClass',
    @input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));

Untuk informasi selengkapnya, lihat MEMBUAT PUSTAKA EKSTERNAL.