nscontrol update 命令

更新日期: 2005 年 12 月 5 日

更新 SQL Server Notification Services 现有实例的实例数据库和应用程序数据库。

语法

nscontrol update 
    [-nologo]
    [-help]
        -in configFile
    [-verbose] 
    [-force] 
    [-sqlusername sqlUserName -sqlpassword sqlPassword] 
    [-argumentkey key]
    [-timeout seconds]
    [param=value ...]

参数

  • -nologo
    取消运行 nscontrol 命令时显示的产品和版本声明。
  • -help
    显示命令的语法。
  • -inconfigFile
    定义实例的实例配置文件 (ICF) 的路径和文件名。如果该文件位于当前目录,则无需提供路径。
  • -verbose
    如果在 ICF 和应用程序定义文件 (ADF) 中发现某些信息已经更改,则显示所有这些信息。这对调试或准确了解 nscontrol update 将执行的操作非常有用。
  • -force
    NSControl Update 显示了将要执行的操作之后,强制该命令继续执行,而不发出审批提示。
  • -sqlusernamesqlUserName
    用于连接到 SQL Server 的 SQL Server 登录名。

    ms162829.note(zh-cn,SQL.90).gif重要提示:
    Windows 身份验证比 SQL Server 身份验证更加安全。应该尽可能使用 Windows 身份验证。

    如果使用 SQL Server 身份验证连接到 SQL Server,则必须同时指定 -sqlusername-sqlpassword 参数。

    如果使用的是 Windows 身份验证,则无需指定 -sqlusername-sqlpassword 参数。

  • -sqlpasswordsqlPassword
    -sqlusername 登录名相关联的密码。应仅在使用 SQL Server 身份验证进行连接时指定密码。
  • -argumentkeykey
    使用 nscontrol registernscontrol create 指定的同一注册表项值。如果 ICF 中的 EncryptArguments 值为 true,则需要使用此参数。nscontrol update 命令可以解密参数值,以查看该注册表项是否使用了 nscontrol create 指定的同一个注册表项。如果注册表项值相同,则继续更新。创建了实例后,将无法更改该注册表项。
  • -超时 seconds
    完成每个更新操作(如创建或删除索引)的超时时间(秒)。默认超时时间为 30 秒。如果任何单个操作所用的时间都可能超过 30 秒,则可以设置一个较长的超时值。
  • param=value
    用于通过命令提示符向配置文件传递参数的“名称/值”对。

    如果配置文件包含可替换参数(如 %DBSystem%),则在命令提示符下指定参数名称和值。例如,如果配置文件中包含下列 XML 代码:

    <SqlServerSystem>%DBSystem%</SqlServerSystem>
    

    按如下方式使用 nscontrol update 指定名称和值:

    nscontrol create -in config.xml DBSystem=MySQLServer
    

    在命令提示符下提供的参数值应用于 ICF 中的参数,但不应用于 ADF 中的参数。若要将参数值传递给 ADF,请将 Parameters 子部分添加到配置文件中的 Application 部分。可以使用可替换参数作为该节点中的值。可以在命令提示符下提供这些参数的值。

    除了在命令提示符下指定参数以外,还可以在 ICF 中使用环境变量,如 %COMPUTERNAME%。如果在 ICF 中使用环境变量,请注意,具有相同名称的命令提示符名称/值对优先于环境变量。

备注

nscontrol update 命令将 ICF 和 ADF 中的 XML 与数据库进行比较。对于每个有效更改,nscontrol update 将按照 XML 文件中的指定设置更新数据库。

并非 ICF 和 ADF 中的所有元素都可以更新。这些文件中的有些元素指定了一些选项,如果不将实例删除并重新创建,将无法更改这些选项。有关详细信息,请参阅Instance Configuration File ReferenceApplication Definition File Reference部分。每个主题都包含一个更新行,指示字段是否可以更新。

ms162829.note(zh-cn,SQL.90).gif重要提示:
我们极力建议您在更新实例之前备份实例和应用程序数据库。更新操作可能会中途失败。如果出现这种情况,实例和应用程序可能处于不一致状态,这意味着实例和应用程序可能不可操作,且可能丢失数据。
ms162829.note(zh-cn,SQL.90).gif注意:
在运行 nscontrol update 之前,请检查所有 ADF 和 ICF 以降低错误风险。如果文件真的出错,请先修复文件,再重新运行 nscontrol update

如果使用了 Notification Services Standard Edition,并在 ADF 中指定 Standard Edition 不支持的选项,则 nscontrol update 将停止,而不更新实例。

如果更改 ADF 中的订阅类元数据,nscontrol update 会将现有的订阅类表 NS<*subscription_class>*Subscriptions 重命名为 NS<*subscription_class>*SubscriptionsOld,以保存订阅数据。以后更新同一个订阅类时,如果 NS<*subscription_class>*SubscriptionsOld 仍然存在,则 nscontrol update 重命名该表时会失败。有关详细信息,请参阅更新应用程序

如果 ADF 中的事件类或通知类发生变化,nscontrol update 将删除这些类现有的表。

在执行更新时,nscontrol update 命令通常会显示对 ICF 和 ADF 的所有更改。但是,如果实例使用了参数加密,则 nscontrol update 将不显示加密后的参数。

更新实例前,请确保创建了表、视图、索引或其他 SQL Server 对象的任何代码检查并删除(或重命名)了所有同名的现有对象。这一点非常重要,因为 nscontrol update 不会自动删除同名的现有用户定义 SQL Server 对象。通过显式删除或重命名 SQL Server 对象,可以避免重复对象错误。有关详细信息,请参阅定义事件历史记录表

权限

用于运行 nscontrol update 的帐户或在 -sqlusername 参数中指定的 SQL Server 登录名,必须是 nscontrol update 命令影响到的所有实例数据库和应用程序数据库中的 db_owner 数据库角色的成员,或者必须是 sysadmin 固定服务器角色的成员。

该帐户还必须拥有执行 Notification Services 二进制文件的权限;Administrators 和 SQLServerNotificationServicesUser Windows 组的成员会被授予该权限。

示例

以下示例阐释了如何更新实例。

A. 更新实例,查看所有差异

此示例显示了如何使用 ICF 命名的 InstanceConfig.xml 来更新实例。nscontrol update 命令可以显示已更新的配置文件和 ADF 中的所有差异。在继续更新之前,系统将会提示您回答 yesno

nscontrol 命令使用 Windows 身份验证连接到 SQL Server。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -verbose

B. 在 ICF 包含参数时更新实例

此示例阐释了如何在更新实例时为 BaseDirectoryPathNSHostSqlServer 参数提供值。nscontrol 命令使用 Windows 身份验证连接到 SQL Server。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    BaseDirectoryPath=C:\NS\Samples\Stock NSHost=nsuetest 
    SqlServer=nsuetest

C. 在使用参数加密时更新实例

此实例阐释了如何在使用参数加密时更新实例。nscontrol 命令使用 Windows 身份验证连接到 SQL Server。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -argumentkey "MyArgumentKey"

D. 强制执行无提示更新

此示例阐释了如何更新实例而不提示审批更新。nscontrol 命令使用 Windows 身份验证连接到 SQL Server。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" -force

E. 使用 SQL Server 身份验证更新实例

ms162829.note(zh-cn,SQL.90).gif重要提示:
请尽可能使用 Windows 身份验证。

此示例阐释了如何使用 SQL Server 身份验证连接到 SQL Server 来更新实例。nscontrol update 命令可以显示已更新配置文件和 ADF 中的所有差异。在继续更新之前,系统将会提示您回答 yesno

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -sqlusername SqlUser -sqlpassword sQl-P@sWd

请参阅

参考

nscontrol 实用工具

其他资源

更新实例和应用程序
EncryptArguments Element (ICF)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了有关 SQLServerNotificationServicesUser Windows 组的信息。