gist

2008年6月25日水曜日

インターネットVPNとフレッツグループアクセスの共存

ip route default gateway pp 2
ip route 192.168.2.0/24 gateway pp 1
ip route 192.168.3.0/24 gateway tunnel 1
ip filter source-route on
ip filter directed-broadcast on

ip lan1 address 192.168.1.1/24

pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname (フレッツグループアクセスのユーザID) (パスワード)
ppp lcp mru on 1454
ip pp mtu 1454
pp enable 1

pp select 2
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname (インターネット接続のユーザID) (パスワード)
ppp lcp mru on 1454
ppp ipcp ipaddress on
ip pp address (固定IPアドレス)
ip pp mtu 1454
ip pp nat descriptor 1
pp enable 2

tunnel select 1
ipsec tunnel 101
ipsec sa policy 101 1 esp 3des-cbc md5-hmac
ipsec ike local address 1 192.168.1.1
ipsec ike pre-shared-key 1 text (事前鍵パスワード)
ipsec ike remote address 1 (IPSec接続先の固定IPアドレス)
tunnel enable 1


nat descriptor type 1 masquerade
nat descriptor address outer 1 (固定IPアドレス)
nat descriptor masquerade static 1 1 192.168.1.1 udp 500
nat descriptor masquerade static 1 2 192.168.1.1 esp

ipsec auto refresh on

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.100-192.168.1.191/24

dns service off
dns server (プロバイダから割り当てられたDNS)
dns private address spoof on

2008年6月21日土曜日

インデックスの整合性エラーを修復する手順

問題のあるデータベースに対して DDBC CHECKDB を実行します。
実行結果にインデックスの整合性エラーが出力された場合、以下のコマンドでインデックスのエラーを修復できます。

DDBC CHECKDB(dbname, 'repair_rebuild')

2008年6月20日金曜日

障害後のMDFファイルとLDFファイルだけで復旧させる方法

トランザクションログがない状態で、障害発生後のMDFファイルとLDFファイルで復旧させる方法を説明します。この方法で復旧できない場合は、直近のバックアップファイルでの復旧となります。

1. 復旧準備

(1) 該当のデータベース物理ファイル(mdf、ldf)を、別のディレクトリに移動
(2) Enterprise Manager から、問題のデータベースと同じ名前、同じデータファイル名、同じログファイル名を作成します。
(3) SQL Server を停止
(4) 手順(1)にて移動させたデータベース物理ファイル(mdf、ldf)を、手順(2)で作成した新規のデータファイル、ログファイルに上書きコピー
(5) SQL Server を起動

※この時点ではまだデータベースにはアクセスできない

2. DBCC DBRECOVER
2-1 未確認モード解除

use master
go
sp_configure 'allow updates',1
go

reconfigure with override
go

-- 未確認モード解除
update master..sysdatabases set status = 16 where name = 'データベース名'
go


2-2 DBCC DBRECOVER
DBCC DBRECOVER ('データベース名', IGNOREERRORS)

※この時点で「未確認」のままであれば、緊急モードで DDBC REBUILD_LOG を実施。

2-3 DBCC CheckDB

DBCC CHECKDB ('データベース名')

2008年6月19日木曜日

復旧モデルがシンプルの場合の障害対策の限界

SQL Server 2000では、データベースを作成すると復旧モデルはシンプルが初期値になります。
復旧モデルがシンプルの場合、障害対策には限界があります。


障害発生時、現場のSQL Serverに対して以下のコマンドでトランザクションログを救出します。

BACKUP LOG database_name TO DISK='filepath'
WITH NO_TRUNCATE

しかし、このコマンドは、復旧モデルがフル、または一括ログに設定されている場合に限り、有効です。
復旧モデルがシンプルの場合、直近のフルバックアップで復旧するしかありません。


MDFファイル破損、トランザクションログなしで、障害後のLDFファイルからデータを復旧したい

2008年6月13日金曜日

エラーが発生したらロールバックする

BEGIN TRANSACTION MyTransaction
INSERT INTO Patient VALUES ('テスト患者', '2004/1/5')
SELECT @ins_error = @@ERROR

IF @ins_error = 0
BEGIN
COMMIT TRANSACTION MyTransaction
END
ELSE
BEGIN
PRINT 'エラーが発生したのでロールバックします'
ROLLBACK TRANSACTION MyTransaction
END

SQL Server 2005では構造化例外が使用可能なようです。
まだまだ現役のSQL Server 2000の全機能のうち、僕の会社では2%も使っていないと思われます。Excel以下のひどい扱いです。せめてトランザクションが使えるようになってほしいです。何だか言っていることが悲しいです。

2008年6月6日金曜日

ATOKにしようと決めた瞬間

急性上気道炎→旧成城木藤園

を変換されたとき、旧日本庭園をイメージしたので、会社のPCをATOKにします。これで3個目。

2008年6月3日火曜日

getURL関数でPOSTすると、初回実行時のデータが送信される

ActionScript 2.0のgetURL関数を使ってデータを送信する場合、

var mc:MovieClip = _root.createEmptyMovieClip("mc", 0);
mc.getURL("送信先のURL", "_self", "POST");
mc.removeMovieClip();

とコーディングします。
最後にremoveMovieClip関数を呼び出して、初回実行時のデータを呼び出さないようにします。


参考URL:苦い開発「getURL()でPOST送信」

2008年6月2日月曜日

ブラウザの[×]ボタン押下時に画面遷移をキャンセルさせる

HTMLの<header>タグ内にJavaScriptで以下のように記述します。

window.onbeforeunload = function(){
    return '本当に終了しますか?';
}

FireFox 2.0以降ではブラウザから以下のような確認メッセージが表示されます。


[キャンセル]ボタンを押すと画面遷移しません。[OK]ボタンを押すと画面が閉じられます。

確認画面へのメッセージは、スクリプトの返り値として(return)記述します。