Aggiornamento di un'applicazione

Dopo aver distribuito un'istanza di SQL Server Notification Services, è possibile aggiornare le singole applicazioni ospitate dall'istanza. Per aggiornare un'applicazione, è necessario modificare la definizione dell'applicazione e quindi utilizzare SQL Server Management Studio o il comando nscontrol update per applicare le modifiche.

Per aggiornare una singola applicazione, non è necessario interrompere o disattivare l'intera istanza. È possibile continuare a eseguire le altre applicazioni ospitate dall'istanza. Se invece si modificano anche valori inclusi nella configurazione dell'istanza, per poter applicare l'aggiornamento è necessario disattivare l'intera istanza.

Per l'aggiornamento di un'applicazione, tenere presenti le considerazioni seguenti:

  • Se si modifica una classe di sottoscrizione nel file di definizione dell'applicazione (ADF), Notification Services crea nuove tabelle delle sottoscrizioni. Notification Services esegue il backup dei dati delle sottoscrizioni esistenti. Tali backup potranno essere utilizzati per ripristinare i dati delle sottoscrizioni. Per ulteriori informazioni, vedere "Ripristino dei dati delle sottoscrizioni" di seguito.
  • L'aggiornamento di un'applicazione comporta in genere l'eliminazione dei dati degli eventi e delle notifiche. Sarà necessario inoltrare nuovamente i batch di eventi non elaborati prima dell'aggiornamento o i batch di eventi che avrebbero dovuto essere elaborati durante l'aggiornamento dell'applicazione.
  • Assicurarsi che il codice nella definizione dell'applicazione che crea un oggetto SQL Server controlli ed elimini o rinomini gli oggetti esistenti con lo stesso nome. Il processo di aggiornamento non elimina né rinomina automaticamente gli oggetti di SQL Server definiti dall'utente, pertanto, eliminando o rinominando in modo esplicito gli oggetti di SQL Server, si evitano errori dovuti alla presenza di oggetti duplicati.
  • Se si utilizza Notification Services Standard Edition e nella configurazione dell'istanza o nella definizione dell'applicazione si specificano opzioni non supportate da tale versione, il processo di aggiornamento viene interrotto e l'istanza non viene aggiornata. Per ulteriori informazioni, vedere Edizioni di Notification Services.

Per aggiornare un'applicazione di notifica

Per aggiornare un'istanza di Notification Services

Ripristino dei dati delle sottoscrizioni

Se si modifica una classe di sottoscrizione nel file ADF, Notification Services ricrea le tabelle delle sottoscrizioni durante l'aggiornamento. In questa situazione, Notification Services rinomina le tabelle esistenti aggiungendo "Old" al nome della tabella, come indicato di seguito:

Nome tabella Nome di backup

NSSubscriptionClassNameSubscriptions

NSSubscriptionClassNameSubscriptionsOld

NSSubscriptionClassNameSchedules (solo sottoscrizioni pianificate)

NSSubscriptionClassNameSchedulesOld (solo sottoscrizioni pianificate)

NSSubscriptionClassNameTimeZones(solo sottoscrizioni pianificate)

NSSubscriptionClassNameTimeZonesOld(solo sottoscrizioni pianificate)

Al termine dell'aggiornamento dell'applicazione, è possibile ripristinare i dati delle sottoscrizioni copiandoli nelle nuove tabelle dalle tabelle di backup. Per eseguire questa operazione, utilizzare query Transact-SQL per selezionare i dati dalle tabelle di backup e inserirli nelle nuove tabelle.

Se si desidera trasformare i dati durante il ripristino, ad esempio aggiungendo un valore condizionale a una nuova colonna, considerare l'ipotesi di utilizzare SQL Server 2005 Integration Services (SSIS) (SSIS) per spostare i dati tra le tabelle.

Dopo avere verificato i dati delle sottoscrizioni ripristinati, è necessario eliminare o rinominare le tabelle di backup. Se infatti queste tabelle non vengono eliminate o rinominate e si esegue nuovamente l'aggiornamento della classe di sottoscrizione, l'aggiornamento non verrà eseguito correttamente, in quanto le tabelle di backup esistono già.

Esempi

Ripristino di sottoscrizioni generate da eventi

L'applicazione di esempio Flight include una classe di sottoscrizione che utilizza regole attivate da eventi per generare le notifiche. Per questa classe di sottoscrizione, tutti i dati delle sottoscrizioni vengono archiviati in una tabella denominata NSFlightSubscriptionsSubscriptions. Se si modifica la classe di sottoscrizione e quindi si aggiorna l'applicazione Flight, Notification Services crea una copia di backup dei dati delle sottoscrizioni denominata NSFlightSubscriptionsSubscriptionsOld.

Quando si scrive una query per copiare i dati dalla copia di backup alla nuova tabella, è necessario conoscere i nomi delle colonne. Per ottenere questi dati, è possibile eseguire le due query seguenti:

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

Conoscendo i nomi delle colonne, è possibile scrivere una query per copiare i dati da NSFlightSubscriptionsSubscriptionsOld a NSFlightSubscriptionsSubscriptions.

Nell'aggiornamento utilizzato per questo esempio, la colonna Carrier nella classe (e regola) di sottoscrizione è stata rinominata in Airline. Questa modifica viene riflessa nella query seguente.

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;

Al termine di questa query, è possibile eliminare o rinominare NSFlightSubscriptionsSubscriptionsOld.

Ripristino di sottoscrizioni pianificate

L'applicazione Weather utilizza sottoscrizioni pianificate. I dati delle sottoscrizioni pianificate sono archiviati in tre tabelle: NSWeatherSubscriptionsSubscription, NSWeatherSubscriptionsSchedules e NSWeatherSubscriptionsTimeZones. Quando la classe di sottoscrizione viene modificata e l'applicazione viene aggiornata, è possibile ripristinare i dati di tali tabelle tramite le query seguenti.

Ripristinare innanzitutto i dati del fuso orario:

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

Ripristinare quindi i dati della pianificazione:

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;

Ripristinare infine i dati delle sottoscrizioni:

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;

Dopo avere verificato che i dati siano stati trasferiti nelle nuove tabelle, è possibile eliminare o rinominare le vecchie tabelle.

Vedere anche

Concetti

Aggiunta di un'applicazione a un'istanza
Rimozione di un'applicazione da un'istanza

Altre risorse

Aggiornamento di istanze e applicazioni
SQL Server Integration Services

Guida in linea e informazioni

Assistenza su SQL Server 2005