0

私が読んだファイルのページサイズは 32768 です。JET_paramDatabasePageSize を 32768 に設定すると、JetInit は -1213 を返します。次に、JET_paramRecovery を「オフ」に設定すると、JetInit は成功します。しかし、JetAttachDatabase を使用すると、-550 を返します。

これが私のコードです:

err=JetSetSystemParameter(&instance,sesid,JET_paramDatabasePageSize ,32768 ,NULL);  
err=JetCreateInstance(&instance,NULL);
err=JetSetSystemParameter(&instance,sesid,JET_paramRecovery,0,"Off");
err=JetInit(&instance);
err=JetBeginSession(instance,&sesid,NULL,NULL);
err=JetAttachDatabase(sesid,buffer, JET_bitDbReadOnly );
err=JetOpenDatabase  ( sesid, buffer, NULL, &dbid, JET_bitDbReadOnly );

何が問題なのですか?私は Windows 7 32 ビットを実行しています。

4

1 に答える 1

0

ページ サイズは (インスタンスだけでなく) プロセスに対してグローバルであり、ログ ファイルとデータベースに永続化されるため、ページ サイズの変更は面倒なほど難しい場合があります。

データベースにアクセスしようとしている情報はありますか? それとも、開発中にこれを経験しただけですか?

開発中にこれを見た場合、最も簡単な方法はすべてを吹き飛ばすことです (del .edb edb ) [プレフィックスを「edb」のままにしたと仮定して]。

また、データベースが 32k ページであると確信していますか? で確認できますesentutl.exe -mh <database-name>

気にしてページサイズを切り替えた場合、データを回復するのが難しくなります。(頭のてっぺんからはわからないので、いくつか試してみる必要があります...)

-マーティン

于 2013-07-15T07:19:16.057 に答える