カテゴリー: Windows

  • DBのデータでカラムの値がNULLのものを検索するSQL

    とても基本的なことなんだけれど・・・
    わからなくて調べたのでメモしておく。
    DBのデータでカラムの値がNULLのデータも検索したい!
    そんなときは、WHERE句で”IS NULL”を使用する。
    ※”ISNULL”という関数もあるが、違うので注意。

    ■使い方

    SELECT * FROM Employee WHERE id IS NULL;
    

    これで id というカラムで値がNULLのレコードを検索することができる。
    動作確認をしているのは、SQL Server (T-SQL)だ。

    ■参考URLなど
    http://msdn.microsoft.com/ja-jp/library/ms184325.aspx

  • ドメインの所属の判別に使用するレジストリ

    レジストリエディタでUSERDNSDOMAINの値を調べることで所属しているドメインを調べることができる。
    また、システムで(作成したプログラム等で)どうしてもドメインに所属しているかどうかを判別したい場合には、この値と比べることでドメインに所属しているかどうかを判別可能。

    HKEY_CURRENT_USER\Volatile Environment\USERDNSDOMAIN
    

    Windows 7では、USERDOMAINというレジストリもある。ここには、DOMAINが入っている。

  • Visual Studio のバージョン依存に苦戦した。

    大した内容ではないが、備忘録もかねて書いておく。

    昨日、PCを新しくしたところVBの”.sln”ファイルが開かないエラーに遭遇した。先に結論を書いておくと、ツールの些細なバージョンで違いで開く際にエラーになった。Visual Web Developer 2008 Expressにサービスパックが適用されているかどうか、これが原因だった。

    元々、作成に使用していたのはVisual Web Developer 2008 Express で新しいPCはOSこそWindows 7に上げたがIDEは同じくVisual Web Develper 2008 Expressだ。新PCでは、インストールに本に付属のDVDを使用して、開発に必要な環境を一括でそろえた。この状態で各種アップデートの後、”.sln”ファイルを開いたところ「このバージョンのファイルはvisual studioでは開けません」というようなエラーが発生した。何度か試してみたが状況は変わらず。仕方がないので、Visual Web Developer 2008 Express をアンインストールして、再度インストールした。今度は、”.vbproj”ファイルが開けないという。Visual Web Developerが起動しても、表示されるのは、XML形式のvbprojファイルだけ。エラーになっている箇所は、表示してくれるものの解決策はわからない。途方にくれて、MSのサイトをみてみるとSP1があるようなので当ててみることにした。SP1のファイル単体は見つからず、ウェブインストーラーしか見つからない。ウェブインストーラーを使って上書きインストール。もう一度、slnファイルから試してみると正常に開いた。

    同じツールであっても、SP(サービスパック)が適用されているかどうかで、ファイル形式が違うようだ。slnファイルのアイコンには、起動するバージョンの数字が書いてあったが、SPの有無までは解らない。(もしかしたら、どこかに簡単に見分ける方法があるのかもしれないけれど。)(2008形式なら数字は9、2010形式なら数字は10というように見分けがつく。)Visual Studioのファイルは、上位の(新しく発表された)Visual Studioで開くと、slnファイルが更新されてしまい、下位バージョンで開けなくなるのは知っていた。まさか、SPの有無でさえ開けない事態になるとは思っても見なかった。もうちょっと、互換性を作ってくれるといいのけど、MSだし無理だよな。

  • PCのDNSキャッシュをクリアする

    PCにキャッシュされているDNSのキャッシュをクリアする方法。PCの名前解決が不安定な時にやると良い。

    キャッシュをクリアするには、Windowsのコマンドプロンプトを起動して次のコマンドを入力する。

     ipconfig /flushdns
    

    これで、PC上のDNSキャッシュをクリアできる。また、PC上のキャッシュを確認したい場合は以下のコマンドを入力する。

     ipconfig /displaydns
    
  • Powershellにエイリアスを追加する方法

    WindowsのPowershellを使っていると、間違えてlsとかpwdとか叩いてしまう。これらは、最初からPowershellの内部で対応するコマンドにエイリアスが切られているので 問題なく実行できる。

    でも、どうせならCUIから簡単にxyzzyを起動したい。ついでに間違えてemacsと入力したときにxyzzyを起動させたい。プログラムにパスが通っていれば、エイリアスで指定しなくても起動するがめんどくさいのでAliasに登録する。

    ■エイリアスの登録方法

    Set-Alias  エイリアス  コマンド
    

    xyzzyをエイリアスに登録する場合は以下。(xyzzyは、Cドライブ直下のbinに保存)ついでに、emacsでxyzzyが起動させるようにする。

    Set-Alias xyzzy 'C:\bin\xyzzy\xyzzy.exe'
    Set-Alias emacs xyzzy
    

    これで、xyzzy ファイル名 とか叩けば、そのファイルがxyzzyで開くようになる。簡単に起動できるので便利。

    だが、ここまでだとPowershellを終了させると消えてしまう。AliasをExportしてImportするか、起動時にプロファイルを読み込ませる方法がある。ちょっと調べてみたが、プロファイルを読み込ませるのはめんどくさそう。

    ■現在のエイリアスの確認方法

    Aliasと入力する。

    ■エイリアスの削除方法

    エイリアスの削除もコマンドから行うが、Remove-Itemという汎用的なコマンドから行う。(Remove-Itemはファイルやフォルダ、オブジェクトの削除に使うコマンド)

    Remove-Item Alias:エイリアス
    

    先に追加したemacsのエイリアスを削除するコマンド

    Remove-Item Alias:emacs
    

    この要領で便利なエイリアスを作ったり削除できる。

  • windows 2000 のADに windows 2008 R2 のADを追加するときにハマったポイント

    参考:AD2000からAD2008にアップグレードする手順

    1. Windows 2000のActive Directoryでドメインの機能レベルを「Windows 2000 Serverネイティブ」以上にする
    2. FSMOの機能をもったWindows 2000 Server上で、adprepを実行する
      1. 最初にフォレストのスキーマを拡張する。「adprep32.exe /forestprep」を実行
      2. 次にドメインのスキーマを拡張する。「adprep32.exe /domainprep」を実行
      3. 最後にリードオンリードメインコントローラ用にスキーマを拡張する。「adprep32.exe /rodcprep」を実行する
    3. Windows Server 2008 R2をドメインコントローラとして追加する
    4. FSMOマスタをWindows Server 2008 R2のADに転送する
    5. Windows 2000 Server のADを降格する
    6. 最後に必要に応じて、機能レベルを上げる

    adprepの実行でハマったこと

    以下のエラーだけ吐き出され、ハマり半日ハマり続けた。

    ---抜粋---
    [状態/結果]
    Adprep には、この操作を完了するために、スキーマ マスターから既存のフォレスト全体の情報へのアクセスが必要です。
    ---抜粋---
    

    他のエラーログも見たが、役にたちそうなものはなく、手探りで行っていくしかなかった。半日で解決できて良かったとも言える。adprepの実行でエラーが発生した場合は、以下のことを試すとよいだろう。(これは自分の失敗をまとめたもの)

    必ず、2008R2のインストールDVDをマウントして、adprep32.exeを実行すること。

    • adprepは、Windows Server 2008 R2のインストールディスクに格納されている。 このとき、”\support\adprep\adprep32.exe”だけ、コピーしても動作しない。 実行後、メッセージもなくすぐに終了するだけである。
    • adprepを、フォルダごとコピーした場合は、一見動くようにみえるが、何かが足りないらしく正常に動作しない。

    コマンドの実行は、コンソールから行うこと。

    • Windows 2000 serverにリモートデスクトップで(RDC経由で)アクセスし、コマンドを実行したが、アクセス権がないといわれる。
    • リモートデスクトップでアクセスした場合は、ログインに使っているユーザにドメインの管理権限があっても、スキーマの拡張権限がない振る舞いになった。コンソールから実行すれば、問題ないので、リモートデスクトップは使わない。

    幽霊のドメインコントローラは、しっかりと削除する

    • 以前にドメインコントローラの入れ替えや障害があり、ドメインコントローラの削除を行っている場合、ディレクトリ上にゴミが残っていることがある。
    • ADの一覧には表示されていないが、「ユーザとコンピュータ」以下にあるドメインコントローラに残っているなど。
    • 残っている場合には、アップグレード時に通信の確認を行おうとして失敗し、処理が止まるので、幽霊ドメインコントローラを見つけて削除する。

    マイクロソフトの移行ガイドを信用しない

    • これが一番、重要かもしれない。
    • 移行ガイドを実行すると、実行するコマンドに漏れがあったり、注意事項が書いていないため、失敗の原因になる。便利かと思ったが、信用してはいけなかった。

    adprep32.exeの実行中に、Enterキーなどのキーをたたかない。

    • Windows 2000 Serverのスペックに影響するのか、実行中に動作しているのかいないのかよくわからないときがある。この時にEnterキーを押すと、 busyのエラーが発生し、処理が強制終了してしまう。
    • スペック以外の原因はないため、adprep32.exeの実行後は終了するまで放置するとよい。結構時間がかかるので、コーヒーを飲むなどのブレイクにあてる。
  • メモ:WindowsのDNSサーバ機能を調べるのに役に立ちそうなURL

    Windows ServerのDNS機能は、なぜか資料が少ない。ネットを検索しても、ほしい情報はなかなか見つからない。油断すると、また最初から探してしまいそうなので見つけたURLをメモする。

    windows serverのDNSサーバ機能は、基本的にGUIで操作なので弄っているだけで設定できてしまったりもする。既に構築されているものだったら、比較的簡単に操作できるのけど、ちょっと凝ったことや別のサーバからDNSサーバを切り替えたりしようと考えると資料が少ない。今回調べているのは、そこら編の凝ったこと。調べていって、ある程度成果が出たら公開するつもりだ。(可能なら・・・だけど。)

  • Hyper-V環境でのWindows Server ライセンス

    解説しているページへのリンク。

    Hyper-V環境でのMicrosoft Windows Serverライセンスの仕組みとは?
    http://techtarget.itmedia.co.jp/tt/news/1009/09/news02.html

    もっとシンプルなんだけど、解説か日本語訳かのどちらかが悪い。
    マイクロソフト用語が多すぎるので、混乱する・・・。
    簡単どころか、余計に混乱するような感じ。

    簡単に行ってしまえば、Windows Server 2008 R2を買ったとして、
    ベースとなるWindows Server 2008 R2をインストールする。
    これで、実は1ライセンス消費。
    でも、このWindowsの上に、Hyper-Vをインストールして、
    ゲストOSとして同じくWindows Server 2008 R2をインストールする。
    この場合、Windows ライセンスはゲストOSが消費し、
    ベースのWindows Server 2008 R2からはライセンスが消えるのだが、
    ホストになっている場合はライセンスを消費しないという仕組みなので
    ライセンス違反にはならない。

    だが・・・
    ゲストOSを別のHyper-Vに移動させると
    ホスト側のOSにもライセンスが必要になってしまう。
    なんとも分かりにくい。

    元の解説は、いまいちイケテナイね。

  • 開発者のためのActive Directory講座

    面白い資料を発見。Power Shellを使うと、Active Directoryの管理が楽になりそうだ。コマンドから、いろいろな情報を引き出せるので、簡単なスクリプトを組むだけで、処理を簡単にできそうだ。

    http://www.slideshare.net/junichia/active-directory-2562729

    問題は、このモジュールの対応OSが2008R2というあたりか。

  • Hyper-V勉強中

    現在、Hyper-Vを勉強中。

    VMware ESX系は、結構前から試して実際に使っているが、Hyper-Vは使ったことが無かった。今度、本格的に構築・運用を行う可能性が高いので勉強中。VMware ESXと基本的な設計思想がかなり違う。今調べているかぎりだと、どっちがいいということはない。ぜんぜん別物なので、上に構築する仮想マシンとOSの性質によって、下のプラットフォームを選ぶのが良い。

    Hyper-Vは、あまり安定性がないみたいだが、安いのが特徴だ。やたらと高いVMwareに比べて、ここはかなりおいしいところ。Hyper-Vで見えてこないのは、管理性だ。実際にインストールして使い勝手と安定性や癖を確認するしかない。問題は、どのエディションをインストールするか。ハイパーバイザーだけのHyper-Vサーバが一番、コストがかからないように思えるが、管理用Vista以上のWindows が必要。Vistaは持っていないので、却下。次はWindows Server 2008 のServer Core上に構築するパターン。この組み合わせが一番安定しているようだが、これも単体で管理ができないようなので却下。(一番、試したいパターンなんだけど。)最後は、一番インストールや検証が楽なWindows Server 2008 上のHyper-Vだ。とりあえず、これで試す。Hyper-Vはバイザー型の仮想化環境のはずなんだが、このパターンだとホストOSの上で動いている感じしかしないため、Virtual Serverと何が違うのだろうか考えてしまう。実際、VMからの命令もホストになっているWindows経由になる。これは、マイクロカーネル型ハイパーバイザーというタイプで、ハイパーバイザーの層から物理ハードウェアとの命令に必要なドライバを排除しているため。インストールした時の感覚としては、ハイパーバイザーに見えないがちゃんとしたハイパーバイザーである。

    とりあえず、明日、Windows Server 2008をインストールして試してみる。