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
Vannak olyan kiszolgálói eseménytípusok, amelyekre előfizethet egy eseménykezelő és az ServerConnection objektum használatával.
Az SQL Server Management Objects (SMO) számos példányosztálya eseményeket indíthat el, amikor bizonyos műveletek történnek a kiszolgálón.
Ezek az események programozott módon kezelhetők egy eseménykezelő beállításával és a kapcsolódó eseményekre való feliratkozással. Az ilyen típusú eseménykezelés átmeneti, mert az SMO-ügyfélprogramból való kilépéskor az összes előfizetés el lesz távolítva.
ConnectionContext eseménykezelés
Az ServerConnection objektum számos eseménytípust támogat. Az eseménytulajdonságot egy megfelelő eseménykezelő példányára kell beállítani, az eseménykezelő objektumot pedig az eseményt kezelő védett függvényként kell definiálni.
Esemény előfizetés
Az eseményeket egy eseménykezelő osztály megírásával, egy példány létrehozásával, az eseménykezelő szülőobjektumhoz rendelésével, majd az eseményre való feliratkozással kezelheti.
Eseménykezelő osztályt kell írni az események kezeléséhez. Az eseménykezelő osztály több eseménykezelő függvényt is tartalmazhat, és telepíteni kell az események kezeléséhez. Az eseménykezelő függvények információt kapnak az eseményről a ServerEventNotificatificationArgs paramétertől, amely az esemény adatainak jelentésére használható.
A kezelhető adatbázis- és kiszolgálóesemények típusai az osztályban és az DatabaseEventSetServerEventSetosztályban vannak felsorolva.
Examples
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-ben.
Eseménykezelők regisztrálása és feliratkozás az eseménykezelésre a .NET-ben
Az alábbi kódminták bemutatják, hogyan állíthatja be az eseménykezelőt, és hogyan iratkozhat fel az adatbáziseseményekre a .NET-ben.
Visual Basic
Ez a példakód bemutatja, hogyan állíthatja be az eseménykezelőt, és hogyan iratkozhat fel az adatbázis-eseményekre.
'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