Udostępnij przez


Obsługi zdarzeń obiektów SMO

Nie ma serwera zdarzenie typów, które mogą mieć subskrypcję przy użyciu zdarzenie obsługi oraz ServerConnection obiekt.

Wiele wystąpień klas SQL Server Zarządzanie obiekty (obiekty SMO) może wyzwalać zdarzenia po wystąpieniu określonych akcji na serwerze.

zdarzenie te mogą być obsłużone programowo przez konfigurowanie obsługi zdarzenie i subskrybowanie skojarzone zdarzenie.Ten rodzaj zdarzenie obsługi jest przejściowy, ponieważ wszystkie subskrypcje są usuwane, gdy zamyka program kliencki obiektów SMO.

ConnectionContext zdarzenie obsługi

The ServerConnection object supports several zdarzenie types. właściwość zdarzenia musi być zestaw do wystąpienie programu obsługi odpowiedniego zdarzenia, a obsługa zdarzeń obiektu musi być zdefiniowany jako chronione funkcja, która obsługuje zdarzenie.

zdarzenie subskrypcja

obsługa zdarzeń za pomocą odpowiedniego programu obsługa zdarzeń klasy, utworzenie wystąpienie go, przypisywanie obsługa zdarzeń do obiektu nadrzędnego i następnie subskrypcji zdarzenie.

zdarzenie Klasy programu obsługi, musi być napisana obsługi zdarzenie s.Klasy programu obsługa zdarzeń może zawierać więcej niż jednej funkcja obsługi zdarzenie i musi być zainstalowany dla zdarzenie, które mają być obsługiwane.Funkcje obsługa zdarzeń otrzymywać informacje o zdarzeniu ze ServerEventNotificatificationArgs parametr, który może służyć do raportowania informacji dotyczących zdarzenie.

Typy zdarzeń bazy danych i serwera, które mogą być obsłużone, znajdują się na liście w DatabaseEventSet Klasa a ServerEventSet Klasa.

Przykład

To use any code example that is provided, you will have to choose the programming environment, the programming template, and the programming language in which to create your application. For more information, see "How to: Create a Visual Basic SMO Project in Visual Studio .NET" or "How to: Create a Visual C# SMO Project in Visual Studio .NET" in SQL Server Books Online.

Rejestrowanie zdarzenie programy obsługi i subskrybowanie zdarzenie obsługi w języku Visual Basic

W tym przykładzie kodu pokazano, jak skonfigurować zdarzenie obsługi i w jaki sposób subskrybować s zdarzenie bazy danych.

Rejestrowanie Obsługa zdarzeń i subskrybowanie zdarzeń, obsługa w środowisku Visual C#

W tym przykładzie kodu pokazano, jak skonfigurować zdarzenie obsługi i w jaki sposób subskrybować s zdarzenie bazy danych.

//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 AdventureWorks 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 AdventureWorks database."); 
} 
public void Main() 
{ 
//Connect to the local, default instance of SQL Server. 
Server srv; 
srv = new Server(); 
//Reference the AdventureWorks database. 
Database db; 
db = srv.Databases("AdventureWorks"); 
//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(); 
}