Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hay tipos de eventos de servidor a los que se puede suscribir mediante un controlador de eventos y el ServerConnection objeto .
Muchas de las clases de instancia de OBJETOS de administración de SQL Server (SMO) pueden desencadenar eventos cuando se producen determinadas acciones en el servidor.
Estos eventos se pueden controlar mediante programación mediante la configuración de un controlador de eventos y la suscripción a los eventos asociados. Este tipo de control de eventos es transitorio porque todas las suscripciones se quitan cuando se cierra el programa cliente SMO.
Control de eventos ConnectionContext
El ServerConnection objeto admite varios tipos de eventos. La propiedad event debe establecerse en una instancia de un controlador de eventos adecuado y el objeto del controlador de eventos debe definirse como una función protegida que controla el evento.
Suscripción a eventos
Para controlar eventos, escriba una clase de controlador de eventos, cree una instancia de él, asigne el controlador de eventos al objeto primario y, a continuación, se suscriba al evento.
Se debe escribir una clase de controlador de eventos para controlar eventos. La clase de controlador de eventos puede contener más de una función de controlador de eventos y debe instalarse para que se controle el evento. Las funciones del controlador de eventos reciben información sobre el evento del parámetro ServerEventNotificatificationArgs que se puede usar para notificar información sobre el evento.
Los tipos de eventos de base de datos y servidor que se pueden controlar se muestran en la DatabaseEventSet clase y la ServerEventSetclase .
Ejemplo
Para usar cualquier ejemplo de código que se proporcione, tendrá que elegir el entorno de programación, la plantilla de programación y el lenguaje de programación en el que se va a crear la aplicación. Para obtener más información, vea "How to: Create a Visual Basic SMO Project in Visual Studio .NET" o "How to: Create a Visual C# SMO Project in Visual Studio .NET" in SQL Server Books Online.
Registro de controladores de eventos y suscripción al control de eventos en Visual Basic
En este ejemplo de código se muestra cómo configurar el controlador de eventos y cómo suscribirse a los eventos de la base de datos.
Registrar controladores de eventos y suscribirse al control de eventos en Visual C#
En este ejemplo de código se muestra cómo configurar el controlador de eventos y cómo suscribirse a los eventos de la base de datos.
//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();
}