Share via


Aktualisieren einer Anwendung

Nach dem Bereitstellen einer Instanz von SQL Server Notification Services können Sie die von der Instanz gehosteten Anwendungen aktualisieren. Sie aktualisieren eine Anwendung, indem Sie die Anwendungsdefinition ändern und dann die Änderungen mithilfe von SQL Server Management Studio oder dem Befehl nscontrol update anwenden.

Zum Aktualisieren einer einzelnen Anwendung müssen Sie nicht die gesamte Instanz beenden oder deaktivieren. Andere von der Instanz gehostete Anwendungen können weiterhin ausgeführt werden. Falls Sie jedoch auch Werte in der Instanzkonfiguration ändern, müssen Sie vor dem Übernehmen der Aktualisierung die gesamte Instanz deaktivieren.

Beachten Sie vor dem Aktualisieren einer Anwendung Folgendes:

  • Wenn Sie eine Abonnementklasse in der Anwendungsdefinitionsdatei (ADF) ändern, werden von Notification Services neue Abonnementtabellen erstellt. Notification Services sichert die vorhandenen Abonnementdaten. Sie können diese Sicherungen verwenden, um die Abonnementdaten wiederherzustellen. Weitere Informationen finden Sie weiter unten im Abschnitt zum Wiederherstellen von Abonnementdaten.
  • Durch das Aktualisieren einer Anwendung werden üblicherweise Ereignis- und Benachrichtigungsdaten gelöscht. Planen Sie das erneute Übermitteln von Ereignisbatches, die vor der Aktualisierung nicht verarbeitet wurden, oder aller Ereignisbatches, die während der Aktualisierung nicht verarbeitet werden konnten.
  • Stellen Sie sicher, dass in jeglichem Code in der Anwendungsdefinition, durch den ein SQL Server-Objekt erstellt wird, zunächst nach einem vorhandenen Objekt mit demselben Namen gesucht und dieses gelöscht oder umbenannt wird. Beim Aktualisierungsprozess werden benutzerdefinierte SQL Server-Objekte nicht automatisch gelöscht oder umbenannt. Durch das explizite Löschen oder Umbenennen von SQL Server-Objekten vermeiden Sie Fehler durch doppelte Objekte.
  • Wenn Sie Notification Services Standard Edition verwenden und in der Instanzkonfiguration oder Anwendungsdefinition Optionen angeben, die von der Standard Edition nicht unterstützt werden, wird der Aktualisierungsprozess ohne das Aktualisieren der Instanz beendet. Weitere Informationen finden Sie unter Editionen von Notification Services.

So aktualisieren Sie eine Benachrichtigungsanwendung

So aktualisieren Sie eine Instanz von Notification Services

Wiederherstellen von Abonnementdaten

Wenn Sie eine Abonnementklasse in der Anwendungsdefinitionsdatei (ADF) ändern, werden die Abonnementtabellen von Notification Services während der Aktualisierung neu erstellt. Wenn das geschieht, benennt Notification Services die vorhandenen Tabellen wie folgt um, indem "Old" an den Tabellennamen angefügt wird:

Tabellenname Sicherungsname

NSSubscriptionClassNameSubscriptions

NSSubscriptionClassNameSubscriptionsOld

NSSubscriptionClassNameSchedules (nur geplante Abonnements)

NSSubscriptionClassNameSchedulesOld (nur geplante Abonnements)

NSSubscriptionClassNameTimeZones(nur geplante Abonnements)

NSSubscriptionClassNameTimeZonesOld(nur geplante Abonnements)

Nachdem Sie die Anwendung aktualisiert haben, können Sie die Abonnementdaten durch Kopieren der Daten aus den Sicherungstabellen in die neuen Tabellen wiederherstellen. Eine Möglichkeit dazu ist das Verwenden von Transact-SQL-Abfragen, um Daten aus den Sicherungstabellen auszuwählen und in die neuen Tabellen einzufügen.

Falls Sie Daten beim Wiederherstellen transformieren müssen, beispielsweise durch Hinzufügen eines bedingten Wertes zu einer neuen Spalte, können Sie die Verwendung von SQL Server 2005 Integration Services (SSIS) (SSIS) in Betracht ziehen, um die Daten zwischen Tabellen zu verschieben.

Nachdem Sie die wiedergeherstellten Abonnementdaten überprüft haben, sollten Sie die Sicherungstabellen löschen oder umbenennen. Wenn Sie die Tabellen beibehalten und später die Abonnementklasse erneut aktualisieren, schlägt die Aktualisierung fehl, da die Sicherungstabellen bereits vorhanden sind.

Beispiele

Wiederherstellen von ereignisgesteuerten Abonnements

Die Flugbeispielanwendung verfügt über eine Abonnementklasse, die ereignisgesteuerte Regeln verwendet, um Benachrichtigungen zu generieren. Alle Abonnementdaten für diese Abonnementklasse werden in einer Tabelle mit dem Namen NSFlightSubscriptionsSubscriptions gespeichert. Wenn Sie die Abonnementklasse ändern und dann die Fluganwendung aktualisieren, wird von Notification Services eine Sicherung der Abonnementdaten in einer Tabelle mit dem Namen NSFlightSubscriptionsSubscriptionsOld erstellt.

Wenn Sie eine Abfrage schreiben, durch die Daten aus der Sicherung in die neue Tabelle kopiert werden, müssen Sie die Spaltennamen kennen. Sie können diese Daten abrufen, indem Sie die folgenden beiden Abfragen ausführen:

USE [FlightInstanceFlight];
SELECT * FROM [NSFlightSubscriptionsSubscriptions];
SELECT * FROM [NSFlightSubscriptionsSubscriptionsOld];

Wenn Sie die Spaltennamen kennen, können Sie eine Abfrage schreiben, durch die Daten aus NSFlightSubscriptionsSubscriptionsOld nach NSFlightSubscriptionsSubscriptions kopiert werden.

In der Aktualisierung, die in diesem Beispiel verwendet wird, wurde die Carrier-Spalte in der Abonnementklasse (und der Regel) in Airline umbenannt. Die folgende Abfrage gibt diese Änderung wieder.

USE [FlightInstanceFlight];
SET IDENTITY_INSERT [dbo].[NSFlightSubscriptionsSubscriptions] ON;
INSERT INTO [dbo].[NSFlightSubscriptionsSubscriptions]
( [SubscriptionId], [SubscriberId], [Created], [Updated], [Enabled], 
    [DeviceName], [SubscriberLocale], [LeavingFrom], [GoingTo], 
    [Airline], [Price] )
SELECT [SubscriptionId], [SubscriberId], [Created], [Updated], 
       [Enabled], [DeviceName], [SubscriberLocale], [LeavingFrom], 
       [GoingTo], [Carrier], [Price]
FROM [dbo].[NSFlightSubscriptionsSubscriptionsOld];
SET IDENTITY_INSERT [dbo].[NSFlightSubscriptionsSubscriptions] OFF;

Wenn diese Abfrage erfolgreich abgeschlossen wird, können Sie NSFlightSubscriptionsSubscriptionsOld löschen oder umbenennen.

Wiederherstellen von geplanten Abonnements

Eine Wetteranwendung verwendet geplante Abonnements. Die Daten für geplante Abonnements werden in drei Tabellen gespeichert: NSWeatherSubscriptionsSubscription, NSWeatherSubscriptionsSchedules und NSWeatherSubscriptionsTimeZones. Wenn die Abonnementklasse geändert und die Anwendung dann aktualisiert wird, können Sie die Daten in diesen Tabellen mit den folgenden Abfragen wiederherstellen.

Stellen Sie zuerst die Zeitzonendaten wieder her:

USE [WeatherInstanceWeather];
INSERT INTO [dbo].[NSWeatherSubscriptionsTimeZones]
    ( [TimeZoneId], [UtcOffset] )
SELECT [TimeZoneId], [UtcOffset]
FROM [dbo].[NSWeatherSubscriptionsTimeZonesOld];

Stellen Sie als Nächstes die Zeitplandaten wieder her:

SET IDENTITY_INSERT [dbo].[NSWeatherSubscriptionsSchedules] ON
INSERT INTO [dbo].[NSWeatherSubscriptionsSchedules]
    ( [ScheduleId], [UtcTime], [TimeZoneId], [ScheduleType], 
      [ScheduleData], [ScheduleText] )
SELECT [ScheduleId], [UtcTime], [TimeZoneId], [ScheduleType], 
       [ScheduleData], [ScheduleText]
FROM [dbo].[NSWeatherSubscriptionsSchedulesOld]
ORDER BY [ScheduleId];
SET IDENTITY_INSERT [dbo].[NSWeatherSubscriptionsSchedules] OFF;

Stellen Sie als Letztes die Abonnementdaten wieder her:

SET IDENTITY_INSERT [dbo].[NSWeatherSubscriptionsSubscriptions] ON;
INSERT INTO [dbo].[NSWeatherSubscriptionsSubscriptions]
    ( [SubscriptionId], [SubscriberId], [Created], [Updated], 
      [Enabled], [ScheduleId], [DeviceName], [SubscriberLocale], 
      [City] )
SELECT [SubscriptionId], [SubscriberId], [Created], [Updated], 
       [Enabled], [ScheduleId], [DeviceName], [SubscriberLocale], 
       [City]
FROM [dbo].[NSWeatherSubscriptionsSubscriptionsOld];
SET IDENTITY_INSERT [dbo].[NSWeatherSubscriptionsSubscriptions] OFF;

Nachdem Sie überprüft haben, ob die Daten in die neuen Tabellen übertragen wurden, können Sie die alten Tabellen löschen oder umbenennen.

Siehe auch

Konzepte

Hinzufügen einer Anwendung zu einer Instanz
Entfernen einer Anwendung von einer Instanz

Andere Ressourcen

Aktualisieren von Instanzen und Anwendungen
SQL Server Integration Services

Hilfe und Informationen

Informationsquellen für SQL Server 2005