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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-adatbázis a Microsoft Fabricben
A felügyelt kódban a rendszer kivételeket ad, ha hiba történik. Az SMO-metódusok és -tulajdonságok nem jelentik a visszatérési érték sikerességét vagy sikertelenségét. Ehelyett a kivételeket egy kivételkezelő képes elkapni és kezelni.
Az SMO-ban különböző kivételosztályok léteznek. A kivételre vonatkozó információk kinyerhetők a kivétel tulajdonságaiból, például az Üzenet tulajdonságból, amely szöveges üzenetet ad a kivételről.
A kivételkezelési utasítások a programozási nyelvre vonatkoznak. A Microsoft Visual Basicben például a Catch utasítás.
Belső kivételek
A kivételek lehetnek általánosak vagy specifikusak. Az általános kivételek bizonyos kivételeket tartalmaznak. Számos catch utasítás használható a várt hibák kezelésére, és lehetővé teszi, hogy a fennmaradó hibák átesjenek az általános kivételkezelési kódba. A kivételek gyakran kaszkádolt sorrendben fordulnak elő. Gyakran előfordulhat, hogy egy SMO-kivételt SQL-kivétel okozott. Ennek észleléséhez az InnerException tulajdonság egymást követő használatával határozza meg a végleges legfelső szintű kivételt okozó eredeti kivételt.
Note
Az SQLException kivétel a System.Data.SqlClient névtérben van deklarálva.
Az ábrán a kivételek folyamata látható az alkalmazás rétegei között.
Example
A megadott kód példájának használatához ki kell választania a programozási környezetet, a programozási sablont és azt a programozási nyelvet, amelyben létre szeretné hozni az alkalmazást. További információ: Visual C# SMO-projekt létrehozása a Visual Studio .NET-.
Kivétel fogása a Visual Basicben
Ez a példakód bemutatja, hogyan használható a Try... Elkap... VégülVisual Basic utasítás egy SMO-kivétel elfogásához. Minden SMO-kivétel SmoException típusú, és szerepel az SMO-hivatkozásban. A belső kivételek sorozata jelenik meg a hiba gyökerének megjelenítéséhez. További információkért tekintse meg a Visual Basic .NET dokumentációját.
'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
Kivétel észlelése a Visual C-ben#
Ez a példakód bemutatja, hogyan használható a Try... Elkap... Végül a Visual C# utasítással észlelhet egy SMO-kivételt. Minden SMO-kivétel SmoException típusú, és szerepel az SMO-hivatkozásban. A belső kivételek sorozata jelenik meg a hiba gyökerének megjelenítéséhez. További információkért tekintse meg a Visual C# dokumentációját.
{
//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.");
}
}