Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-database in Microsoft Fabric Preview
Er zijn servergebeurtenistypen waarop u zich kunt abonneren met behulp van een gebeurtenis-handler en het ServerConnection object.
Veel van de exemplaarklassen in SMO (SQL Server Management Objects) kunnen gebeurtenissen activeren wanneer bepaalde acties op de server plaatsvinden.
Deze gebeurtenissen kunnen programmatisch worden verwerkt door een gebeurtenis-handler in te stellen en u te abonneren op de bijbehorende gebeurtenissen. Dit type gebeurtenisafhandeling is tijdelijk omdat alle abonnementen worden verwijderd wanneer het SMO-clientprogramma wordt afgesloten.
Verwerking van ConnectionContext-gebeurtenissen
Het ServerConnection object ondersteunt verschillende gebeurtenistypen. De gebeurteniseigenschap moet worden ingesteld op een exemplaar van een geschikte gebeurtenis-handler en het gebeurtenis-handlerobject moet worden gedefinieerd als een beveiligde functie die de gebeurtenis verwerkt.
Event subscription
U verwerkt gebeurtenissen door een gebeurtenis-handlerklasse te schrijven, een exemplaar ervan te maken, de gebeurtenis-handler toe te wijzen aan het bovenliggende object en vervolgens te abonneren op de gebeurtenis.
Een gebeurtenis-handlerklasse moet worden geschreven om gebeurtenissen te verwerken. De gebeurtenis-handlerklasse kan meer dan één gebeurtenis-handlerfunctie bevatten en moet worden geïnstalleerd voor de gebeurtenissen die moeten worden verwerkt. De gebeurtenis-handlerfuncties ontvangen informatie over de gebeurtenis van de parameter ServerEventNotificatificationArgs die kan worden gebruikt om informatie over de gebeurtenis te rapporteren.
De typen database- en servergebeurtenissen die kunnen worden verwerkt, worden vermeld in de DatabaseEventSet klasse en de ServerEventSetklasse.
Examples
Als u een codevoorbeeld wilt gebruiken dat is opgegeven, moet u de programmeeromgeving, de programmeersjabloon en de programmeertaal kiezen waarin u uw toepassing wilt maken. Zie Een Visual C# SMO-project maken in Visual Studio .NET voor meer informatie.
Gebeurtenis-handlers registreren en abonneren op gebeurtenisafhandeling in .NET
In de volgende codevoorbeelden ziet u hoe u de gebeurtenis-handler instelt en hoe u zich abonneert op de database-gebeurtenissen in .NET.
Visual Basic
In dit codevoorbeeld ziet u hoe u de gebeurtenis-handler instelt en hoe u zich abonneert op de database-gebeurtenissen.
'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