Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há tipos de evento de servidor que podem ser assinados usando um manipulador de eventos e o ServerConnection objeto.
Muitas das classes de instância no SMO (SQL Server Management Objects) podem disparar eventos quando determinadas ações no servidor ocorrem.
Esses eventos podem ser tratados programaticamente configurando um manipulador de eventos e assinando os eventos associados. Esse tipo de manipulação de eventos é transitório porque todas as assinaturas são removidas quando o programa cliente SMO é encerrado.
Tratamento de eventos ConnectionContext
O ServerConnection objeto dá suporte a vários tipos de evento. A propriedade de evento deve ser definida como uma instância de um manipulador de eventos apropriado e o objeto do manipulador de eventos deve ser definido como uma função protegida que manipula o evento.
Assinatura de evento
Você manipula eventos escrevendo uma classe de manipulador de eventos, criando uma instância dela, atribuindo o manipulador de eventos ao objeto pai e assinando o evento.
Uma classe de manipulador de eventos deve ser gravada para manipular eventos. A classe do manipulador de eventos pode conter mais de uma função de manipulador de eventos e deve ser instalada para que os eventos sejam tratados. As funções do manipulador de eventos recebem informações sobre o evento do parâmetro ServerEventNotificatificationArgs que podem ser usadas para relatar informações sobre o evento.
Os tipos de eventos de banco de dados e servidor que podem ser tratados são listados na DatabaseEventSet classe e na ServerEventSetclasse.
Exemplo
Para usar qualquer exemplo de código fornecido, você precisará escolher o ambiente de programação, o modelo de programação e a linguagem de programação na qual criar seu aplicativo. Para obter mais informações, consulte "Como criar um projeto SMO do Visual Basic no Visual Studio .NET" ou "Como criar um projeto SMO do Visual C# no Visual Studio .NET" nos Manuais Online do SQL Server.
Registrando manipuladores de eventos e assinando o tratamento de eventos no Visual Basic
Este exemplo de código mostra como configurar o manipulador de eventos e como assinar os eventos do banco de dados.
Registrando manipuladores de eventos e assinando o tratamento de eventos no Visual C#
Este exemplo de código mostra como configurar o manipulador de eventos e como assinar os eventos do banco de dados.
//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();
}