SQL CLR: Porovnání verzí

Smazaný obsah Přidaný obsah
m linkfix
m <source> -> <syntaxhighlight> (phab:T237267)
Řádek 13:
Pro vývoj SQL CLR objektů je potřeba mít nainstalovaný databázový server Microsoft SQL Server 2005 ve verzi Express a vyšší. Jako vývojové prostředí je nejlepší použít Microsoft Visual C# 2008 Express Edition. Pro správu databáze a testování SQL skriptů je dobré mít také nainstalovaný program Microsoft SQL Server Management Studio ve verzi 2005 a vyšší. Všechny zmíněné programy jsou dostupné ke stažení zdarma.<br />
Ve výchozím nastavení Microsoft SQL Server je podpora SQL CLR zakázána. Je tedy potřeba ji nejprpve povolit, k tomu slouží následující skript:<br />
<sourcesyntaxhighlight lang="sql">
-- Enable CLR support
sp_configure 'show advanced options', 1;
Řádek 23:
RECONFIGURE;
GO
</syntaxhighlight>
</source>
=== Vytvoření CLR kódu ===
Ukázková aplikace je tvořena pouze jednou třídou. Používá základní knihovny [[.NET]] frameworku. SQL CLR integrace zajišťuje dostupnost jen některých knihoven. Jakmile by byla použita například knihovna System.Drawing, musela by se dodatečně nahrát i se všemi referencovanými knihovnami do SQL Serveru.
 
<sourcesyntaxhighlight lang="csharp">
using System;
using System.Data;
Řádek 109:
}
};
</syntaxhighlight>
</source>
Aby kód mohl být spouštěn z SQL Serveru je potřeba, aby byl nejprve zkompilován. Nejjednodušší způsob je vytvořit v aplikaci Visual C# nový projekt typu ''Class Library''.<br />
Kód obsahuje jednu veřejnou metodu, která se jmenuje ''Send''. Právě tato metoda bude volána z [[T-SQL]] skriptů. Metoda ''Send'' akceptuje čtyři parametry – adresu odesílatele, adresy příjemců oddělené středníkem, předmět e-mailu a text, který bude obsažený v jeho těle. V ukázce je možné odesílat e-maily pouze v prostém textu.<br />
Řádek 119:
Proměnná ''AssemblyFolderPath'' obsahuje cestu ke složce, kde se nachází zkompilovaná knihovna s kódem pro odesílání e-mailů.
 
<sourcesyntaxhighlight lang="sql">
-- Variables
DECLARE @AssemblyFolderPath NVARCHAR(1000)
Řádek 139:
EXTERNAL NAME [SqlSendMail].[SendMail].[Send]
GO
</syntaxhighlight>
</source>
Jméno knihovny se může lišit v závislosti na nastavení projektu v aplikaci Visual C#. Jméno publikovaného sestavení (assembly) v SQL Serveru nemusí být stejné jako jméno zkompilovaného souboru – v tomto případě ''SqlSendMail.dll''.
 
Řádek 152:
Nyní už jen stačí zavolat nově vytvořenou T-SQL proceduru.
 
<sourcesyntaxhighlight lang="sql">
EXEC sp_SendMail
@to = 'receiver@domain',
Řádek 158:
@from = 'sender@domain',
@body = 'This is a test email from SQL Server'
</syntaxhighlight>
</source>
== Využití SQL CLR ==
Nejčastějším využitím SQL CLR jsou algoritmy pro práci s řetězci, pro tuto oblast v T-SQL neexistuje dostatečné množství zabudovaných funkcí. Dalším častým využitím jsou procedury a funkce, které obsahují pokročilé matematické operace.<br />