SQL Server 2005 Express再インストール後、User instanceが使えなくなる

これLink の絡みでいまだSQL Server 2005 Expressを使用してたりするのですが、アメリカの方からDBに変なデータが入ったのだけど消せないから見てくれと言う連絡が。たく、面倒なことを

リモートデスクトップで彼のPCに入ると、まず最初の10分でSQL Serverが2008 Expressにバージョンアップされていることが分かる。VC++ 2008も入っていたのでこの時に一緒にインストールされ、やった本人自覚なしだろう(彼これで2回目)。多分動くのだろうけど、複数バージョンサポートしたくないので2008をアンインストールして2005 Express SP4を入れなおす。MDFファイルも2008用にアップグレードされており2005じゃ読めなくなってしまったので、マスターファイルに差し替え(動作確認機なので大したデータは入ってない)。

次にsqlcmd.exeを使ってユーザーインスタンスを有効に。しかしながら、ユーザーインスタンスでMDFファイルをロードしようとすると、Failed to generate a user instance of sql server due to a failure in starting the processなるエラーが出て失敗する。Management Studio ExpressでMDFファイルをサーバーインスタンスとしてAttachすると問題なくアクセスできるため、MDFファイルにもサーバーへの接続にも問題なさそう。あくまでユーザーインスタンスだけで起きる問題。

調べた結果はC:¥Documents and Settings¥(ユーザーインスタンスを利用するユーザー名)¥Local Settings¥Application Data¥Microsoft¥Microsoft SQL Server Data¥SQLEXPRESSディレクトリを消してしまうと言うもの。どうやら以前のSQL Serverによって作られたユーザーインスタンスのごみデータが残っていたらしい。

[参考]Fix error "Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance." (ASP.NET FAQ 2009/6/18投稿分)Link

— posted by mu at 08:41 pm   commentComment [0]  pingTrackBack [0]

 

あぢぃ

blog20120719-PSO2Symbol

PSO2Link でのコミュニケーションツールの一つである、シンボルチャット。あらかじめ用意されている図形パーツを並べることによって絵を描き、会話などに使用します。

この機能自体は前身のPSOからあったのですが、内容がシンプルだったためあまり多彩な絵を描けませんでした。私も一つの絵に盛り込めるパーツの数が少なかった(=複雑な絵が描けない)ので、あまり魅力を感じず早々に見向きしなくなった次第。

PSO2のそれはパワーアップされ、使用できるパーツの数は大幅に増量、各パーツにも拡大縮小・回転・ひずみ変形がかけられるようになったため、表現力が大幅にアップ。

…しかし相変わらず操作性はほめられたものじゃないな。

  • 複数のパーツを選択できない。今回作った頭部は(こんなものでもw)20以上のパーツを使って描いてあるのですが、位置をずらしたいと思ったらそれらのパーツを一つずつ選択・移動しないといけない。
  • 小さいパーツを移動しようと思ってマウスカーソルを合わせても、先に変形・拡大縮小が有効になる。
  • 文字が英数字しかない。今回書いたひらがなは、各種図形パーツの組み合わせ。
  • 作業時と使用時の色が違う(使用時に色が濃くなる)。

画像は拙作第2弾、初夏PSO2プレイ中の状態を情景豊かに表現したもの(^_^;) なにせ暖房機動かしてプレイしていますからねぇ。

— posted by mu at 09:21 am   commentComment [0]  pingTrackBack [0]

花火の季節

blog20120714-Firework

近所のは数分で終わってしまうため、打ち上げはじめてからカメラを準備していては、2~3発しか撮れず。いつやるか事前に調べていれば準備もできるのですが…

ああ、もうこんな季節。と感じるのは年をとったせいでしょう。

— posted by mu at 08:29 pm   commentComment [0]  pingTrackBack [0]

ザク豆腐

blog20120712-ZakuTofu

ザクの形を模した木綿枝豆豆腐。右に写っているのが容器。角の形の爪楊枝と付けろとか、赤はないのかとか、お味はもう少し枝豆風味を強くしても良かったかなとか、味で判断するなら男前豆腐店の方が好みだなとか。

— posted by mu at 09:48 pm   commentComment [0]  pingTrackBack [0]

PostgreSQLで遅くなるクエリ

CentOS 4.9Link &PostgreSQLLink (postgresql-server-8.1.11-1.el4s1.1)での話。

  • 200以上のカラムを持つテーブルが数10あるDBを構築
  • 各テーブルにはName varchar(10)とTime datatimeのカラムを含む
  • Nameに対してbtreeのインデックスが張ってある
  • 同じNameを持つ行が1~数行存在し、 NameとTimeの組み合わせでは重複は無い

こういうテーブルに対し以下のSQLを発行すると2~3秒かかる現象が。

SELECT max(Time),min(Time) FROM table1 WHERE Name='hoge'

つまりName='hoge'がどの時間範囲で存在しているかを知るのが目的。似たような構造を持つテーブルは他にもたくさんあるのに、現象が発生するテーブルは一つだけ。しかもデータ行が100万を越えた辺りから発生する。テーブルを一旦削除してデータを入れなおしても同じ。

一方以下のクエリは見た目一瞬で完了。

SELECT Name FROM table1 WHERE Name='hoge'
SELECT count(Name) FROM table1 WHERE Name='hoge'

最終的に以下のクエリが期待している速度で完了するようなので、理由はともかく採用。

SELECT max(Time),min(Time) FROM table1 WHERE Name='hoge' GROUP BY Name

Name自体はSELECTする項目ではなくWHERE句でもNameは単一として指定しているので、GROUP BYの有無に関わらず出る結果は同じはず。一方オプティマイザは両者では異なる方針を出すようで、GROUP BYを付けないとインデックスを2回使ったりTimeがNULLかどうかを調べたり。

db1=> explain SELECT max(Time),min(Time) FROM table1 WHERE Name='hoge' GROUP BY Name;
                                          QUERY PLAN                                          
----------------------------------------------------------------------------------------------
 GroupAggregate  (cost=0.00..2908.69 rows=1 width=22)
   ->  Index Scan using index1 on table1  (cost=0.00..2901.15 rows=1003 width=22)
         Index Cond: (Name = 'hoge'::bpchar)
(3 rows)

db1=> explain SELECT max(Time),min(Time) FROM table1 WHERE Name='hoge';
                                                   QUERY PLAN                                                   
----------------------------------------------------------------------------------------------------------------
 Result  (cost=526.88..526.89 rows=1 width=0)
   InitPlan
     ->  Limit  (cost=0.00..263.44 rows=1 width=8)
           ->  Index Scan Backward index1 on table1  (cost=0.00..264491.27 rows=1004 width=8)
                 Filter: ((Time IS NOT NULL) AND (Name = 'hoge'::bpchar))
     ->  Limit  (cost=0.00..263.44 rows=1 width=8)
           ->  Index Scan using index1 on table1  (cost=0.00..264491.27 rows=1004 width=8)
                 Filter: ((Time IS NOT NULL) AND (Name = 'hoge'::bpchar))
(8 rows)

う~む、よく分からん(- -;)

— posted by mu at 12:19 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0161 sec.
prev
2026.3
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31