2011年9月7日水曜日

Access MDBファイルのリンクテーブル(ODBC)接続先を変更するソフト

EditMdbLink

Microsoft Access データベース(Mdbファイル)の、ODBCを経由したリンクテーブル接続先を容易に更新できるソフトです。

次のような場合に有効です:

SQL Serverからリンクテーブルを貼り付けている。開発するとき、お客様に納品するとき、別々のサーバに接続したい。

入手は、こちらから。

2011年9月6日火曜日

loを作成し、書き込む方法

PostgreSQLで、ラージオブジェクトを作成し、書き込む方法。

SELECT lo_creat(0);
結果: 17242

SELECT lo_open(17242, 393216);
結果: 0

SELECT lowrite(0, E'\x31\x32\x33'::bytea);
結果: 3

SELECT lo_close(0);
結果: 0

注意点:同じトランザクション内で実行いたします。そうでなければ、lo_openで開いたハンドルがlowriteに渡る頃には閉じていて、使えないようになります。こちらに注意書きが有りました。

2011年9月2日金曜日

WinDbgで、エラー報告データを解析(.NETfx 2.0向け)

備忘録です:

WinDbgを起動する。

[File]→[Open Crash Dump...]

次の場所を開く(Windows Server 2003):
%USERPROFILE%\Local Settings\Application Data\PCHealth\ErrorRep\QSignoff

1556130.cab等、.cabファイルの方を開く。

~~~

打ち込む(.NETfx 2.0対応のため):
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll

結果、次の様なメッセージ:
0:000> .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
------------------------------------------------------------
sos.dll needs a full memory dump for complete functionality.
You can create one with .dump /ma <filename>
------------------------------------------------------------


~~~
SOS デバッガ拡張 (SOS.dll) コマンド一覧は、こちら。

~~~

打ち込む(.NETfxアプリのダンプかどうか確認する為):
!Threads

結果:
0:000> !Threads
ThreadCount: 3
UnstartedThread: 0
BackgroundThread: 2
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
                                      PreEmptive   GC Alloc           Lock
       ID OSID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
   0    1 1a18 001650e8      a020 Enabled  0116c2ac:0116dfe8 001617e8     1 MTA Sync2ss.RequestFailureException (0116b16c)
   2    2 1a3c 00171858      b220 Enabled  00000000:00000000 001617e8     0 MTA (Finalizer)
   4    3 18f0 001afb08   200b220 Enabled  01140178:01141fe8 001617e8     1 MTA


~~~

打ち込む(落ちる原因となった例外の情報を得るため):
!pe

結果:
0:000> !pe
Exception object: 0116b16c

Exception type: Sync2ss.RequestFailureException
Message: SS.Auth失敗
InnerException: System.Net.WebException, use !PrintException 01169cb0 to see more
StackTrace (generated):
    SP       IP       Function
    0012F150 00C7125A Sync2ss!Sync2ss.Sync+AutoAuth.Auth()+0x4b2
    0012F290 00C70A4C Sync2ss!Sync2ss.Sync+<GetRootEnts>d__e.MoveNext()+0x94
    0012F30C 6C2FB7A3 System_Core_ni!System.Linq.Enumerable.First[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)+0x6b
    0012F340 00C706BF Sync2ss!Sync2ss.Sync.Find(System.String)+0x177
    0012F3B8 00C7033C Sync2ss!Sync2ss.Sync.Run()+0x64
    0012F444 00C7018A Sync2ss!Sync2ss.Program.Main(System.String[])+0x11a

StackTraceString: <none>
HResult: 80131500


* 上に出ていますException typeMessageStackTraceが確認できたら原因追求がし易くなるはずです。

~~~

打ち込む(オブジェクトの型・フィールド等を確認する):
!do 0116b16c

結果:
0:000> !do 0116b16c
Name: Sync2ss.RequestFailureException
MethodTable: 007551b8
EEClass: 00c80bf4
Size: 72(0x48) bytes
 (C:\Program Files\Sync2ss\Sync2ss.exe)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
79330b24  40000b5        4        System.String  0 instance 00000000 _className
7932ff98  40000b6        8 ...ection.MethodBase  0 instance 00000000 _exceptionMethod
79330b24  40000b7        c        System.String  0 instance 00000000 _exceptionMethodString
79330b24  40000b8       10        System.String  0 instance 0116b148 _message
7932a480  40000b9       14 ...tions.IDictionary  0 instance 00000000 _data
79330cb8  40000ba       18     System.Exception  0 instance 01169cb0 _innerException
79330b24  40000bb       1c        System.String  0 instance 00000000 _helpURL
79330740  40000bc       20        System.Object  0 instance 0116b280 _stackTrace
79330b24  40000bd       24        System.String  0 instance 00000000 _stackTraceString
79330b24  40000be       28        System.String  0 instance 00000000 _remoteStackTraceString
79332d70  40000bf       34         System.Int32  1 instance        0 _remoteStackIndex
79330740  40000c0       2c        System.Object  0 instance 00000000 _dynamicMethods
79332d70  40000c1       38         System.Int32  1 instance -2146233088 _HResult
79330b24  40000c2       30        System.String  0 instance 00000000 _source
793333ec  40000c3       3c        System.IntPtr  1 instance        0 _xptrs
79332d70  40000c4       40         System.Int32  1 instance -532459699 _xcode


今回得られた有用な情報は、ここまでです。