先日、SQL Server 2005 SP4 が提供されました。
Microsoft SQL Server 2005 Service Pack 4 RTM
Windows Server 2008 のクラスタ環境にインストールした SQL Server 2005 にサービスパックを適用する場合には注意点がありますのでまとめてみたいと思います。
# 2008 以外でも発生するかもしれません。(2003 では発生しなかった気もするのですが)
SQL Server 2005 のメインストリームサポート終了日が [2011/04/12] と半年を切っており最新のサービスパック適用の機会があるかもしれないので軽く書いておこうかと。
今回は SP4 を対象としてまとめていますが、SP1 ~ SP3 , Cumulative Update に関しても同様の手順が必要になります。
# CU に関しては、発生するかは更新内容によって変わると思うのですが。
クラスタ環境で SQL Server 2005 のサービスパックをインストールする場合は、SQL Server のリソースを保持しているノードでサービスパックのインストールを実行します。
SQL Server のリソースを保持していないノードでサービスパックのインストールを実行しても、[MSSQLSERVER] (SQL Server ノーサービスコンポーネント) は選択をすることができません。
クラスタ環境の SQL Server 2005 でサービスパックをインストールすると [データベース サービス] のインストールで失敗する場合があります。
インストールの失敗ですが以下の技術情報が該当します。
An error message is logged in the Summary.txt file when a SQL Server 2005 service pack, cumulative update or cluster hotfix installation fails: "The Transaction Manager is not available"
SQL Server 2005 のサービスパックのインストールログですが以下のディレクトリに出力されます。
[C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfix]
このディレクトリの中に、[Summary.txt] がありますので、このファイルの内容を確認してみます。
Product Installation Status Product : セットアップ サポート ファイル Product Version (Previous): 4035 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_SqlSupport.msi.log Error Number : 0 Error Description : ———————————————————————————- Product : データベース サービス (MSSQLSERVER) Product Version (Previous): 4311 Product Version (Final) : Status : 失敗 Log File : Error Number : 11009 Error Description : 正常に修正プログラムが適用されたパッシブ ノードはありません ———————————————————————————- Product : SQL Server Native Client Product Version (Previous): 4035 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_sqlncli.msi.log Error Number : 0 Error Description : ———————————————————————————- Product : クライアント コンポーネント Product Version (Previous): 4311 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixSQLTools9_Hotfix_KB2463332_sqlrun_tools.msp.log Error Number : 0 Error Description : ———————————————————————————- Product : SQLXML4 Product Version (Previous): 4035 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_sqlxml4.msi.log Error Number 
0; : 0 Error Description : ———————————————————————————- Product : 旧バージョンとの互換性 Product Version (Previous): 2312 Product Version (Final) : Status : 未選択 Log File : Error Description : ———————————————————————————- Product : Microsoft SQL Server VSS Writer Product Version (Previous): 4035 Product Version (Final) : Status : 処理中 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_SqlWriter.msi.log Error Number : 0 Error Description : ———————————————————————————-
|
データベース サービスで [正常に修正プログラムが適用されたパッシブ ノードはありません] のエラーが出力されています。
このログは [アクティブ ノード] (SQL Server のリソースを持っているノード) のログになりますので、パッシブ ノードでもログを確認してみたいと思います。
# ログはアクティブ ノードと同じディレクトリに出力されています。
Product Installation Status Product : セットアップ サポート ファイル Product Version (Previous): 4035 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_SqlSupport.msi.log Error Number : 0 Error Description : ———————————————————————————- Product : データベース サービス (MSSQLSERVER) Product Version (Previous): 4311 Product Version (Final) : 5000 Status : 要再起動 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixSQL9_Hotfix_KB2463332_sqlrun_sql.msp.log Error Number : 3010 Error Description : ———————————————————————————- Product : SQL Server Native Client Product Version (Previous): 4035 Product Version (Final) : 5000 Status : 成功 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_sqlncli.msi.log Error Number : 0 Error Description : ———————————————————————————- Product : クライアント コンポーネント Product Version (Previous): 4311 Product Version (Final) : Status : 失敗 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixSQLTools9_Hotfix_KB2463332_sqlrun_tools.msp.log Error Number : 29549 Error Description : MSP Error: 29549 COM+ カタログにアセンブリ C:Program FilesMicrosoft SQL Server90NotificationServices9.0.242Binmicrosoft.sqlserver.notificationservices.dll をインストールして構成できませんでした。エラー: -2146233087 エラー メッセージ: Unknown error 0x80131501 エラーの説明: トランザクション マネージャは利用できません。 (HRESULT からの例外: 0x8004D01B) ———————————————————————————- Product : SQLXML4 Product Version (Previous): 4035 Product Version (Final) : Status : 失敗 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_sqlxml4.msi.log Error Number : 2 Error Description : Windows インストーラ MSI ファイルをインストールできません ———————————————————————————- Product  
; : 旧バージョンとの互換性 Product Version (Previous): 2312 Product Version (Final) : Status : 未選択 Log File : Error Number : 0 Error Description : ———————————————————————————- Product : Microsoft SQL Server VSS Writer Product Version (Previous): 4035 Product Version (Final) : Status : 失敗 Log File : C:Program FilesMicrosoft SQL Server90Setup BootstrapLOGHotfixRedist9_Hotfix_KB2463332_SqlWriter.msi.log Error Number : 2 Error Description : Windows インストーラ MSI ファイルをインストールできません ———————————————————————————-
|
今回の現象ですが、パッシブ ノードで [データベース サービス] のサービスパック適用に失敗しているのではなく、[クライアント コンポーネント] に対してのサービスパック適用で失敗しています。
この現象ですが、[クラスタの MSDTC のリソースをクライアント コンポーネントの適用が実行されているノードが所有していない] と発生します。
失敗した時のリソースの配置状況は以下のようにしていました。
DTC と SQL Server のリソースを [2008-CLS-01] というサーバーで所有させていました。
この状態でサービスパックを適用したため今回の現象が発生していました。
■Windows Server 2008 のクラスタ環境に SQL Server 2005 のサービスパックを適用
ここからが本題で適用するための手順になります。
まずはクラスタのリソースを以下のように配置します。
[2008-CLS-01] でサービスパックのインストーラーを起動するため、SQL Server のリソースは [2008-CLS-01] に配置しています。
DTC のリソースは [2008-CLS-02] (SQL Server から見てパッシブ となっているノード) に配置しています。
この状態でサービスパックのインストーラーを実行します。
- [次へ] をクリックします。
- [同意する] を選択して、[次へ] をクリックします。
- 適応するコンポーネントを選択して、[次へ] をクリックします。
- リモート ユーザーのアカウント情報を入力し、[次へ] をクリックします。
パッシブ ノード側ではここで指定したアカウントを使用してサービスパックの適用が実施されます。
- [次へ] をクリックします。
- [次へ] をクリックします。
- [インストール] をクリックして、インストールを開始します。
インストールをクリックするとパッシブ ノードのタスク スケジューラに [SqlNodeInstall] といタスクが作成され、パッシブ ノードでサービスパックのインストールが開始されます。
このタスクを使用して、インストーラー実行時にパッシブノードの [C:UpdateTemp] にコピーされたサービスパックのプログラムが実行されます。
パッシブ ノードのタスクマネージャーを確認すると [msiexec.exe] や [hotfix.exe] が起動されていることが確認できます。
インストールを開始してしばらくしているとパッシブ ノードで以下のダイアログが表示されます。
# パッシブ ノードにサービスパックのインストール時に指定したアカウントでログオンしておく必要があります。
Windows Server 2008 + SQL Server 2005 の場合、VS 2005 がプログラム互換性アシスタントの警告対象となります。
DTC をパッシブ ノードで実行している場合は、このダイアログが表示できるのですが、アクティブ ノードで DTC を実行している場合はこのダイアログが表示されません。
そのため、クライアント コンポーネントのアップデートができずにエラーとなってしまうようです。
クライアント コンポーネントはアクティブ / パッシブのノード両方でインストールする必要があります。
そのため、アクティブ ノードでクライアントコンポーネントのアップデートが実行される際には、DTC のリソースはアクティブ ノードで実行しておく必要があります。
上記のダイアログがパッシブ ノードで表示されたら、クラスターの管理コンソールを開き、リソースの配置を以下の用に変更しておきます。
# DTC のリソースを [2008-CLS-02] → [2008-CLS-01] に移動しました。
DTC の配置が終わったら、[プログラムを実行する] をクリックします。
# アクティブ ノードでクライアントコンポーネントの適用が実行される前までに DTC のリソースを移動しておけば問題ありません。
パッシブ ノードでインストールが終了すると、アクティブ ノードでインストールがされます。
アクティブ ノードでも [クライアント コンポーネント] のインストールが実行されるタイミングで、プログラム互換性アシスタントのダイアログが表示されますので、[プログラムを実行する] をクリックします。
# アクティブ ノードで DTC のリソースが実行されていないと今度はアクティブ ノードでインストールが失敗します。
この手順でインストールをするとサービスパックの適用が正常に完了します。
SQL Server 2005 のサービスパックをクラスタ環境に適用する場合はクラスタの DTC リソースの配置状況に注意する必要があります。
この現象ですが、[クライアント コンポーネント] の更新が入らない場合は発生しないので、CU の適用時にはクライアントコンポーネントが更新対象として含まれていなければ失敗はしないと思います。