WhitePotageのブログ

ミント菓子はかっらーいのがイイんだよねと思っている人

昔の○○奉行をインストールしたかったからSQL Server 2008 R2 SP1をスリップストリーム

パッケージソフトにSQL Serverが同梱されていることがあります。
たとえば○○奉行とか。 奉行ネットワーク版とか。 特に恨みはありませんが奉行とか。
そういう場合、インストールという行為はSQL Serverをインストールすると同時に、アプリケーションの動作に必要な一切をダバァァァと自動構築して戴く行為なわけで、エンドユーザーに介入の機会はありません。
なので、インストールメディアに同梱されているSQL Serverが大層古くてサービスパックが当たっていないとしても、セットアッププログラムを取り替えるわけにはゆかんのです。

困るじゃん…。
だって。 Windows Server 2008 R2 SP1以降の新しいサーバーに対して、SQL Server 2008 R2の初期バージョンは新規インストールできないのよ奥様。
あらかじめSP1の適用されたメディアがないと、インストールが失敗するんですのよ。

そんなこと言われたってぇ…orz
新しいサーバーに古い奉行をインストールししたい時だって、あるじゃない…。

というわけで、奉行(まだ言うか)のインストールメディアを改訂してみました。
要は、奉行の全自動構築処理を損なわないまま、セットアッププログラム進行中にキックされる SQL Server インストーラーがサービスパック適用状態になっていればいいんでしょ。
これを実現するには、該当フォルダの中身を改廃し、SP1以降でサポートされる「スリップストリーム方式によるインストール」の状態にします。

SQL Server 2008 に関しては、公式のサイトに 完璧なまとめ があったので、別にブログすることもないわーと思ったのですが、今回実行したかった SQL Server 2008 "R2" では若干フォルダが異なったりしたので、一応メモっておくことにしました。
モチロン、奉行でなくても単体のSQL Server 2008 R2をインストールしたい場合にも有効です。

このブログが適応する事例

もし、SQL Server 2008 R2を Windows Server 2008 R2以降に新規インストールしようとしていて、SP1適用済みのイメージを入手できない環境で、下記のようなエラーで失敗してしまう場合は、後述の方法で修正できます。

エラーその1
 SQL Server 2008 R2 Standard Editionのセットアップ中にエラーが発生しました。
 Exit Code (Decimal) : -595541211
 Exit facility code : 1152
 Exit error code : 49957
 Requested action : install

エラーその2
 SQL Server 2008 R2 Standard Editionのセットアップ中にエラーが発生しました。
 Exit Code (Decimal) ; -2068119551
 Exit Facility code : 1211
 Exit error code : 1
 Requested action : install
 Configuration error code : 0xD3BEBD98@1211@1
 Configuration error description: 1つ以上のコマンドラインスイッチが無効です

修正方法(インストールフォルダの改廃)

この改廃により、無印のインストールメディアにSP1を設置し、「インストールとSP適用が同時に行われる」状態にします。

1.準備
  • メディア一式をサーバー内のHDDに全部コピー
    ここでは便宜上、「c:\bugyo」とします。別に恨みはない。
    メディアを全部コピーしたなら、「c:\bugyo\SQLSETUP」が SQL Serverのセットアップフォルダです。
    俺は奉行じゃないぞー、という場合は、元々のセットアップフォルダに読み替えて。

  • SQL Server 2008 R2 SP1のダウンロード -> c:\bugyo\sp1
    下記3点をダウンロード。 使わなくても必ずダウンロード。(らしい。)
    日本語環境じゃないOSなら、末尾の国コードをそれなりに変更して。
    SQLServer2008R2SP1-KB2528583-IA64-JPN.exe
    SQLServer2008R2SP1-KB2528583-x64-JPN.exe
    SQLServer2008R2SP1-KB2528583-x86-JPN.exe

  • このサーバー用のファイルを展開し、セットアップサポートファイルを導入
    スリップストリーム方式はSP1以降の機能なので、SP1のセットアップサポートファイルがあらかじめインストールされた状態にします。
    先の3ファイルのうち、赤文字の部分を自分のOSにあわせて実行してください。
    > SQLServer2008R2SP1-kb2528583-x64.-JPN.exe /x:c:\bugyo\sp1
    > c:\bugyo\sp1\1041_jpn_lp\x64\setup\sqlsupport_msi\sqlsupport.msi
     →「Microsoft SQL Server 2008 R2 Setup(日本語)」がインストールされる
2.仕込み開始 
  • 元のイメージに追加する形でSP1を展開
    元のインストールとは別に、「c:\bugyo\SQLSETUP\PCU」以下にSPを展開するコマンドです。
    自分のOSで使わなくても、3種類全部の展開を実行。
    > SQLServer2008R2SP1-kb2528583-x64.-JPN.exe /x:c:\bugyo\SQLSETUP\PCU
    > SQLServer2008R2SP1-kb2528583-ia64.-JPN.exe /x:c:\bugyo\SQLSETUP\PCU
    > SQLServer2008R2SP1-kb2528583-x86.-JPN.exe /x:c:\bugyo\SQLSETUP\PCU

  • setup.exeの置き換え
    > robocopy c:\bugyo\SQLSETUP\PCU c:\bugyo\SQLSETUP setup.exe
    > robocopy c:\bugyo\SQLSETUP\PCU\resources\1041 c:\bugyo\SQLSETUP\resources\1041 setup.rll
     →それぞれ、「2010/4/4」のファイルが「2011/6/17」に置き換わる

  • インストールファイルの置き換え
    なんか自動改行されてますが…、それぞれ1行で入力します。全部で3行。
    > robocopy c:\bugyo\SQLSETUP\PCU\x64 c:\bugyo\SQLSETUP\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
    > robocopy c:\bugyo\SQLSETUP\PCU\ia64 c:\bugyo\SQLSETUP\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll
    > robocopy c:\bugyo\SQLSETUP\PCU\x86 c:\bugyo\SQLSETUP\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
     → /XF で指定されたdllを除くファイルが置き換えられる

  • セットアップ中にSP1が読み込まれるようにする
    先の手順の3つのフォルダにある「defaultsetup.ini」を編集し、セクションの末尾に
    「PCUSOURCE=".\PCU"」を追加。
    フォルダが3つあるので編集も3回だよ。  
3.実食 

これで、SQLサーバーのインストーラーが実行される際にSP1が適用されるようになりました。
この部分を含む、「c:\bugyo」配下のフォルダ(SQLSETUP部分が置き換わったもの)で、普通に奉行オリジナルのsetupを実行すると…

インストールが正常終了するようになったよ!

 


スポンサー