Tworzenie funkcji CLR
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Obiekt bazy danych można utworzyć wewnątrz wystąpienia programu SQL Server programowanego w zestawie utworzonym w środowisku uruchomieniowym języka wspólnego programu .NET Framework (CLR). Obiekty bazy danych, które mogą używać zaawansowanego modelu programowania udostępnianego przez środowisko uruchomieniowe języka wspólnego, obejmują funkcje agregujące, funkcje, procedury składowane, wyzwalacze i typy.
Tworzenie funkcji CLR w programie SQL Server obejmuje następujące kroki:
Zdefiniuj funkcję jako statyczną metodę klasy w języku obsługiwanym przez program .NET Framework. Aby uzyskać więcej informacji na temat programowania funkcji w środowisku uruchomieniowym języka wspólnego, zobacz funkcje zdefiniowane przez użytkownika środowiska CLR. Następnie skompiluj klasę, aby skompilować zestaw w programie .NET Framework przy użyciu odpowiedniego kompilatora języka.
Zarejestruj zestaw w programie SQL Server przy użyciu instrukcji
CREATE ASSEMBLY
. Aby uzyskać więcej informacji na temat zestawów w programie SQL Server, zobacz Assemblies (Aparat bazy danych).Utwórz funkcję odwołującą się do zarejestrowanego zestawu przy użyciu instrukcji CREATE FUNCTION.
Wykonywanie kodu CLR jest domyślnie wyłączone w programie SQL Server. Można tworzyć, zmieniać i usuwać obiekty baz danych, które odwołują się do zarządzanych modułów kodu, ale te odwołania nie są wykonywane na serwerze SQL Server, chyba że opcja konfiguracji serwera clr jest włączona za pomocą sp_configure.
Wdrożenie projektu programu SQL Server w programie Visual Studio rejestruje zestaw w bazie danych określonej dla projektu. Wdrożenie projektu powoduje również utworzenie funkcji CLR w bazie danych dla wszystkich metod oznaczonych atrybutem SqlFunction
. Aby uzyskać więcej informacji, zobacz Wdrażanie obiektów baz danych CLR.
Uzyskiwanie dostępu do zasobów zewnętrznych
Za pomocą funkcji CLR można uzyskiwać dostęp do zasobów zewnętrznych, takich jak pliki, zasoby sieciowe, usługi internetowe i inne bazy danych (w tym zdalne wystąpienia programu SQL Server). Funkcje CLR mogą używać różnych klas w programie .NET Framework, takich jak System.IO
, System.WebServices
, System.Sql
itd. Zestaw, który zawiera takie funkcje, powinien być przynajmniej skonfigurowany z zestawem uprawnień EXTERNAL_ACCESS
w tym celu. Aby uzyskać więcej informacji, zobacz CREATE ASSEMBLY.
Dostawca zarządzany klientem SQL może być używany do dostępu do zdalnych wystąpień programu SQL Server. Należy pamiętać, że połączenia zwrotne z serwerem źródłowym nie są obsługiwane w funkcjach CLR.
Tworzenie, modyfikowanie lub usuwanie zestawów w programie SQL Server
Utwórz funkcję CLR
Uzyskiwanie dostępu do kodu natywnego
Funkcje CLR mogą uzyskiwać dostęp do kodu natywnego (niezarządzanego), takiego jak kod napisany w języku C lub C++, przy użyciu PInvoke
z kodu zarządzanego (zobacz Wywoływanie funkcji natywnych z kodu zarządzanego). Możesz ponownie użyć starszego kodu jako funkcji zdefiniowanych przez użytkownika środowiska CLR lub napisać funkcje zdefiniowane przez użytkownika, które są krytyczne dla wydajności, w kodzie natywnym, co wymaga użycia zestawu UNSAFE
. Zobacz Zabezpieczenia dostępu do kodu integracji środowiska CLR, aby zapoznać się z ostrzeżeniami dotyczącymi użycia zestawów UNSAFE
.
Powiązana zawartość
- Tworzenie funkcji zdefiniowanych przez użytkownika (aparat bazy danych)
- Tworzenie agregacji zdefiniowanych przez użytkownika
- wykonywanie funkcji zdefiniowanych przez użytkownika
- Wyświetlanie funkcji zdefiniowanych przez użytkownika
- Pojęcia programowania integracji dla środowiska uruchomieniowego Common Language Runtime (CLR)