2008年3月5日水曜日

MS DTC のトランザクション分離レベル

SQLServer では ReadCommitted を指定しているにも関わらず、やたらとブロックが発生してしまうと言う現象があった。

その原因は以下の通り↓
COM+ が MS DTC トランザクションの接続に参加すると、トランザクション分離レベルが Serializable に設定されます


確かに分散トランザクションとするために、サービスコンポーネントを COM+ 登録してるけれども、まさか既定が Serializable だったとは・・・。
SQLServer のデフォルトが ReadCommitted なんだから、合わしておいてくれよって感じです。

2008年3月4日火曜日

IEをメニュー無しで開く

iexplore.exe -k として実行すると、メニューやステータスバーが無い状態で IE が開く。

URL の入力は Ctrl+o
IE を終了する時は Ctrl+w

取り敢えず、こんな事もできるんや~程度で。

2008年3月1日土曜日

SQLServer2000からSQLServer2005へのバックアップ復元について-その2

今の現場では、ローカル環境、検証環境、受入環境それぞれに SQLServer が存在しており、DB のデータをバックアップから復元する事も多々ある。しかし、ある環境で取得したバックアップを、別の環境へ単純に復元しただけでは使用できず、いつも「おまじない」と言われているクエリを実行していた。

おまじない:
EXEC sp_change_users_login 'Update_One','不明なデータベース ユーザー名','新しいログイン アカウント名'

今一、理由がわからず、「SQLServer のバグかね」等と言っていたのだが、何の事は無い、ここに詳しい説明が書いてあった。
SQL Server 2005 Tips and Tips

なるほど、サーバー間での SecurityID(ログインアカウントに対して内部的に割り当てられたもの) は転送できないと。

しかし、こんなページがあったとは・・・MSの技術資料って何であんなにわかりにくいんだろうか、色んな意味で。

SQLServer2000からSQLServer2005へのバックアップ復元について

ファイルとファイル グループのバックアップは、そのファイルやファイル グループが所属していたデータベースにのみ復元できます。

いや~、これを知らずに何度も何度も SQLServer2000 のバックアップファイルを SQLServer2005 に復元しようとして失敗しまくり。「別のデータベースを含んでいます」オンラインだたよー。

復元するためのメニューとしては、この「ファイルとファイルグループ」と言うのと「データベース」と言う項目があったけど、 GUI の表示内容が酷似してて、違いに気付かなかった・・・。
「2000 の時もファイルから直接復元してたじゃないかー」と思ってたら、デバイスから復元してた事に今気付いた。そうか、意味が違うのか・・・って気付くの遅すぎ。

結論としては、「データベース」メニューから復元しろって事ですな。