Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Az SQL Server támogatja Transact-SQL és a közös nyelvi futtatókörnyezeti (CLR) objektumok hibakeresését az adatbázisban. Az SQL Server hibakeresésének fő szempontjai a könnyű beállítás és a használat, valamint az SQL Server hibakereső és a Microsoft Visual Studio hibakeresővel való integrációja. Emellett a hibakeresés több nyelven is működik. A felhasználók zökkenőmentesen léphetnek be CLR-objektumokba a Transact-SQL-ből, és fordítva.
Az SQL Server Management Studio Transact-SQL hibakeresője nem használható felügyelt adatbázis-objektumok hibakeresésére, de az objektumokat a Visual Studio hibakeresőivel is hibakereséssel végezheti el. A Visual Studióban a felügyelt adatbázis-objektumok hibakeresése támogatja az összes gyakori hibakeresési funkciót, például lépés a és lépés utasítások felett a kiszolgálón végrehajtott rutinokon belül. A hibakeresők töréspontokat állíthatnak be, megvizsgálhatják a hívásvermet, megvizsgálhatják a változókat, és hibakeresés közben módosíthatják a változóértékeket.
Engedélyek és korlátozások hibakeresése
A hibakeresés magas jogosultsági szintű művelet, ezért az SQL Serverben csak a sysadmin rögzített kiszolgálói szerepkör tagjai tehetik meg ezt.
A hibakeresés során a következő korlátozások érvényesek:
A CLR-rutinok hibakeresése egyszerre csak egy hibakereső példányra korlátozódik. Ez a korlátozás azért érvényes, mert az összes CLR-kód végrehajtása lefagy töréspont esetén, és a végrehajtás addig nem folytatódik, amíg a hibakereső nem lép ki a töréspontról. Más kapcsolatokban azonban folytathatja a Transact-SQL hibakeresését. Bár a Transact-SQL hibakeresés nem fagyasztja le a szerveren lévő egyéb végrehajtásokat, a zárolás miatt más kapcsolatok várakozhatnak.
A meglévő kapcsolatokat nem lehet hibakeresni, csak az újakat, mivel az SQL Servernek információra van szüksége az ügyfélről és a hibakereső környezetről a kapcsolat létrehozása előtt.
Ezért azt javasoljuk, hogy a Transact-SQL és a CLR-kód hibakeresése ne éles kiszolgálón, hanem tesztkiszolgálón legyen.
Áttekintés
Az SQL Server hibakeresése kapcsolatonkénti modellt követ. A hibakereső csak azon az ügyfélkapcsolaton képes észlelni és elhárítani a hibákat, amelyhez csatlakozik. Mivel a hibakereső funkcióját nem korlátozza a kapcsolat típusa, a táblázatos adatfolyamok (TDS) és a HTTP-kapcsolatok is hibakeresést végezhetnek. Az SQL Server azonban nem engedélyezi a meglévő kapcsolatok hibakeresését. A hibakeresés támogatja a kiszolgálón futtatott rutinok összes gyakori hibakeresési funkcióját. A hibakereső és az SQL Server közötti interakció elosztott összetevő-objektummodellen (COM) keresztül történik.
A felügyelt tárolt eljárások, függvények, eseményindítók, felhasználó által definiált típusok és összesítések hibakeresésével kapcsolatos további információkért és forgatókönyvekért tekintse meg SQL Server CLR integrációs adatbázis hibakeresési a Visual Studio dokumentációjában.
A TCP/IP hálózati protokollt engedélyezni kell az SQL Server-példányon a Visual Studio távoli fejlesztéshez, hibakereséshez és fejlesztéshez való használatához. A TCP/IP protokoll kiszolgálón való engedélyezéséről további információt az Ügyfélprotokollok konfigurálásacímű témakörben talál.
Hibakeresési lépések
A KÖVETKEZŐ lépésekkel hibakeresést végezhet egy CLR-adatbázis-objektumon a Microsoft Visual Studióban:
Nyissa meg a Microsoft Visual Studiót, és hozzon létre egy új SQL Server-projektet. Használhatja a Visual Studiót tartalmazó SQL LocalDB-példányt.
Új SQL CLR-típus (C#) létrehozása:
- A Megoldáskezelőbenkattintson a jobb gombbal a projektre, és válassza a hozzáadása, Új elem...lehetőséget.
- Az Új elem hozzáadása ablakban válassza SQL CLR C# tárolt eljárás, SQL CLR C# User-Defined függvény, SQL CLR C# User-Defined Típus, SQL CLR C# eseményindító, SQL CLR C# összesítővagy osztály.
- Adjon meg egy nevet az új típus forrásfájljának, majd válassza a következőt: Hozzáad.
Adja hozzá az új típus kódját a szövegszerkesztőhöz. Egy példaként tárolt eljárás mintakódját a jelen cikk alábbi Példa szakaszában találja.
Adjon hozzá egy szkriptet, amely teszteli a típust:
- A Megoldáskezelőbenkattintson a jobb gombbal a projektcsomópontra, és válassza hozzáadása, Szkript....
- Az Új elem hozzáadása ablakban válassza a Szkript (Nincs a buildben)lehetőséget, és adjon meg egy nevet, például
Test.sql. Válassza a hozzáadása gombot. - A Megoldáskezelőkattintson duplán a
Test.sqlcsomópontra az alapértelmezett tesztszkript forrásfájljának megnyitásához. - Adja hozzá a tesztszkriptet (amely meghívja a hibakeresésre szolgáló kódot) a szövegszerkesztőbe. Tekintse meg a példaszkriptet a következő szakaszban.
Helyezzen el egy vagy több töréspontot a forráskódban. Kattintson a jobb gombbal a hibakereséshez használni kívánt függvény vagy rutin szövegszerkesztőjének kódsorára. Válassza a Töréspontlehetőséget, és szúrja be a Töréspontlehetőséget. Ekkor megjelenik a töréspont, amely piros színnel emeli ki a kódsort.
A Hibakeresés menüben válassza a Hibakeresés indítása a projekt fordításához, üzembe helyezéséhez és teszteléséhez. Az
Test.sqltesztszkriptje fut, és a rendszer meghívja a felügyelt adatbázis-objektumot.Amikor megjelenik a sárga nyíl (az utasításmutató kiosztása) a töréspontnál, a kódvégrehajtás szünetel. Ezután hibakeresést végezhet a felügyelt adatbázis-objektumon:
- A Hibakeresési menü Step Over parancsának használatával vigye az utasításmutatót a következő kódsorra.
- A Helyiek ablakban figyelje meg az utasításmutató által jelenleg kiemelt objektumok állapotát.
- Adjon hozzá változókat a Watch ablakhoz. Megfigyelheti a megfigyelt változók állapotát a hibakeresési munkamenet során, még akkor is, ha a változó nem az utasításmutató által jelenleg kiemelt kódsoron van.
- Válassza a Folytatás lehetőséget a Hibakeresés menüből, hogy az utasításmutatót a következő töréspontra vigye, vagy ha nincs több töréspont, végezze el a rutin végrehajtását.
Példakód
Az alábbi C#-példa az SQL Server verzióját adja vissza a hívónak.
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);
}
}
}
Példa tesztszkript
Az alábbi tesztszkript bemutatja, hogyan hívhatja meg az előző példában definiált GetVersion tárolt eljárást.
EXECUTE GetVersion;