Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono tipi di evento server che possono essere sottoscritti usando un gestore eventi e l'oggetto ServerConnection .
Molte delle classi di istanza in SQL Server Management Objects (SMO) possono attivare eventi quando si verificano determinate azioni nel server.
Questi eventi possono essere gestiti a livello di codice configurando un gestore eventi e sottoscrivendo gli eventi associati. Questo tipo di gestione degli eventi è temporaneo perché tutte le sottoscrizioni vengono rimosse al termine del programma client SMO.
Gestione degli eventi ConnectionContext
L'oggetto ServerConnection supporta diversi tipi di evento. La proprietà dell'evento deve essere impostata su un'istanza di un gestore eventi appropriato e l'oggetto gestore eventi deve essere definito come funzione protetta che gestisce l'evento.
Sottoscrizione di eventi
Per gestire gli eventi, scrivere una classe del gestore eventi, crearne un'istanza, assegnare il gestore eventi all'oggetto padre e quindi sottoscrivere l'evento.
Per gestire gli eventi, è necessario scrivere una classe del gestore eventi. La classe del gestore eventi può contenere più di una funzione del gestore eventi e deve essere installata per la gestione degli eventi. Le funzioni del gestore eventi ricevono informazioni sull'evento dal parametro ServerEventNotificatificationArgs che può essere usato per segnalare informazioni sull'evento.
I tipi di eventi di database e server che è possibile gestire sono elencati nella DatabaseEventSet classe e nella ServerEventSetclasse .
Esempio
Per usare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione in cui creare l'applicazione. Per altre informazioni, vedere "Procedura: Creare un progetto SMO di Visual Basic in Visual Studio .NET" o "Procedura: Creare un progetto SMO visual C# in Visual Studio .NET" nella documentazione online di SQL Server.
Registrazione di gestori eventi e sottoscrizione alla gestione degli eventi in Visual Basic
Questo esempio di codice illustra come configurare il gestore eventi e come sottoscrivere gli eventi del database.
Registrazione di gestori eventi e sottoscrizione alla gestione degli eventi in Visual C#
Questo esempio di codice illustra come configurare il gestore eventi e come sottoscrivere gli eventi del database.
//Create an event handler subroutine that runs when a table is created.
private void MyCreateEventHandler(object sender, ServerEventArgs e)
{
Console.WriteLine("A table has just been added to the AdventureWorks2012 database.");
}
//Create an event handler subroutine that runs when a table is deleted.
private void MyDropEventHandler(object sender, ServerEventArgs e)
{
Console.WriteLine("A table has just been dropped from the AdventureWorks2012 database.");
}
public void Main()
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks2012 database.
Database db;
db = srv.Databases("AdventureWorks2012");
//Create a database event set that contains the CreateTable event only.
DatabaseEventSet databaseCreateEventSet = new DatabaseEventSet();
databaseCreateEventSet.CreateTable = true;
//Create a server event handler and set it to the first event handler subroutine.
ServerEventHandler serverCreateEventHandler;
serverCreateEventHandler = new ServerEventHandler(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.
DatabaseEventSet databaseDropEventSet = new DatabaseEventSet();
databaseDropEventSet.DropTable = true;
//Create a server event handler and set it to the second event handler subroutine.
ServerEventHandler serverDropEventHandler;
serverDropEventHandler = new ServerEventHandler(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.
Table tb;
tb = new Table(db, "Test_Table");
Column mycol1;
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 occured.
int x;
int y;
for (x = 1; x <= 1000000000; x++) {
y = x * 2;
}
//Stop event handling.
db.Events.StopEvents();
}