2008年4月27日日曜日

SQLServer MDF LDFファイルからの復旧

SQLServerマシンが故障!

幸いハードディスクの中身はみられるようだ。
バックアップを取っていなかったデータベースが・・・だが、MDFとLDFファイルは救えた。
新サーバにそのファイルを配置して以下のSQLを実行。

EXEC sp_attach_db
     @dbname = N'データベース名',
     @filename1 = N'パス指定¥***.MDF',
     @filename2 = N'パス指定¥***.LDF'

救出したMDFとLDFがそのまま使えるようになります。

2008年4月24日木曜日

PostgreSQL トリガー処理サンプル(plpgsql)

--プロシージャの作成
CREATE OR REPLACE FUNCTION delete_data()
RETURNS "trigger"
AS '
  DECLARE
    Cnt INT4;
  BEGIN
    Cnt := (SELECT COUNT(*) FROM table2 WHERE table2.id = OLD.id);
    IF (Cnt > 0) THEN
      DELETE FROM table2 WHERE table2.id = OLD.id;
    END IF;

    RETURN OLD;
  END;
'
LANGUAGE 'plpgsql';


--トリガーの作成(table1のレコードを削除した後に指定プロシージャを実行)
CREATE TRIGGER delete_data
after delete on table1
for each row
EXECUTE PROCEDURE delete_data();
 

2008年4月17日木曜日

DELL社製PCにてキーボード入力文字の表示が遅い!

通常であればコンパネ→キーボード→速度→文字の入力で
表示までの待ち時間、表示間隔あたりで調整するのですが、全く改善されない・・・・・
Office2007がインストールされておりIME2007が問題?それを疑ったが これも全く関係ない・・・
仕方がないのでDELL社に問い合わせたところ・・・・・
「PCMServiceがメモリを正しく開放しないためメモリ消費を引き起こす起因となっております。」という回答を頂きました。 要するにメモリリークですな。
DELL固有の常駐プログラム(PCMService)が問題だったようです。
※PCM ServiceはMedia Direct3関連のサービス

解決方法
その常駐ソフトを起動させないようにする
ファイル名を指定して実行→msconfig→スタートアップ内のPCMServiceのチェックを外す。
適用→OK→再起動

入力がスムーズになりました。(^^)
ちなみに修正パッチはリリースされていないようで、DELLでは常時解除した状態でので使用を推奨しているようです。

2008年4月9日水曜日

FortiGate 200 故障!

突然インターネットが使えなくなった!

落ち着いて、まずゲートウェイサーバーへping・・・大丈夫のようだ。
DNSかな?ということでnslookup stdman.blogspot.com・・・応答がある。(LAN内にDNSキャッシュサーバあり)
ルーター(FortiGate)へping・・・んっ!応答なし。

FortiGate本体を見てみると電源は付いているがSTATUSランプが点滅してる。
とりあえず再起動してみたが状況変わらず。一体何が起こっているのか・・・。

コンソール画面で起動処理の内容を見てみるためハイパーターミナルを使いCOM接続。
そして起動中のコンソール画面をみると・・・ CRC Errorという文字が! ディスクの読み書きができないようだ。
とりあえず電源OFFにして1時間ぐらい放置してからONしたらなんと起動できた。

とりあえず復旧したので一安心
だがログには「Log disk failure is imminent」HDがそろそろ壊れますっだってよ!おいおい頼むよ~
仕方がないので今のうちにFortiGate60を代替機として稼働させ修理決行!

ボソボソ:公開サーバが4台あるので、こういう障害は来て欲しくない!ていうかあってはならない!
迷惑を掛けないためにも副回線を確保して状況に応じて切り替えるようにした方ががいいかな・・・

2008年4月7日月曜日

IE7でのファイルダウンロード

Windows XP で Internet Explorer 7 を使用してファイルをダウンロードできないことがあります。
たとえば、[ファイルのダウンロード] ダイアログ ボックスで [保存] をクリックした後に、ファイルがダウンロードされない。
更新プログラムを適用する。 くわしくはこちらのマイクロソフトサポートページをどうぞ
 

2008年4月4日金曜日

PHP + MSSQL (Microsoft SQLServer)

環境:
CentOS 4.5
Apache-2.2.4
PHP-5.1.6 + Zend Optimizer v3.3.0
FreeTDS-0.64
libiconv-1.10 with JpPatch


CentOSのインストールは・・・
1.テキストインストールを基本とする。
2.パッケージは一切インストールしない。
とにかく余計なものはインストールしないことが基本です。
インストール後、開発ツールのみyumにてインストールしておきます。

OSのインストールができたところで必要なソフトをソースからインストールします。

●Webサーバのインストール
# wget http://archive.apache.org/dist/httpd/httpd-2.2.4.tar.gz
# tar zxvf ./httpd-2.2.4.tar.gz
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all
# make;make install
※Zend Optimizerを後でインストールするためMPMはpreforkとする(preforkのみ対応のため)

●libiconv 1.10 with JP-Patch
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-cp93.patch.gz
# gzip -dc libiconv-1.10.tar.gz tar xvf -
# cd libiconv-1.10
# gzip -dc ../libiconv-1.10-ja-1.patch.gz patch -p1
# ./configure
# make;make install
※参考ページhttp://www2d.biglobe.ne.jp/~msyk/software/index.html

●FreeTDS ※2008/04/04現在0.64が最新
# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz

EUCJP-MSを使う必要がある場合
# wget http://www.komine.biz/downloads/freetds-0.64.patch
# patch -p0 < freetds-0.64.patch

# ./configure --with-msdblib --with-libiconv-prefix=/usr/local --prefix=/usr/local/freetds
# make;make install

DB接続情報の作成
# vi /usr/local/freetds/etc/freetds.conf
[SQL2005]
    host = DBServerIP
    port = 1433
    tds version = 8.0
    client charset = CP932

●PHP5.1.6
# tar zxvf php-5.1.6.tar.gz
# cd php-5.1.6
# ./configure
--with-apxs2=/usr/local/apache/bin/apxs
--enable-mbstring
--with-mssql=/usr/local/freetds
--enable-pdo=shared
--with-sqlite=shared
--with-pdo-sqlite=shared
--with-pdo-dblib=shared,/usr/local/freetds
--enable-calender
--with-xmlrpc=shared
# make;make install
# cp ./php.ini-dist /usr/local/lib/php.ini
# vi /usr/local/lib/php.ini
    output_buffering = off → 4096

    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo.so
    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo_dblib.so
    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/xmlrpc.so
    ;extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo_sqlite.so
    ;extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/sqlite.so

    date.timezone = Asia/Tokyo

    session.gc_maxlifetime = 1440 → 72000 (必要に応じて)
    session.cache_limiter = nocache → private

    [mbstring]
        mbstring.***のコメント解除
        ただしmbstring.http_output は SJIS → EUC-JPにする。

PEARモジュールのインストール
# pear install db date install

こんな感じで表示されます。↓
ok: channel://pear.php.net/Date-1.4.7 install
ok: channel://pear.php.net/DB-1.7.13

●Zend Optimizer
# gunzip -c ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz tar xf -
# cd ZendOptimizer-3.3.0-linux-glibc21-i386
# ./install あとは画面に沿って設定していく。

info.phpで以下の内容が表示されているか確認
「with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies」

●MSSQLへの接続テスト
ここではFreeTDS付属のtsqlを使ってテストしてみます。
# /usr/local/freetds/bin/tsql -S [SQL2005(freetds.conf定義)] -p [1433(port)] -U [DBユーザ]
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password: *****(DBユーザのパスワード)
(以下のようになるとログイン成功です)
1>
では実際にデータを取得してみる。
1>use DBNAME
2>select * from TBNAME
3>GO
データが表示されればOK


補足
SQLServer:SJIS
PHPソース:EUC-JP








Google検索