Aracılığıyla paylaş


SQL Server Dil Uzantılarında .NET çalışma zamanını çağırma

Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri

SQL Server Dil Uzantıları özelliği, .NET çalışma zamanını çağırmak için arabirim olarak sp_execute_external_script sistem saklı yordamını kullanır.

Bu nasıl yapılır makalesinde, SQL Server'da yürütülen C# kodu için uygulama ayrıntıları açıklanmaktadır.

C# sınıfları nereye yerleştirileceği

Dış kitaplık DDL'sini kullanarak derlenmiş .NET kitaplıklarını (DLL' ler) ve diğer bağımlılıkları veritabanına yükleyerek SQL Server'da C# kodunu çağırırsınız. Daha fazla bilgi için bkz. C# projesinden .NET DLL oluşturma.

Temel ilkeler

SQL Server'da C# yürütülürken bazı temel ilkeler aşağıdadır.

  • Derlenmiş özel .NET sınıfları DLL dosyalarında bulunmalıdır.

  • Çağırdığınız C# yöntemi saklı yordamdaki script parametresinde sağlanmalıdır.

  • Sınıf bir pakete aitse, packageName sağlanmalıdır.

  • params bir C# sınıfına parametre geçirmek için kullanılır. Bağımsız değişken gerektiren bir yöntemin çağrılması desteklenmez. Bu nedenle, bağımsız değişken değerlerini yönteminize geçirmenin tek yolu parametrelerdir.

Uyarı

Bu not, SQL Server 2019 (15.x) ve sonraki sürümlerde C# 'ye özgü desteklenen ve desteklenmeyen işlemleri yeniden ifade eder. Saklı yordamda giriş parametreleri desteklenirken çıkış parametreleri desteklenmez.

C# kodunu çağırma

sp_execute_external_script sistem saklı yordamı, .NET çalışma zamanını çağırmak için kullanılan arabirimdir. Aşağıdaki örnekte .NET uzantısının kullanıldığı ve sp_execute_external_script yol, betik ve özel kodunuzu belirtmek için kullanılan parametreler gösterilmektedir.

Uyarı

Çağrılacak yöntemi tanımlamanız gerekmez. Varsayılan olarak, adlı Execute bir yöntem çağrılır. Bu, SQL Server için C# için Microsoft Genişletilebilirlik SDK'sını izlemeniz ve C# sınıfınızda bir Execute yöntem uygulamanız gerektiği anlamına gelir.

DECLARE @param1 AS INT;

SET @param1 = 3;

EXECUTE sp_execute_external_script
    @language = N'dotnet',
    @script = N'<PackageName>.<ClassName>',
    @input_data_1 = N'<Input Query>',
    @param1 = @param1;

Dış kitaplığı kullanma

SQL Server 2019 (15.x) ve sonraki sürümlerinde, Windows'da C# dili için dış kitaplıkları kullanabilirsiniz. SıNıFlarınızı bir DLL dosyasında derleyebilir ve CREATE EXTERNAL LIBRARY DDL kullanarak DLL'yi ve diğer bağımlılıkları veritabanına yükleyebilirsiniz.

Dış kitaplık içeren bir DLL dosyasını karşıya yükleme örneği:

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

Bir dış kitaplık oluşturduğunda, SQL Server otomatik olarak C# sınıflarına erişebilir ve yol için özel izinler ayarlamanız gerekmez.

Aşağıdaki kod, sınıfında yöntemini MyClass dış kitaplık olarak karşıya yüklenen bir paketten MyPackageçağırma Execute örneğidir:

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

Daha fazla bilgi için bkz. CREATE EXTERNAL LIBRARY.