問題タブ [esent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - ESENT テーブル ブラウザ?
Esent データベース エンジンを使用した経験のある人はいますか? 私はそれが何に使われているかを見てきました、そして興奮しています。
Active Directory は、従来 "Jet" と呼ばれていた Indexed Sequential Access Method (ISAM) テーブル マネージャーの上に実装されています。この同じテーブル マネージャーは、Exchange、ファイル レプリケーション サービス (FRS)、セキュリティ構成エディター、証明書サービス、Windows インターネット ネーム サービス (WINS)、およびその他のさまざまな Windows コンポーネントで使用されます。 http://technet.microsoft.com/en-us/library/cc961824.aspx
API http://www.codeplex.com/ManagedEsentの ac# ラッパーもあり、Ayende Rahien の DivanDB (.net ドキュメント ストレージ LINQ エンジン) https://rhino-tools.svn.sourceforge.net/で使用されています。 svnroot/rhino-tools/branches/rhino-divandb
とにかく-「テーブルブラウザ」/Esentを管理するためのGUIを知っている人はいますか?
exchange-server - Exchange サーバー (.edb) ファイル内のテーブル
Exchange サーバーの .edb ファイルで使用されるさまざまなテーブルと、それらのスキーマを教えてください。
windows - Extensible Storage Engine(ESENT)テーブルのインデックスを列挙する
バックグラウンド
eselinqというGoogleCodeプロジェクトで、ESEから.NETおよびLINQへのアダプターを作成しています。私が理解できない重要な関数の1つは、テーブルに定義されているインデックスのリストを取得する方法です。LINQ部分がインデックスを使用できる時期を自動的に判断できるように、使用可能なインデックスを一覧表示できるようにする必要があります。これにより、適切なインデックスが見つかった場合に、ユーザークエリの計画がはるかに効率的になります。
インデックス情報をクエリするための2つの関連する関数があります。
JetGetTableIndexInfo
-tableIDでインデックス情報を取得しますJetGetIndexInfo
-tableNameでインデックス情報を取得します
これらは、関連するテーブルの指定方法(名前またはテーブルID)のみが異なります。これらは私が望む機能をサポートするように思えますが、すべての情報レベルでは、情報を照会するための特定のインデックスがすでにある必要があるようです。唯一の例外はですがJET_IdxInfoCount
、それは存在するインデックスの数だけをカウントします。
JET_IdxInfo
そのJET_INDEXLIST
音はもっともらしいですが、特定のインデックスの列のみをリストします。
代替案
データベーステーブルに対応する.NETタイプの注釈など、別の方法でインデックス情報を取得したり、事前にインデックスマッピングを提供するように要求したりできることを認識しています。この1つの関数を除いて、ユーザーが追加情報を提供しなくても、他のすべてをすぐに機能させるのに十分なイントロスペクションが実装されていると思います。
別のオプションは、システムテーブルを調べて、関連するインデックスオブジェクトを見つけることですが、これは、文書化されていないインターフェイスに依存することを意味します。
この質問を満たすために、テーブルのインデックス(名前だけで十分です)を列挙するサポートされた方法が必要です。
c# - .Net ファイナライザーの順序 / Esent と Ravendb のセマンティクス
理解するのを手伝ってください。私はそれを読みました
「ファイナライザーの実行の時間と順序を予測または事前に決定することはできません」
正しい?
ただし、RavenDB ソース コード TransactionStorage.cs を見ると、これがわかります
おそらく SafeHandle を使用してネイティブ リソースのハンドルを取得する API クラス (Managed Esent に属する)?
したがって、ネイティブ ハンドルの SafeHandle が TransactionStorage の前にファイナライズされる可能性があることを正しく理解していれば、望ましくない影響を与える可能性があります。
実際に Esent コードに飛び込むと、SafeHandles は使用されません。
C#経由のCLRによると、これは危険ですか?
Managed Esent (NativeMEthods.cs) は次のようになります (Ints と IntPtrs を使用しますか?):
Managed Esent はファイナライズ/破棄を正しい方法で処理していますか? 2 つ目は、RavenDB がファイナライザーを正しい方法で処理しているか、Managed Esent を補っていますか?
c# - 複数値のESE列の値を置き換える方法は?
ESEデータベースのテーブルの1つに、その人の電話番号を保持する複数値の短いASCIIテキスト列があります。
新しい値のセットがあります。古い値を完全に消去して、新しい値のみを使用したいと思います。
JET_bitSetRevertToDefaultValueビットが機能していないようです。MSDNのドキュメントには、「後続の列の取得操作で列がデフォルトの列値を返すようになります。既存の列値はすべて削除されます」と記載されていますが、何も実行されないことがわかりました(戻り値は返されません)。
または、列に含まれている値の数を簡単に確認する方法はありますか(たとえば、更新ではなく挿入を行っている場合など、これはゼロになる可能性があります)。もしそうなら、私は'nValues'から1までのループを実行するだけで、itagSequence値を提供しながら、nullに設定して値を消去し、目的を達成することができます。
私はC#をプログラミングしており、ManagedEsentライブラリの最新バージョンを使用しています。
前もって感謝します!
c# - ASP.NET + スレッド対応のアンマネージ API
永続化のために ESENT を使用する ASP.NET アプリケーションについて考えています。
現時点では、これは私の趣味のプロジェクトなので、要件は非常に柔軟です。ただし、Windows 7、Windows 2008、および 2008 R2、.NET 3.5 以降、およびデフォルトの IIS 設定で動作することを望みます。
ESENT では、ほとんどの操作でセッション オブジェクトを開く必要があります。ドキュメントには、「セッションは使用されたスレッドを追跡し、開いているトランザクションで複数のスレッドで使用されるとエラーがスローされます。」API ドキュメントでは、マネージド スレッドではなく、ネイティブ スレッドについて言及しています。
セッションを開く操作は比較的コストがかかると思います。そのため、HTTP 要求ごとにセッションを開いたり閉じたりしたくありません。
最後に質問です。
C#コードを実行するすべてのネイティブスレッドで、asp.netで何かを1回だけ初期化/初期化解除するにはどうすればよいですか?
以下に投稿されたようなコードは機能しますか?
BeginThreadAffinity メソッドを使用して、asp.net マネージ スレッドを常にネイティブ スレッドに固定しておくことに何か問題があるのでしょうか。IIS が 1 か月間再起動せずに負荷をかけられた後、セッションがリークすることはありませんか?
前もって感謝します!
c# - ESENTデータベースエンジンのファイルアクセスが拒否されました
管理対象ライブラリでESENTWindowsデータベースを使用しようとしていますが、常にエラーが発生します
データベースを開くためのコードは
私はこれをWindows7でテストしており、アプリケーションはASP.NETアプリケーションです。誰かがこれについて何か考えを持っていますか、ドキュメントはかなりスリムです。
exchange-server - LinuxでのExchangeedb
60GBのedbファイルがあり、データベースを個別の電子メールに分割したいと思います。元のドメイン情報がないため、Server2k8vmを起動してそこに再接続することはできません。バイナリデータ(0x09、0x0a、0x0d、および0x20から0x7fではないバイト)をファイル(60から30 GBに変更)から削除し、それを明白なSMTPヘッダーで分割するという単純なアプローチである程度の進歩を遂げました。Exchangeは電子メール全体を連続したブロックにまとめておらず、多くの電子メールを複製しているように見えるため、このアプローチは機能していないようです(これは、ファイル全体をファイルシステムとして扱うのではなく、ファイルシステムとして扱うことによるものです。ファイルシステムをファイルシステムにし、電子メールを/ var / mailなどに保存するなどのより賢明な方法)。
それで、質問は次のとおりです:Googleが私に見せることができないか、見せないであろうExchangeデータベースファイルフォーマットのためのどんなツールと文書が世界に隠されていますか?
.net - EDB ファイル形式
Exchange データベースの EDB ファイル形式に関する情報が必要ですか?
次のリンクで提供されている情報を確認しました。
http://sourceforge.net/projects/libesedb/files/
ドキュメントは優れていましたが、非常に紛らわしいので、さらにヘルプが必要です。
EDB フォーマットに関する詳細情報をお持ちの方がいらっしゃいましたら、私に提供してください。
ご協力いただきありがとうございます。
esent - PageSizeを変更すると、JetInitは-1213を返します
既存のマウントされていないesentデータベースファイル(Windows.edbなど)を読み込もうとしています。私はいくつかのedbファイルをかなりうまくいじっています。しかし、8192と等しくないPageSizeでデータベースを開こうとすると、エラーが発生します。
これが私のコードです(エラー処理なし):
FError:= JetSetSystemParameter(@FInstance、nil、JET_paramDatabasePageSize、FPagesize、nil);
FError:= JetCreateInstance(@FInstance、'EDBInstance');
FError:= JetInit(@FInstance);
FError:= JetBeginSession(FInstance、@FSessionId、nil、nil);
FError:= JetAttachDatabase(FSessionId、FFilename、JET_bitDbReadOnly);
FPageSize = 8192である限り、正常に機能します。他の値(4096、32768)は、-1213コードを返すJetInit呼び出しで失敗します。データベースに適切なPageSize値を設定しないと、JetAttachDatabaseで同じエラーが発生します。これは理解できます。しかし、JetInitによって返される最初のエラーは理解できません。私は何を間違えますか?Laurion Burchallがこれを読んでいることを願っています!:-)
私はWindows764ビットを実行しています。