今回完全な妄想モードで失礼いたします。
数日前になりますが、SQL Server チームがBLOGに以下の投稿をしました。
「中堅企業向け オラクル都市伝説シーズン2: 其の一」への反論 http://blogs.technet.com/sqlpm-j/archive/2009/08/27/3277427.aspx
上記の投稿は、タイトル通り、オラクル社のサイトに掲載された「中堅企業向け オラクル都市伝説シーズン2: 其の一」に対する反論です。弊社 北川 による熱い内容になっています。
技術的な検証はプロダクトマネージャーの北川が詳しく行っているので、私は、なぜKさん(上記コラムに登場するエンジニア氏)がこのようなトラブルに見舞われてしまったのか、Kさんの感情移入して検証してみたいと思います。
#ORACLE社の本文をお読みになってから、以下をお読みくださいませ
Kさんはシステムが動かないという連絡を受け、深夜のタクシーで現場に向かいます。現場に到着し状況を確認してから顔が青ざめていることから、おそらくタクシーの中では寝ていたのでしょう。無理もありません。真夏の夜が寝苦しいと書かれているので、エアコンはあまり効かせないで寝る習慣があるのかもしれません。そのため、恒常的な寝不足気味だったと予測されます。エアコンの効いたタクシーは、それは素敵な涼しい空間だったことでしょう。もしタクシーでの移動中に、携帯電話で現場のお客様によ��詳しい状況を確認できていれば、現地に到着後、より迅速な対応ができたはずですが、今回はそれは問題ではありません。
現場に到着してからのKさんは、お客様への謝罪もそこそこに、マシン室に直行、目にもとまらぬ速さでログオンし、状況把握に努めます。
本文より、発生している事象は2件あることがわかります。
Kさんは、ファイル肥大化→ログの物理破損→システム停止 と判断したようです。確かにファイルの容量が肥大化すれば破損の可能性が拡大することは事実です。ただしそれは物理的な破損の可能性です。おそらくKさんとお客様の間で、以下のようなやり取りがあったものと思われます。
Kさん「SQL Server が不用意にログファイルを肥大化させたことが原因でディスクが圧迫されてしまいました。それが原因で、ログファイル自身が破損し、ミラーリングが意味のないものとなってしまいました。」 お客様「ファイルが肥大化すると破損するものなのかね?」
Kさん「SQL Server が不用意にログファイルを肥大化させたことが原因でディスクが圧迫されてしまいました。それが原因で、ログファイル自身が破損し、ミラーリングが意味のないものとなってしまいました。」
お客様「ファイルが肥大化すると破損するものなのかね?」
Kさん「はい。物理的に破損する可能性は高まります。」 お客様「それはOSの問題なのか?それともSQL Serverの問題なのか?」 Kさん「さまざまな原因が考えられます」 お客様「今回は何が原因だったのかね?」 Kさん「SQL Serverがファイルを肥大化させてディスクを圧迫したことが原因です」 お客様「いや、だから。ディスクを圧迫するとファイルは破損するものなのか?と聞いているのだよ」 Kさん「そうです」 お客様「それは常識なのかね?」 Kさん「気をつけるべき点ではあります」 お客様「じゃ、なぜ気をつけなかったのかね?」 Kさん「いや、知らない間に肥大化していたもので」 お客様「なぜ知らないのかね?気をつけてしかるべきコトなのだろう?」 Kさん「…」 お客様「運用マニュアルはどうなっているのだ?」 Kさん「…」
Kさん「はい。物理的に破損する可能性は高まります。」
お客様「それはOSの問題なのか?それともSQL Serverの問題なのか?」
Kさん「さまざまな原因が考えられます」
お客様「今回は何が原因だったのかね?」
Kさん「SQL Serverがファイルを肥大化させてディスクを圧迫したことが原因です」
お客様「いや、だから。ディスクを圧迫するとファイルは破損するものなのか?と聞いているのだよ」
Kさん「そうです」
お客様「それは常識なのかね?」
Kさん「気をつけるべき点ではあります」
お客様「じゃ、なぜ気をつけなかったのかね?」
Kさん「いや、知らない間に肥大化していたもので」
お客様「なぜ知らないのかね?気をつけてしかるべきコトなのだろう?」
Kさん「…」
お客様「運用マニュアルはどうなっているのだ?」
ショッピングサイトという無停止を要求されるシステムでは、当然のことながらディスク容量の監視も必要です。なんらかの監視ソフト、もしくは Windows Serverの標準機能を使用したディスク容量の監視を行っていたはずです。もちろん、そうした対策は運用マニュアルに書かれているべき事項ですし、365日24時間SEサポートを契約しているのであれば、当然サーバーの遠隔監視サービスも契約されているでしょう。Kさんは「気づかぬ間にログが肥大化していた」と告白しています。つまり、ディスク容量の監視は事実上を行われていなかったことがうかがえます。
また、北川が指摘するように、SQL Serverのメンテナンス方法についても、あまり事前調査をしていなかったのでしょう。さすがに、Kさんも「SQL Serverはメンテナンスフリーだ」とまでは思っていなかったはずですから、これは明らかにKさんがSEとしての仕事を放棄していたことに他なりません。
さて、Kさんは「安い」というだけでSQL Serverを選択したことを猛烈に後悔しています。
が、あまりにも後悔しすぎたのか、次第にKさんの「心のジャーナル」に論理破たんが起きています。
Kさんは自分自身が「安い」という理由だけでSQL Serverを選んだことをすっかり忘れ(一度は反省したにもかかわらず)、自分が所属する企業から「無理やり選ばされた」ことにしてしまっているのです。そして、その「選ばされた」企業を辞め、別の企業に転職してしまいます。
ここでどうしても気になるのは、今回トラブルに見舞われたお客様は、その後どうしたのか?ということです。ORACLEに乗り換えたのでしょうか?いや、SQL Serverが嫌で転職したわけですから、どうもそうではなさそうです。
このお客様は、トラブルを引き起こしてしまった(と、Kさんが思っている)SQL Server を引き続き使い続けているわけですから、同じような障害に見舞われる可能性も、いまだに抱えているはずです。
にもかかわらず、Kさんは、今後の障害回避策を提案しなかったと思われます。
なぜならば、もし障害回避策を提案していたとしたら、「安い」(とKさんが認めている)うえに「トラブルを回避する方法が存在している」SQL Server を捨てる理由は、全く無くなるわけですから。
(いや、生理的に嫌になったという理由はあるかもしれませんが…)
こうしたKさんの言動を見るにつけ、はたしてKさんは次の会社において、きちんとやっていけるのかどうか心配になります。ORACLEに乗り換えたところで、結局は自分の調査不足を棚に上げ、DB2を選択する企業に転職してしまうんじゃないでしょうか。
「障害に強いオラクル」であっても、メンテナンスフリーではありません。すばらしい「ログの二重化機能」は、「SEの調査不足を担保する」ものでは無いはずです。ディスクの容量を含め、メンテナンス計画を立案し実行することは担当のフィールドSEとして必須の作業ですし、ディスク容量が圧迫されて運用が停止するなどということは、インフラに携わるSEとして想定しておくべき事項です。
私は、今回のトラブルは、Kさんが「エンジニアとしてやるべきこと」をやっていなかったからではないかと思えてならないのです。
ま…それはそれとして…ログの二重化機能は SQL Server にも欲しいですよね。>偉い人
9月25日には Tech Fielders セミナーで SQL Server 2008を使用したログ管理システムを構築する予定です。よろしければいらしてください。
SQL Server 2008 で統合ログ管理システムを構築しよう(LTも募集中!) http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032423675&Culture=ja-JP
特に新しことをやるわけでもありませんし、ものすごい目からウロコなことをやるわけでもありません。対象は、「あまりSQL Server」を意識したことが無いフィールドSEの皆さんです。
というのも、何を隠そう私がそうでした。なのでハッキリ言います。「私はSQL Server が苦手です。MOSS はもっと苦手です!それから、ヤケに張り切っている人はさらに苦手です。」。
と、そうも言ってられないので、この歳になって体に鞭打ってます…。こんな立場で改めてSQL Serverを眺めてみると、「うわーこれ使って作ればよかったわぁ」とか「あーこれ使えばもっと安くできたじゃんかぁ!あの商談も取れたかも!」と思う機能が満載なわけで、そんな感動をセミナー化したものが、今回のTech Fieldersセミナーです。
さて、そんなセミナーの準備で、SQL 2008の Reporting Service を SharePoint Server と共存させようと、Windows Server 2008 R2 上に MOSS 2007 のインストールを試みました。
まぁ、何かあるだろうなとは思っていましたが、案の定以下のメッセージでインストールができませんでした。
Office SharePoint Server 2007 – Please read Microsoft Knowledge Base article: 962935 と最新のサービスパックをインストールする必要があります。サービスパックをインストールしない Office SharePoint Server 2007 – Please read Microsoft Knowledge Base article: 962935 には、このバージョンのWindowsに対する既知の互換性問題があります。
要は、「MOSS 2007の「素」のメディアでは、Windows Servver 2008 R2 にはインストールできませんぜ」ってことです。
じゃあどうするか。上記のKBから誘導されているのが、以下の記事です。
Office SharePoint Server 2007 のソフトウェア更新プログラムを展開する http://technet.microsoft.com/ja-jp/library/cc263467.aspx
しかし…この記事非常に読みずらい(すみません)…ので、以下に手順を書いておきます。
1. MOSS2007のメディアをディスクにコピーする
Windows Server 2008 R2 は64ビットですから、MOSS2007メディア内の「x64」フォルダを、ディスクのどこかにコピーしておいてください。
2. MOSS 2007 SP2 をダウンロード
以下のダウンロードサイトから、64ビット版のPS2(officeserver2007sp2-kb953334-x64-fullfile-ja-jp.exe)をダウンロードしてください。 2007 Microsoft Office Servers Service Pack 2 (SP2) http://www.microsoft.com/downloads/details.aspx?FamilyID=b7816d90-5fc6-4347-89b0-a80deb27a082&DisplayLang=ja
以下のダウンロードサイトから、64ビット版のPS2(officeserver2007sp2-kb953334-x64-fullfile-ja-jp.exe)をダウンロードしてください。
3. MOSS 2007 SP2 を解凍
ダウンロードした「officeserver2007sp2-kb953334-x64-fullfile-ja-jp.exe」を、コマンドプロンプトから、以下の書式で解凍します。このとき解凍先は、1.でコピーしたx64フォルダ直下の「Updates」フォルダを指します。 以下の場合には、x64フォルダを C:\tmp\moss2007 フォルダにコピーしたと仮定しています。 C:\> officeserver2007sp2-kb953334-x64-fullfile-ja-jp.exe /extract:c:\tmp\moss2007\x64\Updates
ダウンロードした「officeserver2007sp2-kb953334-x64-fullfile-ja-jp.exe」を、コマンドプロンプトから、以下の書式で解凍します。このとき解凍先は、1.でコピーしたx64フォルダ直下の「Updates」フォルダを指します。
以下の場合には、x64フォルダを C:\tmp\moss2007 フォルダにコピーしたと仮定しています。
実行すると、以下のようなメッセージが表示されてUpdatesフォルダに抽出された修正ファイルが保存されます。 ↓ ↓
実行すると、以下のようなメッセージが表示されてUpdatesフォルダに抽出された修正ファイルが保存されます。
↓
4. x64 フォルダの setup.exe を実行
インストールが始まります。 もしsetup実行直後に、.NET Framework 3.0が無いと言われてしまったら、Windows Server 2008 R2 のサーバーマネージャーから「機能の追加」を使用して、.NET Framework 3.11 をインストールしてから、再度 setup.exe を実行してください。
インストールが始まります。
もしsetup実行直後に、.NET Framework 3.0が無いと言われてしまったら、Windows Server 2008 R2 のサーバーマネージャーから「機能の追加」を使用して、.NET Framework 3.11 をインストールしてから、再度 setup.exe を実行してください。
参考までに、Windows Server 2008 R2 のアプリケーション対応状況は以下のサイトに書かれています。
マイクロソフト製品の Windows Server 2008 R2 対応状況http://www.microsoft.com/japan/windowsserver2008/r2/supported-applications.mspx
SQL Server とダイエットコークが大の苦手な安納です。
SQL Serverに対する苦手意識を克服するためにどうしようかなぁと考えた末、「知らない振りをする」という裏ワザではなく、自習書を使うという極めてスタンダードな方法に落ち着きました。
自習書シリーズってご存知ですか?
SQL Server チームが作成した(お金を出して発注して作ってもらった)、それは素敵な学習書のことです。
もちろん無償でダウンロードできます。
SQL Server 2008 自習書シリーズ(一覧) http://technet.microsoft.com/ja-jp/sqlserver/dd610200.aspx
私のように、とにかく SQL Server が苦手!という方は、まずは以下の3冊を実施してみましょう。
基礎を知ったところで、さらに理解を深めるために以下も読破しましょう。
普段SQL Server を管理しているという方は、ここからはじめてもよいでしょう。案外知らないことが多いはず。「あぁ、あの操作ってそういう意味なのか!」と感動すること請け合いです。
そして、「運用担当のフィールドSEだけど、ちょっと業務アプリのメンテナンスもしなくちゃならないんだよねぇ」という方には以下が用意されています。
さらに、一歩先の使い方をお客様に提案したい、ほかのSEに自慢したい、新しい業務の仕組み考えているなんて方は、以下がおすすめです。特に、Integration ServicesとReporting Servicesは、知らないと損です(と、恥ずかしながら思いました)。
すばらしいです。SQL Quality の 松本さん、ありがとう!
LDAP Manager でおなじみの ExgenNetworksによる 「第一回 大学向け最新ITインフラ技術動向セミナー」が開催されます。
第一回 大学向け最新ITインフラ技術動向セミナー ー 東京 2009年9月29日(火) ー 大阪 2009年10月2日(金)※ちなみに私の誕生日です
この中で私は、
マイクロソフトテクノロジーによるプライベートクラウドの実現
というタイトルで、Windows Serverを中心とした企業内インフラの最適化のお話をさせていただくことになっています。
実を言うと、これ、TechEd Japan 2009 で 高添 が好評を博したセッションがベースになっており、はたして高添と同等の満足度をいただくことができるかどうか、私にとって非常にチャレンジングであります。
しかも、私のセッションの後には Google 社が控えており、プレッシャーでうなされる毎日です。
大学関係の皆様、そして、大学を担当されているエンジニアの皆様のご参加をお待ちしております。
すいません。どうでもいいのですが…。Twitterの私のつぶやき を Twittermapの脳内スキャン で分析すると、こうなりました。
まぁ、なんとなくわかるのですが…な、なぜにドラーグクイーンなのでしょう…(笑)。私の前世でしょうか?
あと、Forefront愛好家ってのも…いや愛用はしていますけど…。
以下をメモ帳にコピペして、拡張子vbsで保存してください。
スクリプトギャラリーには、その他のサンプルがたくさん!!
---ここから
strComputer = "."
Set objDic_Name = CreateObject("Scripting.Dictionary")Set objDic_Parent = CreateObject("Scripting.Dictionary")Set objDic_Tree = CreateObject("Scripting.Dictionary")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colFeatureList = objWMIService.ExecQuery("SELECT * FROM Win32_ServerFeature")
For Each n in colFeatureList objDic_Name.Add n.ID, n.Name objDic_Parent.Add n.ID, n.ParentID 'Wscript.Echo n.ID & ":" & n.Name & ":" & n.ParentIDNext
strFunctions = ""
For Each ID in objDic_Name.Keys
ParentID = objDic_Parent(ID) Name = objDic_Name(ID)
If ParentID = "0" then objDic_Tree.Add ID , "+" Else If objDic_Tree.Exists(ParentID) Then objDic_Tree.Add ID, objDic_Tree(ParentID) & "+" End If End IF
strName_Me = objDic_Tree(ID) & Name
If ParentID = 0 Then strName_Parent = "N/A" Else strName_Parent = objDic_Tree(ParentID) & objDic_Name(ParentID) End If
If InStr(strFunctions , strName_Parent) Then strFunctions = Replace(strFunctions, strName_Parent, strName_Parent & "," & strName_Me) Else strFunctions = strFunctions & "," & strName_Me End If
Next
arrName = Split(strFunctions ,",")
For Each n in arrName Wscript.Echo nNext
Windowsコンポーネントのインストール状況をスクリプトから知りたい!という要望は、結構多いと思います。
Windows Server 2003およびWindows XP以前は、レジストリから収集する必要があったため、いま一感が強かったのですが、Windows Server 2008、Windows Server 2008 R2, Windows 7 では WMIの機能がアップデートされ、スクリプトから簡単に情報を収集することができるようになりました。
※Windows Server 2003、XP以前のOSでもエレガントにできるよ!という方がいらしたら ※ぜひともお知らせください!
インストールされているWindowsコンポーネントの一覧を取得するために、新たに2つのクラスが用意されました。
前者はWindows Server にインストールされている役割と機能の一覧を表示することができます。ただし、どんな役割/機能が用意されているのかを知ることができません。
後者を使用すると、Windows Server 2008 R2/Windows 7 のすべての役割と機能の一覧を表示し、かつそれぞれがインストールされているか否かを知ることができます。
Win32_ServerFature を使用したサンプルを TechNet のスクリプトギャラリーに投稿しましたので、ご覧ください。
http://gallery.technet.microsoft.com/ScriptCenter/ja-jp/56ac6367-bbcb-4c8c-8c4d-caa92c6d070e
実行すると、以下のように出力されます。ツリー構造にして表示する部分で苦労しました…。
Win32_OptionaFeatureについては、また後日ということで…。
TechNet Flash ってご存知ですか?ご存知ですよね。マイクロソフトがシステム管理者およびインフラ担当SEの方々向けに発行しているニュースレターです。
きっと、私と同年代の方であれば、ハニーフラッシュ(こちらは Flush? いや Flash かなぁ)のほうが有名だと思うのですが…。
#Flushって「赤面する」「赤面させる」っていう意味があるって知ってました?個人的にはハニーフラッシュは、こっちであってほしい…(意味不明)。
実は、TechNet Flash が2009年11月上旬にハニーフラッシュのごとく変身します。
これまで、
など、内容だけでなく「見た目」についてもさまざまなご不満をお持ちだったかと思います。
そんなフィードバックを本社側も真摯に受け止め���いよいよ新しい体裁で実装されることになりました。
詳しくは、IT プロフェッショナルのみなさまへ もしくはTechNet Flash ニュースレター紙上で 編集長 藤山 から案内があるかと思いますので、お待ちください。
新しい TechNet Flash では、読者参加型のさまざまな面白い企画も掲載してきたいと考えておりますので、みなさん、いまのうちに購読を開始してください!
あと、近隣の方々にも TechNet Flash をお勧めしてください!
TechNet Flashに一過言あるのだ!という方は、ぜひとも以下へ…編集長 藤山と、わたくし安納がお待ちしております。
Microsoft TechNet Flash 改造計画(Since 09.08.14)
Report Builder 2.0 ってご存知ですか? SQL Serverを普段からお使いの方は、嫌でもご存知かと思います。SQL Server 2008 Reporting Service に対応したレポートを簡単に作成できる、とても素敵なツールです。
以下のようなグラフや、クロス集計表が、ちょっとした操作で作れてしまいます。しかも、HTMLで!これは使わないと損です。
自習書を飛ばし読みしながら作ってみたグラフ。なんて素敵!
で、ここからが本文。
SQL Serverが大の苦手な私も、このツールを一生懸命使い込んでいるのですが、ある単純な操作で、かなーり手間取ってしまいました。
それは、「SQL Server 2008 自習書 : Reporting Service 入門編」の P106 に書かれた操作です。(EXCEL風に言えば)セルに入力する計算式で、参照先のセルの名前(F16とか)を正しく指定したつもりが、どうしてもエラーになってしまうのです。
Report Builderをご存知の方であれば、「ReportItems で指定するアイテム名は大文字小文字を意識する」と言えば手っ取り早いでしょうか。
大文字小文字が異なると、以下のようなエラーが出ます。
レポート アイテムの式で参照できるレポートアイテムは、同じグループ化スコープまたは含まれるグループ化スコープにある親のレポートアイテムのみです。
書かれているのは「同じスコープに無いアイテムを使おうとしているよ!」ということで、初心者の私には「なんのこっちゃ?????」でした。
結局のところ、先頭文字が大文字であるテキストボックス名を小文字で指定していたという…お粗末な原因だったわけですが、私と同様にお困りの方がいらしたらと思い、恥をしのんで投稿した次第です。
ネットワーク内の全サーバーのうち、仮想化のホストとして使うのに適したサーバーの一覧
仮想化することで、サーバーの台数や負荷がどうなるかをまとめた一覧
9月も終わりですね。マイクロソフト的には7月からはじまった新年度のQ1終了を意味します。
このところバタバタしてBLOG投稿が滞っておりましたが、そろそろ落ち着きそうです(といいつつ来週末から夏休みに入りますが)。
さて、今年度はもっとチャネルを増やしてさまざまな情報をお届けしたいと考えております。
特に、これまで手薄だった動画の配信を増やしていこうと思っております。
とりいそぎ、第1弾として、TechNet Flash Newsletter 9月30日号 と連動し、以下の動画を公開しました。
TechNet Flash が届いていない方は、以下をクリック!
なんせ動画編集なんてやったことがなく、なんかノイズが入ったりしてアレなのですが…今後も続けますので、どうぞご期待くださいませ。