Mise à jour d'une application

Après avoir déployé une instance de SQL Server Notification Services, vous pouvez mettre à jour les applications hébergées par l'instance. Une application est mise à jour en modifiant la définition d'application, puis en utilisant SQL Server Management Studio ou la commande nscontrol update pour appliquer les modifications.

Pour mettre à jour une seule application, il est inutile d'arrêter ou de désactiver la totalité de l'instance. Vous pouvez laisser s'exécuter les autres applications hébergées par l'instance. En revanche, si vous modifiez également les valeurs de la configuration d'instance, vous devez désactiver la totalité de l'instance avant d'appliquer la mise à jour.

Avant de mettre à jour une application, prenez en compte les points suivants :

  • Si vous modifiez une classe d'abonnement dans le fichier de définition d'application (ADF), Notification Services crée de nouvelles tables d'abonnements. Notification Services sauvegarde les données d'abonnement existantes ; vous pouvez utiliser ces sauvegardes pour restaurer vos données d'abonnement. Pour plus d'informations, consultez la rubrique « Restauration des données d'abonnement » ci-dessous.
  • La mise à jour d'une application entraîne généralement la suppression des données d'événements et de notification. Pensez à envoyer à nouveau tous les lots d'événements qui n'ont pas été traités avant la mise à jour ou ceux qui devaient être traités alors que l'application était en cours de mise à jour.
  • Assurez-vous que le code de votre définition d'application qui crée un objet SQL Server vérifie et supprime ou renomme tout objet existant portant le même nom. Le processus de mise à jour ne supprime ou renomme pas automatiquement les objets SQL Server définis par l'utilisateur. Ainsi, en supprimant ou en renommant explicitement les objets SQL Server, vous évitez les erreurs due à un objet dupliqué.
  • Si vous utilisez Notification Services Standard Edition et spécifiez des options dans votre définition d'application ou votre configuration d'instance qui ne sont pas prises en charge par Standard Edition, le processus de mise à jour s'arrête sans mettre à jour l'instance. Pour plus d'informations, consultez Éditions de Notifications Services.

Pour mettre à jour une application de notification

Pour mettre à jour une instance de Notification Services

Restauration des données d'abonnement

Si vous modifiez une classe d'abonnement dans l'ADF, Notification Services recrée les tables d'abonnement pendant la mise à jour. Lorsque cela se produit, Notification Services renomme les tables existantes en ajoutant « Old » au nom de la table, de la manière suivante :

Nom de la table Nom de sauvegarde

NSSubscriptionClassNameSubscriptions

NSSubscriptionClassNameSubscriptionsOld

NSSubscriptionClassNameSchedules (abonnements planifiés uniquement)

NSSubscriptionClassNameSchedulesOld (abonnements planifiés uniquement)

NSSubscriptionClassNameTimeZones(abonnements planifiés uniquement)

NSSubscriptionClassNameTimeZonesOld(abonnements planifiés uniquement)

Après la mise à jour de l'application, vous pouvez restaurer les données d'abonnement en copiant les données des tables de sauvegarde dans les nouvelles tables. Une méthode pour y parvenir consiste à utiliser des requêtes Transact-SQL pour sélectionner les données des tables de sauvegarde et les insérer dans les nouvelles tables.

Si vous devez transformer des données au cours de leur restauration, par exemple ajouter une valeur conditionnelle à une nouvelle colonne, utilisez SQL Server 2005 Integration Services (SSIS) (SSIS) pour déplacer les données entre les tables.

Après avoir vérifié les données d'abonnement restaurées, vous devez supprimer ou renommer les tables de sauvegarde. Si vous laissez les tables, puis remettez à jour la classe d'abonnement, la mise à jour échoue car les tables de sauvegarde existent déjà.

Exemples

Restauration des abonnements déclenchés par un événement

L'exemple d'application Flight contient une classe d'abonnement qui utilise des règles déclenchées par un événement pour générer des notifications. Toutes les données d'abonnement de cette classe d'abonnement sont stockées dans une table appelée NSFlightSubscriptionsSubscriptions. Si vous modifiez la classe d'abonnement, puis mettez à jour l'application Flight, Notification Services crée une sauvegarde des données d'abonnement dans une table appelée NSFlightSubscriptionsSubscriptionsOld.

Lorsque vous écrivez une requête pour copier les données de la table de sauvegarde dans la nouvelle table, vous devez connaître le nom des colonnes. Vous pouvez obtenir ces données en exécutant les deux requêtes suivantes :

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

Lorsque vous connaissez le nom des colonnes, vous pouvez écrire une requête pour copier les données de NSFlightSubscriptionsSubscriptionsOld dans NSFlightSubscriptionsSubscriptions.

Dans la mise à jour utilisée pour cet exemple, le nom de la colonne Carrier de la classe (et la règle) d'abonnement a été remplacée par Airline. Cette modification est répercutée dans la requête ci-dessous.

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;

Lorsque cette requête est exécutée avec succès, vous pouvez supprimer ou renommer NSFlightSubscriptionsSubscriptionsOld.

Restauration des abonnements planifiés

Une application Weather utilise les abonnements planifiés. Les données d'abonnement planifié sont stockées dans trois tables : NSWeatherSubscriptionsTimeZones, NSWeatherSubscriptionsSubscription et NSWeatherSubscriptionsSchedules. À chaque fois que la classe d'abonnement est modifiée et l'application mise à jour, vous pouvez restaurer les données de ces tables à l'aide des requêtes ci-dessous.

Restaurez d'abord les données de fuseau horaire :

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

Ensuite, restaurez les données de planification :

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;

Enfin, restaurez les données d'abonnement :

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;

Après avoir vérifié que les données ont été transférées dans les nouvelles tables, vous pouvez supprimer ou renommer les anciennes tables.

Voir aussi

Concepts

Ajout d'une application à une instance
Suppression d'une application d'une instance

Autres ressources

Mise à jour des instances et des applications
SQL Server Integration Services

Aide et Informations

Assistance sur SQL Server 2005