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
Existují typy událostí serveru, které lze přihlásit k odběru pomocí obslužné rutiny události a objektu ServerConnection .
Mnoho tříd instancí v objektech SMO (SQL Server Management Objects) může aktivovat události v případě, že dojde k určitým akcím na serveru.
Tyto události je možné zpracovat programově nastavením obslužné rutiny události a přihlášením k odběru přidružených událostí. Tento typ zpracování událostí je přechodný, protože při ukončení klientského programu SMO se odeberou všechna předplatná.
Zpracování událostí ConnectionContext
Objekt ServerConnection podporuje několik typů událostí. Vlastnost události musí být nastavena na instanci příslušné obslužné rutiny události a objekt obslužné rutiny události musí být definován jako chráněná funkce, která zpracovává událost.
Předplatné událostí
Události zpracováváte napsáním třídy obslužné rutiny události, vytvořením instance, přiřazením obslužné rutiny události nadřazeného objektu a následným přihlášením k odběru události.
Třída obslužné rutiny události musí být zapsána pro zpracování událostí. Třída obslužné rutiny události může obsahovat více než jednu funkci obslužné rutiny události a musí být nainstalována pro události, které mají být zpracovány. Funkce obslužné rutiny události přijímají informace o události z parametru ServerEventNotificatificationArgs , který lze použít k hlášení informací o události.
Typy událostí databáze a serveru, které lze zpracovat, jsou uvedeny ve DatabaseEventSet třídě a ServerEventSettřídě.
Examples
Pokud chcete použít libovolný zadaný příklad kódu, musíte zvolit programovací prostředí, šablonu programování a programovací jazyk, ve kterém chcete vytvořit aplikaci. Další informace naleznete v tématu Vytvoření projektu SMO visual C# v sadě Visual Studio .NET.
Registrace obslužných rutin událostí a přihlášení k odběru zpracování událostí v .NET
Následující ukázky kódu ukazují, jak nastavit obslužnou rutinu události a jak se přihlásit k odběru databázových událostí v .NET.
Visual Basic
Tento příklad kódu ukazuje, jak nastavit obslužnou rutinu události a jak se přihlásit k odběru databázových událostí.
'Create an event handler subroutine that runs when a table is created.
Private Sub MyCreateEventHandler(ByVal sender As Object, ByVal e As ServerEventArgs)
Console.WriteLine("A table has just been added to the AdventureWorks2022 database.")
End Sub
'Create an event handler subroutine that runs when a table is deleted.
Private Sub MyDropEventHandler(ByVal sender As Object, ByVal e As ServerEventArgs)
Console.WriteLine("A table has just been dropped from the AdventureWorks2022 database.")
End Sub
Sub Main()
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2022 database.
Dim db As Database
db = srv.Databases("AdventureWorks2022")
'Create a database event set that contains the CreateTable event only.
Dim databaseCreateEventSet As New DatabaseEventSet
databaseCreateEventSet.CreateTable = True
'Create a server event handler and set it to the first event handler subroutine.
Dim serverCreateEventHandler As ServerEventHandler
serverCreateEventHandler = New ServerEventHandler(AddressOf MyCreateEventHandler)
'Subscribe to the first server event handler when a CreateTable event occurs.
db.Events.SubscribeToEvents(databaseCreateEventSet, serverCreateEventHandler)
'Create a database event set that contains the DropTable event only.
Dim databaseDropEventSet As New DatabaseEventSet
databaseDropEventSet.DropTable = True
'Create a server event handler and set it to the second event handler subroutine.
Dim serverDropEventHandler As ServerEventHandler
serverDropEventHandler = New ServerEventHandler(AddressOf MyDropEventHandler)
'Subscribe to the second server event handler when a DropTable event occurs.
db.Events.SubscribeToEvents(databaseDropEventSet, serverDropEventHandler)
'Start event handling.
db.Events.StartEvents()
'Create a table on the database.
Dim tb As Table
tb = New Table(db, "Test_Table")
Dim mycol1 As Column
mycol1 = New Column(tb, "Name", DataType.NChar(50))
mycol1.Collation = "Latin1_General_CI_AS"
mycol1.Nullable = True
tb.Columns.Add(mycol1)
tb.Create()
'Remove the table.
tb.Drop()
'Wait until the events have occurred.
Dim x As Integer
Dim y As Integer
For x = 1 To 1000000000
y = x*2
Next
'Stop event handling.
db.Events.StopEvents()
End Sub