サーバー名にアンダースコア"_" がある場合…

IEがクッキーを拒絶するため、セッション情報が保持できないと。
Microsoft サポートオンライン:[PRB] Internet Explorer セキュリティ修正プログラム MS01-055 のインストール後、セッション変数が要求間で保持されない (316112)
かなりイマサラな話なんですが、派手目に嵌ったのでメモ。
#IE5.5, IE6 ってかいてありますが、当然のようにIE7でも発生しました。

[Vista]書き込めなかったファイルの行方

Vista上で、Program Files とか System Folder とかに書き込もうとして書き込めなかったファイルはどこへ行くのか?
C:¥Users¥[ユーザ名]¥AppData¥Local¥VirtualStore
にあります(Cドライブにインストールしたデフォルト状態)。
なので、厳密に言うと「書き込んでいる」のです。
が、果たしてそれを「書き込める」と言っていいのか?
狙った所に書き込んでいない以上『書き込めない』とも、私的には思うのですが。

IIS の構成のバックアップと復元

IISの構成ファイルは、自動的にバックアップが作成されます。で、そのバックアップから復元もできます。
テスト用サーバーなどを「いじって壊しちゃった!」という場合には、こういう選択肢もあると覚えておくと、やらかした時に便利です。
参考:
IIS 6.0 でメタベースのバックアップと復元を行う (IIS 6.0) [TechNet]
バックアップ ファイルでメタベースを復元する (IIS 6.0) [TechNet]
履歴ファイルを使用してメタベースを復元する (IIS 6.0) [TechNet]

ASP.NET Web Service Extension がありません

2003 Server で、上記のようなエラーが表示されることがあります。
.NET Framework 2.0 を入れているのにこういうエラーが出たときは、ココを読んで見てください。特に”Enable ASP.NET 2.0 in the web service extensions”の項です。
Framework が入っているだけではダメで、設定を叩いてあげる必要があるようです。
※私はコレで、SharePoint 2007 beta のインストールで激しく嵌りました。
なんで”Server”とかの分類ではなく、Officeの分類なの?なんで”KB”じゃ無いのって話はありますが…

SQL Server のトランザクションログに注意

運用ネタです。
SQL ServerでもOracleでも、おおよそRDBと呼ばれるものは、「トランザクションログ」を持ちます(言い方は様々ですが)。これは、Rollbackしたり、障害からのRollforwardとかに必要です。
このトランザクションログは、基本的には、どんどん増えていくものです。ログですから、どんどん記録するのが仕事ですな。かといって、無制限に増えても困るので、ある時点で「切り捨て」が行われます。
さて、お使いのSQL Serverのデータベースで「復旧モデル」はどうなっていますか?多くの場合には「完全」になっていると思います。
復旧モデルが「完全(フル)」の場合、「切り捨て」動作は、データベースのバックアップ時に行われます。「単純(シンプル)」の場合には、自動的に行われます(正確には「チェックポイント」ごと)。
と、言うことは、「完全」になっていて、バックアップを取っていない(あるいは取れていない)状態では、トランザクションログは増え続けます。
増え続けるとどうなるかと言うと、徐々にパフォーマンスに悪影響を及ぼし始め(そりゃ巨大な物理ファイルになりますから…)、最終的には物理ディスクを使い切って、SQL Serverが Give upしてしまいます(シングルモード起動となってしまうようです)。
最近では、サーバーのバックアップも「Disk to Disk」でゴッソリ取れるようになったようですが、この辺りはウッカリ見落として悲劇が起きる元となります。
きちんとDBとしてバックアップを取りましょうと言うお話でした。
参考資料はコチラ
[INF] SQL Server でトランザクション ログが予期しない大きさになるか、いっぱいになる-KB317375 (7.0/2000向け)
SQL Server 2005 Books Online トランザクション ログ領域の管理 (2005向け)
SQL Server 2005 Books Online 満杯になったトランザクション ログの管理

RMSサーバーの初回起動時

Microsoft RMS ( Microsoft Windows Rights Management Services )は、インターネット接続が必須です。具体的には、Microsoft登録サービスへのアクセスが必要です。
SP1ではその縛りはなくなり、閉じたネットワーク内でも運用できるようになっています。
そこで、閉じたネットワーク内にRMSサーバーを構築してみました。その環境で管理画面を開こうとすると…
「ドメインxx内にライセンス認証サーバーが見つかりません」
と、非情にもasp.netの例外画面が出力されました。
で、このサーバを一時的に外に出してあげると、すんなりと通りました。
その後、ネットワークを元に戻す(つまり外に出れなくする)と、きちんと動作しました。
初回起動時だけはインターネット接続が必要なのか…と思いつつ、違う仮想マシンで再現を試みたところ、ウソみたいにすんなり通ってしまいました。
この二つの仮想マシンの違いを挙げると、
<嵌った方>プロダクト アクティベート(ライセンス認証)をしていない
<すんなり行った方>アクティベート(ライセンス認証)済み
と、言うわけで、ケチらずアクティベートしろというお話のようです。

RMS を SQL 2005 上で動かすには

RMS (Windows Rights Management Services)はSQL Server 2000又は MSDE を必要とします。
で、SQL Server 2005ではどうでしょうか?
じつは、すんなりと動いてはくれません。
で、見ると、RMSサーバー上のイベントログに例外が記録されています。
調べてみると、Microsoft US Partner Blogs の、“Fred Pullen’s Blog”に記事を見つけました。
そのものズバリ!RMS & SQL Server 2005 という記事です。
で、この記事からMSのナレッジベースに飛べます。
文書番号:913372 「SQL Server 2005で、Windows Rights Management サービス(RMS)サーバーから RMアカウント証明書が発行されない という記事です。
お困りの方はぜひどうぞ。
(私は危うくSQL Serverを入れなおすところでした。)
Thank you, Mr.Pullen!!

ネットワーク共有を作る

ネットワーク共有の作成スクリプトです。
単に「右クリック」→「共有とセキュリティ」で行けばよいわけですが、数が多いときとかにはスクリプトのほうが有効です。
でもって、例によってコチラ:TechNetスクリプトセンター ネットワーク共有の作成
例によって例のごとく、味も素っ気もないサンプルです。
GetObject とか”.Get(“Win32_Share”) “って辺りはオヤクソクとして、肝心な部分は”Create”しているところですね。
これの解説は、コチラ:Platform SDK: Windows Management Instrumentation Create Method of the Win32_Share Class (英語)
で、これのイミは…
第一引数:共有設定したいターゲットのパス
第二引数:共有名
第三引数:作成したい共有の種類(0=ファイル共有 1=プリンタ共有)
第四引数:最大アクセス数(省略=無制限)
第五引数:説明
第六引数:パスワード(省略可)
第七引数:セキュリティ設定(コチラを参照)
でもって返値も同じページに書いてありますね。直訳してみると…
0:成功
2:アクセスが拒否された
8:不明なエラー
9:名前が不正です
10:レベルが不正です
21:パラメータが不正です
22:共有が重複しています
23:リダイレクトされたパスです(ショートカットだと言いたいのでしょうか??)
24:不明なデバイスまたはディレクトリです(つまりフォルダが無いということでしょうか??)
25:ネットワーク名が見つかりません(うん??)
うーん、もうちょっと突っ込んだ説明が欲しいですなぁ、Microsoftさん。

DFSノードを作る

最近のきらびやかな話題として、どうしてもVS2005/SQL2005とかに目が行ってしまいます。
ところが、サーバ管理とかの世界では、まだVBScriptが主流のようです。スクリプトのほうが小回りが利きますからね。
でもって本題。DFS(分散ファイルシステム)のノード作成スクリプト(Windows Server 2003以上)。まずはコチラ:TechNet スクリプトセンター DFS ノードの作成
味も素っ気もないサンプルですな。
で、この”Create”の説明はコチラ:Platform SDK: Windows Management Instrumentation Create Method of the Win32_DFSNode Class (英語)
ちったぁマシになったとは言うものの、ちと厳しいです。
で、試行錯誤してみた結果わかったのは…
第一引数:作りたいDFSパス名です。
第二引数:作りたいノードのあるサーバ名です。
第三引数:作りたいノードの共有名です。
第四引数:説明(省略可能)。
つまり…
¥¥HogeDFS¥
|- ¥HogeHoge
というノードを作りたい。その元は ¥¥Alpha¥Brabo でしたら…
objDfsNode.Create(“¥¥HogeDFS¥HogeHoge”,”¥¥Alpha”,”Brabo”)
となります。
なお、返却されたエラー値は、コマンドラインで
net helpmsg [エラー番号]
でその大雑把な意味を知ることができます。
(1722なんて返ってくるとわけがわからんのですが…)