Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Ve spravovaném kódu jsou výjimky vyvolány, když dojde k chybě. Metody a vlastnosti SMO neoznamují úspěch nebo selhání ve návratové hodnotě. Místo toho je možné zachytit a zpracovat výjimky obslužnou rutinou výjimky.
V SMO existují různé třídy výjimek. Informace o výjimce lze extrahovat z vlastností výjimky, jako je například Message vlastnost, která poskytuje textovou zprávu o výjimce.
Příkazy zpracování výjimek jsou specifické pro programovací jazyk. Například v jazyce Microsoft Visual Basic se jedná o příkaz Catch .
Vnitřní výjimky
Výjimky můžou být obecné nebo specifické. Obecné výjimky obsahují sadu konkrétních výjimek. Několik příkazů Catch lze použít ke zpracování očekávaných chyb a nechat zbývající chyby projít do obecného kódu zpracování výjimek. Výjimky se často vyskytují v kaskádové sekvenci. Často může být výjimka SMO způsobená výjimkou SQL. Způsob, jak zjistit to je použít InnerException vlastnost po sobě k určení původní výjimky, která způsobila konečnou výjimku nejvyšší úrovně.
Note
Výjimka SQLException je deklarována v oboru názvů System.Data.SqlClient .
Diagram znázorňuje tok výjimek prostřednictvím vrstev aplikace.
Example
Pokud chcete použít libovolný zadaný příklad kódu, budete muset zvolit programovací prostředí, programovací šablonu a programovací jazyk, ve kterém chcete vytvořit aplikaci. Další informace najdete v tématu Vytvoření projektu SMO visual C# v sadě Visual Studio .NET.
Zachycení výjimky v jazyce Visual Basic
Tento příklad kódu ukazuje, jak použít Try... Chytit... Nakonecpříkaz jazyka Visual Basic, který zachytí výjimku SMO. Všechny výjimky SMO mají typ SmoException a jsou uvedeny v odkazu SMO. Zobrazí se posloupnost vnitřních výjimek, která zobrazí kořen chyby. Další informace najdete v dokumentaci k rozhraní .NET jazyka Visual Basic.
'This sample requires the Microsoft.SqlServer.Management.Smo.Agent namespace is included.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Define an Operator object variable by supplying the parent SQL Agent and the name arguments in the constructor.
'Note that the Operator type requires [] parenthesis to differentiate it from a Visual Basic key word.
Dim op As [Operator]
op = New [Operator](srv.JobServer, "Test_Operator")
op.Create()
'Start exception handling.
Try
'Create the operator again to cause an SMO exception.
Dim opx As OperatorCategory
opx = New OperatorCategory(srv.JobServer, "Test_Operator")
opx.Create()
'Catch the SMO exception
Catch smoex As SmoException
Console.WriteLine("This is an SMO Exception")
'Display the SMO exception message.
Console.WriteLine(smoex.Message)
'Display the sequence of non-SMO exceptions that caused the SMO exception.
Dim ex As Exception
ex = smoex.InnerException
Do While ex.InnerException IsNot (Nothing)
Console.WriteLine(ex.InnerException.Message)
ex = ex.InnerException
Loop
'Catch other non-SMO exceptions.
Catch ex As Exception
Console.WriteLine("This is not an SMO exception.")
End Try
Zachycení výjimky v jazyce Visual C#
Tento příklad kódu ukazuje, jak použít Try... Chytit... Nakonec příkaz Visual C#, který zachytí výjimku SMO. Všechny výjimky SMO mají typ SmoException a jsou uvedeny v odkazu SMO. Zobrazí se posloupnost vnitřních výjimek, která zobrazí kořen chyby. Další informace najdete v dokumentaci k jazyku Visual C#.
{
//This sample requires the Microsoft.SqlServer.Management.Smo.Agent namespace to be included.
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Define an Operator object variable by supplying the parent SQL Agent and the name arguments in the constructor.
//Note that the Operator type requires [] parenthesis to differentiate it from a Visual Basic key word.
op = new Operator(srv.JobServer, "Test_Operator");
op.Create();
//Start exception handling.
try {
//Create the operator again to cause an SMO exception.
OperatorCategory opx;
opx = new OperatorCategory(srv.JobServer, "Test_Operator");
opx.Create();
}
//Catch the SMO exception
catch (SmoException smoex) {
Console.WriteLine("This is an SMO Exception");
//Display the SMO exception message.
Console.WriteLine(smoex.Message);
//Display the sequence of non-SMO exceptions that caused the SMO exception.
Exception ex;
ex = smoex.InnerException;
while (!object.ReferenceEquals(ex.InnerException, (null))) {
Console.WriteLine(ex.InnerException.Message);
ex = ex.InnerException;
}
}
//Catch other non-SMO exceptions.
catch (Exception ex) {
Console.WriteLine("This is not an SMO exception.");
}
}