Jak ladit databázové objekty CLR
platí pro:SQL Server
SQL Server poskytuje podporu ladění Transact-SQL a objektů CLR (Common Language Runtime) v databázi. Klíčové aspekty ladění v SQL Serveru jsou snadné nastavení a použití a integrace ladicího programu SQL Serveru s ladicím programem sady Microsoft Visual Studio. Navíc ladění funguje napříč jazyky. Uživatelé můžou bezproblémově zakročit do objektů CLR z Jazyka Transact-SQL a naopak.
Ladicí program Transact-SQL v aplikaci SQL Server Management Studio se nedá použít k ladění spravovaných databázových objektů, ale objekty můžete ladit pomocí ladicího programu v sadě Visual Studio. Ladění spravovaných databázových objektů v sadě Visual Studio podporuje všechny běžné funkce ladění, jako je krok do a krok přes příkazy v rámci rutin spuštěných na serveru. Ladicí programy mohou při ladění nastavit zarážky, prozkoumat zásobník volání, prohlížet proměnné a měnit hodnoty proměnných.
Ladění oprávnění a omezení
Ladění je vysoce privilegovaná operace, a proto je na SQL Serveru mohou provádět pouze členové pevné role serveru sysadmin.
Při ladění platí následující omezení:
Ladění rutin CLR je omezeno na jednu instanci ladicího programu najednou. Toto omezení platí, protože při dosažení zarážky se zablokuje všechna spuštění kódu CLR a provádění nebude pokračovat, dokud ladicí program nepřejde z bodu přerušení. Můžete ale pokračovat v ladění Transact-SQL v jiných připojeních. Ačkoli ladění Transact-SQL nezastaví další spuštění na serveru, může způsobit, že ostatní připojení musí čekat, protože podrží zámek.
Existující připojení nelze ladit, pouze nová připojení, protože SQL Server vyžaduje před vytvořením připojení informace o prostředí klienta a ladicího programu.
Proto doporučujeme, aby Transact-SQL a kód CLR byly laděné na testovacím serveru, a ne na produkčním serveru.
Přehled
Ladění v SQL Serveru se řídí modelem podle připojení. Ladicí program může detekovat a ladit aktivity pouze u připojení klienta, ke které se připojuje. Vzhledem k tomu, že funkce ladicího programu není omezena typem připojení, je možné ladit tabulkový datový stream (TDS) i připojení HTTP. SQL Server ale neumožňuje ladění existujících připojení. Ladění podporuje všechny běžné funkce ladění v rutinách spuštěných na serveru. Interakce mezi ladicím programem a SQL Serverem probíhá prostřednictvím modelu COM (Distributed Component Object Model).
Další informace a scénáře o ladění spravovaných uložených procedur, funkcí, aktivačních událostí, uživatelem definovaných typů a agregací najdete v tématu ladění integrační databáze SQL Serveru CLR v dokumentaci k sadě Visual Studio.
Aby bylo možné používat Visual Studio pro vzdálený vývoj, ladění a vývoj, musí být v instanci SQL Serveru povolený síťový protokol TCP/IP. Další informace o povolení protokolu TCP/IP na serveru naleznete v tématu Konfigurace klientských protokolů.
Kroky ladění
K ladění databázového objektu CLR v sadě Microsoft Visual Studio použijte následující postup:
Otevřete Microsoft Visual Studio a vytvořte nový projekt SQL Serveru. Můžete použít instanci SQL LocalDB, která je součástí sady Visual Studio.
Vytvořte nový typ SQL CLR (C#):
- V Průzkumníku řešeníklikněte pravým tlačítkem na projekt a vyberte Přidat, Nová položka....
- V okně
Přidat novou položku vyberteuloženou proceduru JAZYKa C# jazyka SQL CLR C#,User-Defined funkce JAZYKa C#jazyka SQL CLR C# User-Defined typ ,trigger JAZYKa SQL CLR C# ,jazyka SQL CLR C# agregačnínebo třída . - Zadejte název zdrojového souboru nového typu a pak vyberte Přidat.
Do textového editoru přidejte kód nového typu. Ukázkový kód pro ukázkovou uloženou proceduru najdete v následující části Příklad v tomto článku.
Přidejte skript, který testuje typ:
- V Průzkumník řešeníklikněte pravým tlačítkem na položku projektu a vyberte Přidat, Skript....
- V okně Přidat novou položku vyberte Skript (Není v sestavení), a zadejte název, jako například
Test.sql
. Vyberte tlačítko Přidat. - V Průzkumníku řešenípoklikejte na uzel
Test.sql
a otevřete výchozí zdrojový soubor testovacího skriptu. - Přidejte do textového editoru testovací skript (který vyvolá kód, který se má ladit). Ukázkový skript najdete v příkladu v další části.
Umístěte do zdrojového kódu jednu nebo více zarážek. Klikněte pravým tlačítkem myši na řádek kódu v textovém editoru na funkci nebo rutinu, kterou chcete ladit. Vyberte bod přerušení, vložte bod přerušení. Po přidání zarážky se řádek kódu zvýrazní červeně.
V nabídce Ladění vyberte Spustit ladění a zkompilujte, nasaďte a otestujte projekt. Testovací skript v
Test.sql
se spustí a vyvolá se spravovaný databázový objekt.Když se na zarážce zobrazí žlutá šipka (označující ukazatel instrukce), spuštění kódu se pozastaví. Potom můžete ladit spravovaný databázový objekt:
- Pomocí Přeskočit v nabídce Ladění posuňte ukazatel instrukce na další řádek kódu.
- Pomocí okna Locals můžete sledovat stav objektů, které jsou aktuálně zvýrazněny ukazatelem instrukce.
- Přidejte proměnné do okna Kukátko. Stav sledovaných proměnných můžete sledovat v průběhu ladicí relace, i když proměnná není na řádku kódu, který je aktuálně zvýrazněný instrukčním ukazatelem.
- Vyberte Pokračovat v nabídce Debug a přejděte ukazatelem instrukce na další zarážku nebo dokončete provádění rutiny, pokud neexistují žádné další zarážky.
Ukázkový kód
Následující příklad jazyka C# vrátí volajícímu verzi SQL Serveru.
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetVersion()
{
using (var connection = new SqlConnection("context connection=true"))
{
connection.Open();
var command = new SqlCommand("select @@version", connection);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
}
Ukázkový testovací skript
Následující testovací skript ukazuje, jak vyvolat GetVersion
uloženou proceduru definovanou v předchozím příkladu.
EXECUTE GetVersion;
Související obsah
- ladění spravovaného kódu
- Koncepty programování pro integraci CLR (Common Language Runtime)