Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-databas i Microsoft Fabric
Det finns serverhändelsetyper som kan prenumereras på med hjälp av en händelsehanterare och ServerConnection objektet.
Många av instansklasserna i SQL Server Management Objects (SMO) kan utlösa händelser när vissa åtgärder på servern inträffar.
Dessa händelser kan hanteras programmatiskt genom att konfigurera en händelsehanterare och prenumerera på de associerade händelserna. Den här typen av händelsehantering är tillfällig eftersom alla prenumerationer tas bort när SMO-klientprogrammet avslutas.
ConnectionContext händelsehantering
Objektet ServerConnection stöder flera händelsetyper. Händelseegenskapen måste vara inställd på en instans av en lämplig händelsehanterare och händelsehanterarobjektet måste definieras som en skyddad funktion som hanterar händelsen.
Eventprenumeration
Du hanterar händelser genom att skriva en händelsehanterarklass, skapa en instans av den, tilldela händelsehanteraren till det överordnade objektet och sedan prenumerera på händelsen.
En händelsehanterarklass måste skrivas för att hantera händelser. Händelsehanterarklassen kan innehålla mer än en händelsehanterarfunktion och måste installeras för att händelserna ska hanteras. Händelsehanterarfunktionerna tar emot information om händelsen från parametern ServerEventNotificatificationArgs som kan användas för att rapportera information om händelsen.
De typer av databas- och serverhändelser som kan hanteras visas i DatabaseEventSet klassen och ServerEventSetklassen.
Examples
Om du vill använda ett kodexempel som tillhandahålls måste du välja programmeringsmiljö, programmeringsmallen och programmeringsspråket för att skapa ditt program. Mer information finns i Skapa ett Visual C# SMO-projekt i Visual Studio .NET.
Registrera händelsehanterare och prenumerera på händelsehantering i .NET
Följande kodexempel visar hur du konfigurerar händelsehanteraren och hur du prenumererar på databashändelserna i .NET.
Visual Basic
Det här kodexemplet visar hur du konfigurerar händelsehanteraren och hur du prenumererar på databashändelserna.
'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