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) 之後,顯示 ICF 和 ADF 中所有已變更的資訊。在進行偵錯或確實瞭解 nscontrol update 將執行哪些動作等方面,這非常有用。
  • -force
    在顯示將發生的動作之後,強制 nscontrol update 不發出核准提示,直接繼續作業。
  • -sqlusernamesqlUserName
    這是用來連接 SQL Server 的 SQL Server 登入。

    ms162829.note(zh-tw,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 所指定的金鑰相同。如果金鑰值相同,便會繼續更新。建立好執行個體之後,就無法再變更金鑰。
  • -timeout seconds
    這是完成各項更新動作 (如建立或移除索引) 的逾時值 (以秒為單位)。預設的逾時值是 30 秒。如果有任何單一動作可能需要超出 30 秒,請設定較大的逾時值。
  • param=value
    這是在命令提示字元之下,用來將參數值傳給組態檔的名稱/值組。

    如果組態檔包含可取代的參數 (如 %DBSystem%),請在命令提示字元中指定參數名稱和值。例如,如果組態檔包含下列 XML:

    <SqlServerSystem>%DBSystem%</SqlServerSystem>
    

    請依照下列方式,利用 nscontrol update 來指定名稱和值:

    nscontrol create -in config.xml DBSystem=MySQLServer
    

    ICF 中的參數會套用您在命令提示字元之下提供的參數值,但 ADF 中的參數不會套用這些參數值。若要將參數值傳給 ADF,請在組態檔的 Application 區段中加入 Parameters 子區段。您可以利用可取代的參數來作為這個節點內的值。您可以在命令提示字元之下提供這些參數的值。

    除了在命令提示字元之下指定參數,您也可以在 ICF 中使用環境變數,如 %COMPUTERNAME%。如果您在 ICF 中使用環境變數,請注意,在命令提示字元之下同名的名稱/值組比環境變數優先。

備註

nscontrol update 命令會比較資料庫與 ICF 和 ADF 中的 XML。對於每一項有效的變更,nscontrol update 都會依照 XML 檔所指定來更新資料庫。

ICF 和 ADF 中的元素並非全部都能更新。這些檔案中的部份元素會指定一些「在沒有刪除和重新建立執行個體的情況下,便無法變更」的選項。如需詳細資訊,請檢閱<Instance Configuration File Reference>和<Application Definition File Reference>這兩節。每個主題都包含一個 Updates 資料列,指出欄位是否可以更新。

ms162829.note(zh-tw,SQL.90).gif重要事項:
強烈建議您先備份執行個體和應用程式資料庫,再更新執行個體。更新作業有可能在完成之前失敗。如果發生這個情況,執行個體和應用程式資料庫可能會停留在不一致的狀態中,這表示執行個體和應用程式可能無法運作,資料可能會遺失。
ms162829.note(zh-tw,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,來儲存訂閱資料。如果您後來又更新相同的訂閱類別,當 nscontrol update 嘗試重新命名資料表時,如果 NS<*subscription_class>*SubscriptionsOld 仍存在,重新命名會失敗。如需詳細資訊,請參閱<更新應用程式>。

如果 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. 更新執行個體,檢視所有差異

這個範例會顯示如何利用名稱為 InstanceConfig.xml 的 ICF 來更新執行個體。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-tw,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 群組的資訊。