手元で運用しているオンプレミスのWindows Server 2016を2019へインプレースアップグレードしてみました。新規構築とどちらがいいのかは悩ましいところだと思います。個人的に言えばあんまりやるべきではないかと思います。
私が入れていたのはWSUS, SQL Server 2016(Azure DevOps用), Hyper-Vとファイル共有くらいなので、一から構築してもよかったのですが、性懲りもなく前回の2012R2から2016に移行したときと同じ二回目の轍を踏んでみました。事前作業としてはこのくらい。
- Hyper-VのVMをシャットダウンしておく(DCが動いているので、起動もしないようにしておく)
- DC一台でも使えるようにしておく(DNSとDHCPだけですが)
後は数時間お待ちするだけ。結局10時間以上待ってました。
終わった後はいろいろ再チェック。困ったのがWSUSの再構成。WSUSコンソールが使えなくなっていました。具体的にはコンソールから接続してもすぐ切れる。機能を削除、追加を繰り返してようやく原因判明。
Default Web Siteを作り直す
2020-11-03 15:15:48 Starting service W3SVC 2020-11-03 15:15:48 Configuring IIS... 2020-11-03 15:15:48 Start: ConfigureWebsite 2020-11-03 15:15:48 System.Runtime.InteropServices.COMException (0x80070003): 指定されたパスが見つかりません。
アップグレードで 既定のWebサイトが消えているので、作り直します。
- IIS 管理コンソール
- Default Web Siteという名前で作る
DefaultAppPool
を選択する- パスを適当に(デフォルトは
c:\inetpub\wwwroot
)設定する - バインディングを設定する
- プロトコルhttp
- ポート80
- IPアドレス:すべて
これでIISを再起動するとこのエラーはなくなりますが、まだエラーは続きます。
同期に失敗する
Importing ClientServicingApiDetectoid.xml... Importing default detectoids succeeded. Synchronization in progress. Please cancel synchronization and rerun postinstall again. Exception: System.Net.WebException: HTTP ステータス 503: Service Unavailable で要求が失敗しました。 場所 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) 場所 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) 場所 Microsoft.UpdateServices.Internal.ApiRemoting.GetServerVersion() 場所 Microsoft.UpdateServices.Internal.DatabaseAccess.AdminDataAccessProxy.GetServerVersion() 場所 Microsoft.UpdateServices.Internal.BaseApi.UpdateServer.CreateUpdateServer(String serverName, Boolean useSecureConnection, Int32 portNumber) 場所 Microsoft.UpdateServices.Internal.BaseApi.UpdateServer..ctor(Boolean bypassApiRemoting) 場所 Microsoft.UpdateServices.Setup.StartServer.StartServer.FixSubscriptionCategories() 2020-11-03 16:24:06 StartServer encountered errors. Exception=Synchronization in progress. Please cancel synchronization and run postinstall again. 2020-11-03 16:24:06 Microsoft.UpdateServices.Administration.CommandException: WSUS サービスを開始および構成できませんでした 場所 Microsoft.UpdateServices.Administration.PostInstall.Run() 場所 Microsoft.UpdateServices.Administration.PostInstall.Execute(String[] arguments)
なやんだのですが、これはWSUSの同期ログがアップグレードに伴い、古い形式と互換性がなくなったためのようです。同様の理由か知りませんが、Azure Backupやイベントビューアのログもきれいになくなります。
USE SUSDB GO DELETE FROM tbEventInstance WHERE EventNamespaceID = '2' AND EVENTID IN ('381', '382', '384', '386', '387', '389')
SSMSで上記のSQLを実行してください。たぶんこれで大丈夫のはずです。
WSUS管理サイトを削除する(追記)
一つ忘れていました。WSUSの後処理でIISにあるWSUS管理というサイトを追加するのですが、これが残っていると後処理に失敗します。アップグレードの後、再構成するときは、必ずIISからWSUS管理サイトを削除してください。