Işleme SMO olayları
Bir olay işleyicisi kullanarak abone sunucunun olay türleri vardır ve ServerConnection nesne.
Birçok örnek sınıflarda SQL Server Yönetim Nesneleri (SMO), sunucu üzerinde belirli eylemleri oluştuğunda olayları tetikleyebilir.
Bu olaylar, olay işleyicisi ayarlayıp ilişkili olaylara abone programsal olarak işlenebilir.Bu tür bir olay işleme geçici çünkü SMO bir istemci programınız olduğunda, tüm abonelikler silinir.
ConnectionContext olay işleme
The ServerConnection object supports several olay types. Olay özellik olmalıdır küme bir örneğini uygun bir olay işleyicisi ve olay işleyicisi nesnesi olay işleme korumalı bir işlev olarak tanımlanmış olmalıdır.
Olay aboneliği
Olayları işlemek için bir olay işleyicisi sınıfı, bir örneğini oluşturma, üst nesne için olay işleyicisinin atama ve sonra da olay için abone yazarak.
Bir olay işleyicisi sınıfı, olayları işlemek için yazılmalıdır.olay işleyicisi Birden fazla sınıf içerebilir olay işleyicisi işlev ve işlenmesi için olayları yeniden yüklenmelidir.Olay işleyicisi işlevleri olay hakkında bilgi alma ServerEventNotificatificationArgs olayla ilgili bilgileri raporlamak için kullanılan bir parametre.
Ele alınabilir veritabanı ve sunucu olay türlerini listelenen DatabaseEventSet sınıf ve ServerEventSet Sınıf.
Örnek
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.
Olay işleyicileri kaydediyor ve olay Visual Basic'te işleme için abone olma
Bu kod örneği, olay işleyiciyi ve veritabanı olaylara abone olmak olmayı gösterir.
Olay işleyicilerini kaydediliyor ve işlem Visual C# [NULL]'olayı için abone olma
Bu kod örneği, olay işleyiciyi ve veritabanı olaylara abone olmak olmayı gösterir.
//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();
}