다음을 통해 공유


응용 프로그램 업데이트

SQL Server Notification Services 인스턴스를 배포한 후에 해당 인스턴스가 호스팅하는 응용 프로그램을 업데이트할 수 있습니다. 응용 프로그램 정의를 수정한 후 SQL Server Management Studio 또는 nscontrol update 명령을 통해 변경 내용을 적용하여 응용 프로그램을 업데이트합니다.

단일 응용 프로그램을 업데이트하기 위해 전체 인스턴스를 중지하거나 비활성화할 필요가 없습니다. 즉, 인스턴스에서 호스팅하는 다른 응용 프로그램은 계속 실행할 수 있습니다. 그러나 인스턴스 구성의 값도 변경하는 경우 업데이트를 적용하기 전에 전체 인스턴스를 해제해야 합니다.

응용 프로그램을 업데이트하기 전에 다음 사항을 고려하십시오.

  • ADF(응용 프로그램 구성 파일)에서 구독 클래스를 변경하면 Notification Services는 새 구독 테이블을 만듭니다. 또한 Notification Services는 기존 구독 데이터를 백업합니다. 따라서 이러한 백업을 사용하여 구독 데이터를 복원할 수 있습니다. 자세한 내용은 아래의 "구독 데이터 복원"을 참조하십시오.
  • 일반적으로 응용 프로그램을 업데이트하면 이벤트 및 알림 데이터가 삭제됩니다. 업데이트하기 전에 처리되지 않은 이벤트의 일괄 처리나 응용 프로그램 업데이트 중에 처리될 수 있는 이벤트의 일괄 처리를 다시 전송하도록 계획을 세웁니다.
  • SQL Server 개체를 만드는 응용 프로그램 정의의 모든 코드에서 이름이 같은 기존 개체가 있는지 확인한 후 해당 개체를 삭제하거나 이름을 바꾸는지 확인합니다. 업데이트 프로세스는 사용자 정의 SQL Server 개체를 자동으로 삭제하거나 이름을 바꾸지 않으므로 SQL Server 개체를 명시적으로 삭제하거나 이름을 바꾸어 개체 중복 오류를 피하십시오.
  • Notification Services Standard Edition을 사용하는 경우 인스턴스 구성 또는 응용 프로그램 구성에서 Standard Edition이 지원하지 않는 옵션을 지정하면 인스턴스가 업데이트되지 않고 업데이트 프로세스가 중지됩니다. 자세한 내용은 Notification Services 버전을 참조하십시오.

알림 응용 프로그램을 업데이트하려면 다음 항목을 참조하십시오.

Notification Services 인스턴스를 업데이트하려면 다음 항목을 참조하십시오.

구독 데이터 복원

ADF에서 구독 클래스를 변경하면 Notification Services는 업데이트 중에 구독 테이블을 다시 만듭니다. 이 경우 Notification Services는 다음과 같이 테이블 이름에 "Old"를 붙여 기존 테이블의 이름을 바꿉니다.

테이블 이름 백업 이름

NSSubscriptionClassNameSubscriptions

NSSubscriptionClassNameSubscriptionsOld

NSSubscriptionClassNameSchedules (예약된 구독만 해당)

NSSubscriptionClassNameSchedulesOld (예약된 구독만 해당)

NSSubscriptionClassNameTimeZones(예약된 구독만 해당)

NSSubscriptionClassNameTimeZonesOld(예약된 구독만 해당)

응용 프로그램을 업데이트한 후에 백업 테이블의 데이터를 새 테이블로 복사하여 구독 테이블을 복원할 수 있습니다. 이 작업을 수행하는 한 가지 방법은 백업 테이블의 데이터를 선택한 후 새 테이블에 삽입하는 Transact-SQL 쿼리를 사용하는 것입니다.

복원 중에 데이터를 변환해야 할 경우(예: 새 열에 조건 값 추가) SQL Server 2005 Integration Services(SSIS)(SSIS)를 사용하여 테이블 간에 데이터를 이동하십시오.

복원된 구독 데이터를 확인한 후에는 백업 테이블을 삭제하거나 이름을 바꾸어야 합니다. 테이블을 그대로 두고 구독 클래스를 나중에 다시 업데이트하면 백업 테이블이 이미 존재하므로 업데이트가 실패합니다.

이벤트 트리거 구독 복원

Flight 예제 응용 프로그램에는 이벤트 트리거 규칙을 사용하여 알림을 생성하는 구독 클래스가 있습니다. 이 구독 클래스에서 모든 구독 데이터는 이름이 NSFlightSubscriptionsSubscriptions인 테이블에 저장됩니다. 구독 클래스를 변경한 후에 Flight 응용 프로그램을 업데이트하면 Notification Services는 이름이 NSFlightSubscriptionsSubscriptionsOld인 테이블에 구독 데이터의 백업을 만듭니다.

백업의 데이터를 새 테이블로 복사하는 쿼리를 작성할 때는 열 이름을 알아야 합니다. 다음의 두 쿼리를 실행하여 이 데이터를 가져올 수 있습니다.

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

열 이름을 알 경우 NSFlightSubscriptionsSubscriptionsOld의 데이터를 NSFlightSubscriptionsSubscriptions로 복사하는 쿼리를 작성할 수 있습니다.

이 예에 사용된 업데이트에서는 구독 클래스 및 규칙의 Carrier 열 이름이 Airline으로 바뀌었습니다. 이 변경 내용은 아래 쿼리에 반영됩니다.

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;

이 쿼리가 성공적으로 완료되면 NSFlightSubscriptionsSubscriptionsOld를 삭제하거나 이름을 바꿀 수 있습니다.

예약 구독 복원

Weather 응용 프로그램은 예약 구독을 사용합니다. 예약 구독 데이터는 NSWeatherSubscriptionsSubscription, NSWeatherSubscriptionsSchedulesNSWeatherSubscriptionsTimeZones의 세 테이블에 저장됩니다. 구독 클래스를 수정한 후 응용 프로그램을 업데이트할 때마다 다음 쿼리를 사용하여 이러한 테이블의 데이터를 복원할 수 있습니다.

먼저 표준 시간대 데이터를 복원합니다.

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

다음에는 일정 데이터를 복원합니다.

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;

마지막으로 구독 데이터를 복원합니다.

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;

데이터가 새 테이블로 전송되었는지 확인한 후에 이전 테이블을 삭제하거나 이름을 바꿀 수 있습니다.

참고 항목

개념

인스턴스에 응용 프로그램 추가
인스턴스에서 응용 프로그램 제거

관련 자료

인스턴스 및 응용 프로그램 업데이트
SQL Server Integration Services

도움말 및 정보

SQL Server 2005 지원 받기