カテゴリー: 技術系memo

  • 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

  • VB.NET 2008 (ASP.NET)でテキストボックスでEnterキーを押下したときに実行されるボタン指定する方法

    VB.NETで作成したウェブアプリのテキストボックス等でEnterキーを押したときに実行されるボタンを指定したい。
    通常は、ウェブのForm上にあるボタンのうち、一番最初に記述された(配置された)ボタンになっている。
    Enterキーを押したときに動作するボタンを指定する方法は以下。

    1. Enterキーを押下したときに実行するボタンのプロパティから、UseSubmitBehiviorを探し、Trueになっていることを確認する。
    2. 次にEnterキーを押下したときに実行したくないボタンのプロパティのUseSubmitBehiviorの値をFalseに変更する。
    3. 他のボタンも同じようにFalseに変更する。

    この方法でEnterキーを押した際に、1で設定したボタンが実行されるようになる。
    ただし、この方法で実行できるのは1つのボタンだけなので注意。

    Webでは、FormのAcceptButtonプロパティで設定する方法が多数見つかる。
    だが、VWD2008で設定を行おうとするとAcceptButton?プロパティは見つからず設定ができない。
    そのため、UseSubmitBehaviorで設定する。
    より正確に言えば、UseSubmitBehaviorは、PostBackが走った時に実行されるボタンクリックイベントについての記述になる。
    このプロパティの値がTrueのもので一番最初のものが実行されているに過ぎない。
    そのため、EnterキーでなくてもPostBackが走るのであれば実行される(はず)。

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

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

    HKEY_CURRENT_USER\Volatile Environment\USERDNSDOMAIN
    

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

  • 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の実行後は終了するまで放置するとよい。結構時間がかかるので、コーヒーを飲むなどのブレイクにあてる。
  • メモ:scpでディレクトリをコピーする。

    scpで、ディレクトリを含むファイルをコピーするには “-r” を指定する。

     scp -r directory zen@www.xenon.jp:/home/
    

    WinscpなどのGUIツールばかり使っていると、scpコマンドの使い方を忘れてしまった。

  • zabbix 1.6.8 から 1.8.3にアップデートしたときに発生したエラーの回避方法

    yum を使って、プログラム自体は、1.8.3に簡単にアップデートすることができた。その後のDB(MySQL)へのパッチでエラーが発生した。このエラーを回避する方法を探すのに、ちょっと手間取ったので書いておく。

    発生したエラー

     [root@your-0bb7513658 mysql]# mysql -u root zabbix < /usr/share/doc/zabbix-server-1.8.3/db
     patches/1.8/mysql/patch.sql
     ERROR 1061 (42000) at line 1: Duplicate key name 'actions_1'
    

    対応方法

    先にIndexを削除する。MySQLでZabbixのデータベースに対して以下のコマンドを入力する。

     alter table dhosts drop index dhosts_1;
     alter table dservices drop index dservices_1;
     alter table httptest drop index httptest_2;
     alter table httptest drop index httptest_3;
     alter table history_log drop index history_log_2;
     alter table history_text drop index history_text_2;
     alter table actions drop index actions_1;
     alter table escalations drop index escalations_2;
     alter table graphs_items drop index graphs_items_1;
     alter table graphs_items drop index graphs_items_2;
     alter table services drop index services_1; 
    

    参考:http://www.zabbix.com/documentation/1.8/manual/installation/upgrading

    Index削除後に、もう一度、patch.sqlを当ててやれば、今度は成功する。このパッチは時間がかかるので要注意。

  • ガルーン3のインストールでつまづいたところ

    ガルーン3のインストールをしてみたのだが、ちょっとだけ躓いたところがあった。
    また、躓かないようにメモ。

    環境は、CentOS 5.5 の32bit版。
    Apacheは、OSセットアップ時にインストール。
    めんどくさいので、GUIは入れていない。

    selinuxは、disableにする。
    selinuxが有効になっている場合、インストール後にcgiの実行でエラーになる。
    そのとき、ブラウザ上では訳の分からない文字列で埋め尽くされる。
    ApacheのErrorログには、ライブラリの1つで実行できないエラーが出ている。

    インストール後の初期設定がタイムアウトして、中途半端に終わってしまう。
    インストール後の初期設定では、disk i/o の負荷が高いようだ。
    インストール先のHDDのアクセスが遅いとか、iptablesなどを有効にしていて
    通信関連で時間がかかっていると、途中でエラーになる。
    この状態でエラーになると、先に進めないので、ガルーンを一度アンインストールする必要がある。

    おまけ。
    ガルーン3のインストール後のセットアップがうまくいかなくて、
    5回くらい再インストールをしていたら、アンインストールに失敗。
    関連するファイルとディレクトリをマニュアルのファイル展開場所を参考に削除したが、
    どこかにゴミが残っているようで、その次のインストールで失敗した。

    インストールで安全なのは、selinuxは無効にして、iptablesなどのセキュリティ系も停止しておく。
    これをやると簡単にインストールとインストール後の設定が終わる。
    selinuxが悪いのか、garoon3の作りが悪いのか。
    おまじないと思って、selinuxを切るのが一番だろう。

  • memo:SQL Server 2005の勉強に役立つページ

    マイクロソフトの製品には、自習書というものが公開されていることがある。この自習書の内容が、実環境に近い形で説明されているので、自分でやりたいことや困っていることにマッチする可能性が高くて便利。だが、ざっくりとしたキーワードだと、なぜかGoogleの検索上位にはこない。Bingだと、上位にくるので発見しやすくて良いのだが。

    SQL Server 2005の自習書:http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx

    バックアップ/リストアの自習書やSQLCMD(コマンドラインでSQL Serverにアクセスするコマンド)の使い方もあり、入門書が手元にない場合などに便利に使える。マイクロソフトの自習環境もつかえるので、勉強するのにも役に立つので良い。こういうページの情報はすぐに忘れるので、自分のためにメモ。

  • SSLができない!Apacheのエラー

    ApacheでSSLが突然動作しなくなった。これは、起動時のエラーログ。

     [Thu Jan 24 08:23:31 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
     Apache/1.3.33 mod_ssl/2.8.24 (Pass Phrase Dialog)
     Some of your private key files are encrypted for security reasons.
     In order to read them you have to provide us with the pass phrases.
    

    バーチャルホストは、ちゃんと動作しているようなので・・・IPアドレスが変わったことによる、CRTファイルの不整合が原因。

    復旧方法は、CRTファイルの再作成と読み込み。もしくは、IPアドレスを元のアドレスに戻す。

    面倒なので、IPアドレスを元のアドレスで、固定で割り振った。あと、もちろん、有線LANで。