如何将 Notification Services 2.0 实例迁移到 SQL Server 2005(命令提示符)

更新日期: 2006 年 4 月 14 日

如果现有的 Notification Services 2.0 实例在 Microsoft SQL Server 2000 上运行,则可以将此实例升级到 Microsoft SQL Server 2005。若要执行升级,必须升级数据库和 Notification Services 实例。以下过程显示如何使用命令提示实用工具升级实例。

ms143519.note(zh-cn,SQL.90).gif重要提示:
Notification Services 实例可以在许多不同配置下部署。请使用下列过程作为开发和测试您自己的迁移过程的指南。

升级服务器之前的准备工作

  1. 在注册实例的一个服务器上,使用 nscontrol 命令提示实用工具的 Notification Services 2.0 版本禁用 Notification Services 实例:

    1. 在**“开始”菜单上,依次指向“所有程序”Microsoft SQL Server 2005“配置工具”,再单击“Notification Services 命令提示”**。
    2. 键入以下命令,禁用实例:
      nscontrol disable -nameinstance_name
  2. 在每个运行 NS$instanceName Windows 服务的服务器上,停止该服务:

    1. 打开 Notification Services 2.0 命令提示符窗口,键入以下命令以停止实例:
      **net stop NS$**instanceName
  3. 在每个具有事件提供程序、生成器、分发服务器或订阅管理界面的服务器上,撤消注册该实例。

    1. 在打开的 Notification Services 命令提示窗口中键入以下内容:
      nscontrol unregister -nameinstance_name
    2. 关闭命令提示窗口。

升级数据库引擎并安装 Notification Services

  1. 使用 SQL Server 2005 安装程序,将数据库引擎从 SQL Server 2000 升级到 SQL Server 2005。有关详细信息,请参阅升级数据库引擎

  2. 在每个运行事件提供程序、生成器、分发服务器或订阅管理界面的服务器上,安装 SQL Server 2005 Notification Services。

    如果 Notification Services 和数据库位于同一台服务器上,则可以同时升级数据库并安装 Notification Services。

    在升级过程中 Notification Services 2.0 的安装不更改。

迁移 Notification Services 实例

  1. 在每个以前注册过此实例的服务器上注册此实例:

    1. 在**“开始”菜单上,依次指向“所有程序”Microsoft SQL Server 2005“配置工具”,再单击“Notification Services 命令提示”**。
    2. 使用 nscontrol register 命令注册此实例。以下命令显示如何注册此实例并创建使用 Windows 身份验证连接到数据库服务器的 Windows 服务:
      nscontrol register -nameinstanceName-serverdatabaseServer -service****-serviceusername** username -servicepassword password
      有关详细信息,请键入 nscontrol register -? 或参阅 nscontrol register 命令
  2. 在服务器上键入以下命令,修复实例元数据:

    nscontrol repair -nameinstance_name-databaseinstanceDatabaseName-schemainstanceDatabaseSchema

  3. 键入以下命令,升级实例和应用程序数据:

    nscontrol upgrade -nameinstanceName

  4. 为实例承载的每个应用程序修改应用程序定义文件 (ADF) 中的通知生成规则。

    • 修改所有使用 Notify() 函数的通知生成规则,以使用 INSERT INTO 语法。例如,更改下面的 Notification Services 2.0 规则:

      SELECT dbo.FlightNotificationsNotify(S.SubscriberId, 
      S.DeviceName, S.SubscriberLocale, E.Carrier, E.LeavingFrom, 
      E.GoingTo, E.Price, E.Conditions)
          FROM FlightEvents E, FlightSubscriptions S
          WHERE E.LeavingFrom = S.LeavingFrom
          AND E.GoingTo = S.GoingTo
          AND ( (E.Carrier = S.Carrier) OR (S.Carrier = '*') )
          AND E.Price < S.Price
      

      将其更改为下面的语法,该语法不再使用 Notify() 函数,而是选择数据,将其插入到与通知类同名的视图 (FlightNotifications):

      INSERT INTO FlightNotifications(SubscriberId, DeviceName, 
      SubscriberLocale, Carrier, LeavingFrom, GoingTo, Price, 
      Conditions)
      SELECT S.SubscriberId, S.DeviceName, S.SubscriberLocale, 
      E.Carrier, E.LeavingFrom, E.GoingTo, E.Price, E.Conditions
          FROM FlightEvents E, FlightSubscriptions S
          WHERE E.LeavingFrom = S.LeavingFrom
          AND E.GoingTo = S.GoingTo
          AND ( (E.Carrier = S.Carrier) OR (S.Carrier = '*') )
          AND E.Price < S.Price
      
    • 修改 ADF 和 ICF 中的版本号。(可选)

    • 如果移动了该实例,请更新 ADF 中的 SystemName 值和 ICF 中的 SqlServerSystem 值。这些值可能为参数,这意味着这些值位于 ParameterDefaults 节点中,或者在创建实例时提供。

  5. 键入以下命令,更新 Notification Services 的实例:

    nscontrol update -inICFPath\ICFName.xml

    具体的参数因身份验证模式的不同而异。

  6. 键入以下命令,启用 Notification Services 的实例:

    nscontrol enable -nameinstanceName

    具体的参数因身份验证模式的不同而异。

  7. 将任何自定义组件替换为使用 SQL Server 2005 程序集和 Microsoft .NET Framework 2.0 编译的新组件。

  8. 如果使用的是 COM interop,请重新注册核心 Notification Services 程序集。有关详细信息,请参阅如何为 COM Interop 注册核心 Notification Services 程序集

  9. 准备好启动实例时,在每个运行 Notification Services 引擎组件的服务器上键入以下命令:

    **net start NS$**instanceName

请参阅

任务

将 Notification Services 2.0 实例迁移到 SQL Server 2005
如何将 Notification Services 2.0 实例迁移到 SQL Server 2005 (SQL Server Management Studio)

其他资源

nscontrol 实用工具

帮助和信息

获取 SQL Server 2005 帮助