Sdílet prostřednictvím


Vytvořte funkce CLR

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

Databázový objekt můžete vytvořit v instanci SQL Serveru, která je naprogramovaná v sestavení vytvořeném v modulu CLR (Common Language Runtime). Databázové objekty, které můžou používat bohatý programovací model poskytovaný modulem CLR (Common Language Runtime), zahrnují agregační funkce, funkce, uložené procedury, triggery a typy.

Vytvoření funkce CLR v SQL Serveru zahrnuje následující kroky:

  • Definujte funkci jako statickou metodu třídy v jazyce podporovaném rozhraním .NET Framework. Další informace o programování funkcí v modulu CLR (Common Language Runtime) najdete v tématu uživatelem definované funkce CLR. Potom zkompilujte třídu pro sestavení sestavení v rozhraní .NET Framework pomocí příslušného jazykového kompilátoru.

  • Zaregistrujte sestavení na SQL Serveru pomocí příkazu CREATE ASSEMBLY. Další informace o sestaveních v SQL Serveru naleznete v tématu Sestavení (Databázový stroj).

  • Pomocí příkazu CREATE FUNCTION vytvořte funkci, která odkazuje na registrované sestavení.

Spouštění kódu CLR je ve výchozím nastavení na SQL Serveru vypnuté. Databázové objekty, které odkazují na moduly spravovaného kódu, můžete vytvářet, měnit a odstraňovat, ale tyto odkazy se nespouštějí na SQL Serveru, pokud není povolená možnost konfigurace clr serveru pomocí sp_configure.

Nasazením projektu SQL Server ve Visual Studiu se zaregistruje sestavení v databázi určené pro projekt. Nasazení projektu také vytvoří funkce CLR v databázi pro všechny metody anotované pomocí atributu SqlFunction. Další informace najdete v tématu Nasazení databázových objektů CLR.

Přístup k externím prostředkům

Pomocí funkcí CLR můžete přistupovat k externím prostředkům, jako jsou soubory, síťové prostředky, webové služby a další databáze (včetně vzdálených instancí SQL Serveru). Funkce CLR mohou používat různé třídy v rozhraní .NET Framework, jako jsou System.IO, System.WebServices, System.Sqlatd. Sestavení, které obsahuje takové funkce, by mělo být alespoň nakonfigurováno se sadou oprávnění EXTERNAL_ACCESS pro tento účel. Další informace viz CREATE ASSEMBLY.

Spravovaného zprostředkovatele klienta SQL lze použít pro přístup ke vzdáleným instancím SQL Serveru. Avšak funkce CLR nepodporují připojení zpětné smyčky k původnímu serveru.

Vytváření, úpravy nebo odstraňování sestavení v SQL Serveru

Vytvoření funkce CLR

Přístup k nativnímu kódu

Funkce CLR mají přístup k nativnímu (nespravovanému) kódu, jako je například kód napsaný v jazyce C nebo C++, prostřednictvím PInvoke ze spravovaného kódu (podrobnosti najdete v tématu Volání nativních funkcí ze spravovaného kódu). Starší kód můžete znovu použít jako funkce definované uživatelem CLR, nebo můžete zapisovat kriticky důležité funkce definované uživatelem v nativním kódu, které vyžadují použití sestavení UNSAFE. Pro více informací o varováních týkajících se použití UNSAFE sestavení se podívejte na integraci CLR zabezpečení přístupu kódu.