Actualizar una aplicación

Después de implementar una instancia de SQL Server Notification Services, es posible actualizar las aplicaciones alojadas por dicha instancia. Una aplicación se actualiza cuando modifica la definición de la aplicación y, después, usa SQL Server Management Studio o el comando nscontrol update para aplicar los cambios.

Para actualizar una aplicación individual, no es necesario detener ni deshabilitar la instancia completa. Puede dejar que las otras aplicaciones alojadas por la instancia se ejecuten. Sin embargo, si también modifica valores de la configuración de la instancia, deberá deshabilitar la instancia completa antes de aplicar la actualización.

Antes de actualizar una aplicación, tenga en cuenta lo siguiente:

  • Si cambia una clase de suscripción en el archivo de definición de aplicación (ADF), Notification Services crea nuevas tablas de suscripciones. Notification Services realiza copias de seguridad de los datos de suscripciones existentes; puede utilizar estas copias de seguridad para restaurar sus datos de suscripciones. Para obtener más información, vea "Restaurar datos de suscripciones" más adelante en este tema.
  • Al actualizar una aplicación, normalmente se eliminan los datos de eventos y notificaciones. Piense en volver a enviar los lotes de eventos que no se hayan procesado antes de la actualización o los lotes de eventos que se hayan procesado durante la actualización de la aplicación.
  • Asegúrese de que cualquier código de la definición de la aplicación que crea un objeto de SQL Server busca y elimina o cambia el nombre de cualquier objeto existente con el mismo nombre. El proceso de actualización no elimina ni cambia el nombre de objetos de SQL Server definidos por el usuario de forma automática; por lo tanto, al eliminar o cambiar el nombre de objetos de SQL Server de forma explícita, se evitan errores de objetos duplicados.
  • Si está utilizando Notification Services Standard Edition y especifica opciones no admitidas por esta versión en la configuración de la instancia o en la definición de la aplicación, el proceso de actualización se detiene sin actualizar la instancia. Para obtener más información, vea Versiones de Notification Services.

Para actualizar una aplicación de notificaciones

Para actualizar una instancia de Notification Services

Restaurar datos de suscripciones

Si modifica una clase de suscripción en el ADF, Notification Services vuelve a crear las tablas de suscripciones durante la actualización. Cuando esto ocurre, Notification Services cambia el nombre de las tablas existentes al agregar "Old" al nombre de la tabla del siguiente modo:

Nombre de la tabla Nombre de la copia de seguridad

NSSubscriptionClassNameSubscriptions

NSSubscriptionClassNameSubscriptionsOld

NSSubscriptionClassNameSchedules (sólo suscripciones programadas)

NSSubscriptionClassNameSchedulesOld (sólo suscripciones programadas)

NSSubscriptionClassNameTimeZones (sólo suscripciones programadas)

NSSubscriptionClassNameTimeZonesOld (sólo suscripciones programadas)

Después de actualizar la aplicación, puede restaurar los datos de suscripciones si copia los datos de las copias de seguridad de las tablas en las tablas nuevas. Una forma de hacer esto es utilizar consultas Transact-SQL para seleccionar datos de las copias de seguridad de las tablas e insertarlos en las tablas nuevas.

Si necesita transformar datos mientras los restaura, por ejemplo, agregar un valor condicional a una columna nueva, considere la posibilidad de utilizar SQL Server 2005 Integration Services (SSIS) (SSIS) para mover los datos entre tablas.

Después de comprobar los datos de suscripciones restaurados, debería eliminar las copias de seguridad de las tablas o cambiarles el nombre. Si las deja y, a continuación, vuelve a actualizar la clase de suscripción, se produce un error en la actualización debido a que las copias de seguridad de las tablas ya existen.

Ejemplos

Restaurar suscripciones desencadenadas por eventos

La aplicación de ejemplo Flight tiene una clase de suscripción que utiliza reglas desencadenadas por eventos para generar notificaciones. En esta clase de suscripción, todos los datos de suscripciones se almacenan en una tabla denominada NSFlightSubscriptionsSubscriptions. Si cambia la clase de suscripción y, a continuación, actualiza la aplicación Flight, Notification Services crea una copia de seguridad de los datos de suscripciones en una tabla denominada NSFlightSubscriptionsSubscriptionsOld.

Al escribir una consulta para copiar los datos de la copia de seguridad en la tabla nueva, es necesario conocer los nombres de las columnas. Puede obtener estos datos si ejecuta las dos consultas siguientes:

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

Cuando conozca los nombres de las columnas, puede escribir una consulta para copiar datos de NSFlightSubscriptionsSubscriptionsOld en NSFlightSubscriptionsSubscriptions.

En la actualización utilizada para este ejemplo, se cambió el nombre de la columna Carrier de la clase de suscripción (y la regla) por Airline. Este cambio se refleja en la consulta siguiente.

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;

Cuando esta consulta finalice correctamente, puede eliminar NSFlightSubscriptionsSubscriptionsOld o cambiarle el nombre.

Restaurar suscripciones programadas

Una aplicación Weather utiliza suscripciones programadas. Los datos de la suscripción programada se almacenan en tres tablas: NSWeatherSubscriptionsSubscription, NSWeatherSubscriptionsSchedules y NSWeatherSubscriptionsTimeZones. Cada vez que se modifica la clase de suscripción y se actualiza la aplicación, es posible restaurar los datos de estas tablas mediante las consultas siguientes.

Primero, restaure los datos de zona horaria:

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

A continuación, restaure los datos de programación:

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;

Por último, restaure los datos de suscripción:

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;

Tras comprobar que los datos se han transferido a las tablas nuevas, puede eliminar las tablas antiguas o cambiarles el nombre.

Vea también

Conceptos

Agregar una aplicación a una instancia
Quitar una aplicación de una instancia

Otros recursos

Actualizar instancias y aplicaciones
SQL Server Integration Services

Ayuda e información

Obtener ayuda sobre SQL Server 2005