Hosten des Notification Services-Moduls
In Notification Services 2.0 mussten Sie für jede Notification Services-Instanz einen Windows-Dienst auf jedem Server installieren, auf dem ein gehosteter Ereignisanbieter, Generator oder Verteiler ausgeführt wurde. Für Entwickler, die Benachrichtigungsanwendungen weitervertreiben wollten, bedeutete dies mindestens einen weiteren bereitzustellenden Windows-Dienst und einen weiteren zu verwaltenden Dienst.
In SQL Server 2005 können Sie das Notification Services-Modul innerhalb Ihrer eigenen Anwendungen oder Prozesse hosten. Wenn Sie das Modul hosten, installieren Sie nicht den Windows-Dienst NS$instanceName, um Modulkomponenten auszuführen. Dies vereinfacht das Einbetten von Notification Services-Lösungen in Ihre Anwendungen.
Hosten des Notification Services-Moduls
Notification Services stellt eine sehr einfache API für das Hosten des Notification Services-Moduls bereit. Instanziieren Sie einfach die NSInstance-Klasse, und geben Sie dabei den Namen der Instanz an, die Sie hosten möchten. Rufen Sie anschließend die StartInstance-Methode auf, um das Modul zu starten. Zum Beenden des Moduls rufen Sie die StopInstance-Methode auf. Das folgende Beispiel zeigt den Code, mit dem das Modul beendet und gestartet wird:
try
{
// Instantiate the Notification Services instance.
NSInstance nsInstance = new NSInstance("FlightInstance");
// Start the instance.
Console.WriteLine("Starting instance...");
nsInstance.StartInstance();
// Check the IsRunning property to verify that
// this process is running the instance.
if (nsInstance.IsRunning == true)
Console.WriteLine("The instance is running.");
else
Console.WriteLine("The instance is NOT running!");
// Stop instance.
Console.WriteLine("Stopping instance...");
nsInstance.StopInstance();
}
catch (Exception ex)
{
// Write exception message to the console.
Console.WriteLine(ex.Message);
}
Behandeln von Fehlern
Während der Ausführung der Instanz können Laufzeitfehler auftreten. Diese Fehler werden dem Hostprozess durch einen ErrorEventHandler-Delegaten gemeldet, der aufgerufen wird, wenn das Error-Ereignis ausgelöst wird. Wenn das Ereignis ausgelöst wird, wird der Delegat aufgerufen, um den Host zu benachrichtigen, und die Instanz wird beendet.
Das folgende Beispiel zeigt, wie auf dieses Ereignis geantwortet wird:
// Define an error handler for the hosted execution engine.
private void InstanceErrorHandler(object sender, ErrorEventArgs e)
{
Console.WriteLine (e.GetException ().ToString ());
}
// Start and stop the hosted execution engine.
public void ErrorHandlingStartStop()
{
try
{
// Instantiate the Notification Services instance.
NSInstance nsInstance = new NSInstance("FlightInstance");
// Add an error handler to the instance.
nsInstance.Error +=
new NSInstance.ErrorEventHandler(InstanceErrorHandler);
// Start the instance.
Console.WriteLine("Starting instance...");
nsInstance.StartInstance();
// Check the IsRunning property to verify that
// this process is running the instance.
if (nsInstance.IsRunning == true)
Console.WriteLine("The instance is running.");
else
Console.WriteLine("The instance is NOT running!");
// Stop the instance.
Console.WriteLine("Stopping instance...");
nsInstance.StopInstance();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Der Absender ist das NSInstance-Objekt.
Ausführen einer Instanz von Notification Services
Zum Ausführen des Moduls, durch das gehostete Ereignisanbieter, Generatoren und Verteiler auf dem lokalen Computer ausgeführt werden, müssen Sie folgende Aktionen ausführen:
- Sie müssen die Notification Services-Modulkomponenten auf jedem Server installieren, auf dem ein gehosteter Ereignisanbieter, Generator oder Verteiler ausgeführt wird.
- Sie müssen die Instanz auf jedem dieser Server registrieren. Wenn Sie die Instanz registrieren, müssen Sie den Windows-Dienst nicht erstellen. Das gehostete Modul kann den Platz des Windows-Dienstes einnehmen.
- Sie müssen Ihre Anwendung auf jedem dieser Server installieren.
- Sie müssen Ihren Code zum Instanziieren und Starten der Instanz auf jedem dieser Server aufrufen.
Falls Sie den Windows-Dienst installieren, müssen Sie beachten, dass Sie nicht gleichzeitig den Windows-Dienst starten und dann die Instanz in der Anwendung starten können. Zu jedem Zeitpunkt kann nur jeweils ein Thread eines einzelnen Prozesses Besitzer der Instanz sein.
Wenn Sie den Windows-Dienst NS$instanceName starten und dann versuchen, die Instanz in der Anwendung zu starten, löst Notification Services eine Ausnahme aus, und die Anwendung startet die Instanz nicht. Umgekehrt gilt ebenfalls: Wenn die Anwendung die Instanz ausführt und wenn Sie dann versuchen, den Windows-Dienst zu starten, kann der Windows-Dienst nicht gestartet werden.
Schlägt der Thread, der das Modul der Instanz auf dem Server besitzt, fehl, können andere Threads in diesem Prozess den Besitz der Instanz übernehmen.
Hinweis: |
---|
Wenn Sie das Modul hosten, können Standardtools zum Starten und Beenden der Instanz, wie SQL Server Management Studio, net-Befehle und Dienste in der Systemsteuerung, nicht zum Starten und Beenden der Instanz verwendet werden. |
Sicherheitsanforderungen
Ihre Anwendung oder Ihr Prozess steuert den Betrieb gehosteter Ereignisanbieter, Generatoren und Verteiler und muss zum Ausführen der entsprechenden Vorgänge über die erforderlichen Windows- und Datenbankberechtigungen verfügen. Dies schließt die Mitgliedschaft in der Windows-Gruppe SQLServer2005NotificationServicesUser$ComputerName und die Mitgliedschaft in den entsprechenden Notification Services-Datenbankrollen ein. Weitere Informationen zu den zum Ausführen einer Notification Services-Instanz erforderlichen Berechtigungen finden Sie unter Konfigurieren von Windows-Konten für eine Instanz von Notification Services und Konfigurieren von SQL Server-Berechtigungen für eine Instanz von Notification Services.
Einbetten von Notification Services-Komponenten
Wenn Sie Notification Services in eine Anwendung einbetten, müssen Sie unbedingt die folgenden Assemblys einschließen:
- Microsoft.SqlServer.NotificationServices.dll
- Microsoft.SqlServer.Smo.dll
- nscontrol.exe
Lesen Sie in Ihrem SQL Server 2005-Lizenzvertrag bezüglich des Weitervertriebs von SQL Server 2005-Komponenten nach.
Siehe auch
Konzepte
Sicherheitsüberlegungen für Notification Services
Konfigurieren von Windows-Konten für eine Instanz von Notification Services
Konfigurieren von SQL Server-Berechtigungen für eine Instanz von Notification Services
Andere Ressourcen
Bereitstellen von Notification Services