WSUSサーバのお話です。
WSUSサーバってたまにメンテナンスしないと、まともに動かなくなる代物だったりします。なんだかなぁ・・・・
Win10 のごり押しアップデートがうっとーしくてしゃーないから、WSUS建てたら、今度はその WSUS がメンテフリーにならないって、MS の嫌がらせなんですかねぇ・・・・(いや、単に安定したものを作れないっていう MS の無能から来るものだとは思うんですが)
何が起こるかっていうと、SQL Server が CPU 100% 状態になって応答しなくなります。
MS のサイトにブログという形で記述があるんですが、いろいろと情報が足りないのですよ。
sqlcmdをインストール
MS はどーやら、WindowsServer は Core での使用を推奨してるよーです。WinServ のインストーラ立ち上げたら、Core が Default 選択されてるし、MS はどこぞの文章で、Server は Core で使うんだよ!みたいなこと言ってるんですが・・・・・どこがだよ!!
さきの記事だと、SQL Server Management Studio を使うことになってるんですが、Server Core には Management Studio はインストールできません。そらそーだわな。GUI ツールなんだから。
なんで、コマンドラインで sqlcmd を使います。インストールするのはこれら。
この3つは、Server Core でも問題なくインストールできます。
リモート実行する環境
WindowsServer Core のマシンはコンソールを開こうが RDP しようが、DOS 窓が開いてるだけなんで、ターミナル的なものでつながないとやっとれません。なんで、PowerShell で telnet みたいなことをします。
使うコマンドは、
Enter-PSSession
有効化するためになんか Porlicy 関連のコマンドが必要だった気がするんですが、覚えてないんで、これはググってくだされ。
スクリプトを実行する
いよいよスクリプトを実行します。
sqlcmd -S np:\\.\pipe\Microsoft##WID\tsql\query -i D:\work\WsusDBMaintenance.sql
このコマンド、調べてもなかなか出てこんのですよね。特に DB 名のところ。こんなん知ってなきゃ分かるわけがない。
で、先のブログからダウンロードした sql スクリプトをそのまま実行してもエラーになるんですよ、これが
スクリプトに
SET QUOTED_IDENTIFIER ON
この1行を加えないといけない。追記したスクリプトを置いときます。
スクリプトをもう一つ
MS のサイトにもひとつ、こんな記事があったりします。
なんで、これもスクリプト化して実行します。
sqlcmd -S np:\\.\pipe\Microsoft##WID\tsql\query -i D:\work\RebuildIndex.sql
実行!
というわけで、実行します。
ただ、ここからがよくわかりません。
スクリプトを順に実行すりゃそれで収まるか?というと、収まらないのです。というわけで、私は次の操作を繰り返し実行してみました。手あたり次第にやってたら、収まってくれました。
- WsusDBMaintenance.sql スクリプト
- RebuildIndex.sql スクリプト
- WSUS コンソール上のメンテナンス
- OS再起動
これらを順不同で繰り返しやったら、収まりました。うーん、よくわからん
コメントする