NAV 開発環境を必要とせずに、 Dynamics NAV 2013 テーブル メタデータを SQL Server データベースから直接読み取れるようにしたいと考えています。
次のようなクエリを使用して、バイナリ SQL の「イメージ」BLOB 列を表示できます (WHERE 句で適切にフィルター処理します)。
SELECT
o.[Name],
m.[Object Type],
m.[Metadata], -- XML Metadata
m.[User Code], -- C# Metadata
m.[User AL Code] -- C/AL Metadata
FROM [Navision].[dbo].[Object Metadata] AS m
JOIN [Navision].[dbo].[Object] AS o
ON m.[Object ID] = o.[ID]
AND o.[Company Name] = 'YourCompanyName'
AND o.[Type] = 0 -- 0 is NAV Table Object Type
[メタデータ]、[ユーザー コード]、および [ユーザー AL コード] からのバイナリ データを、.Net コードまたは SQL ドライバーを使用したクイック スクリプトを使用してファイルに保存できます。7-zip を使用して解凍し、16 進エディタを使用して表示し、Cygwin の「file」コマンドを使用してこれらの BLOB ファイル タイプを検出しようとしました。
残念ながら、バイナリデータを読み取り可能または使用可能な形式にデコードまたは解凍する方法がわかりません。これらのフィールドのデータを直接使用できるようになるまでは、NAV 開発環境を開き、オブジェクト デザイナーを使用して、ゼロから始まるルックアップ リスト ドロップダウン メニューのコンマ区切りの OptionString プロパティを表示する必要があります (リスト内の各項目は、整数としてのバックエンド データベース - 最初の項目は 0、2 番目の項目は 1 など)。文字列値は SQL ルックアップ テーブルには存在しませんが、NAV はそれらをテーブル メタデータ BLOB に配置します。
これは、NAV 開発者がこれらの番号から名前への NAV カスタム フィールド マッピングを検索する必要なく、DBA として NAV ユーザーを完全にサポートするためのミッシング リンクです。次に、これらのリスト値を検索し、必要に応じて、一致する SQL CASE ステートメントまたはカスタム ルックアップ テーブルを作成できます。
この部分があれば、Dynamics NAV フロントエンド ユーザーまたは開発者ツールにアクセスする必要なく、高度な SQL ビュー、クエリ、レポート、およびツールを作成できるはずです。
これらの NAV オブジェクト メタデータ blob プロパティに使用されるバイナリ データ形式についての知識があれば教えてください。読み取り可能または使用可能な形式に変換する方法についてのアドバイスは役に立ちます。