CData OData Provider で Dynamics NAV に接続
この記事では、Dynamics NAV OData サービスのセットアップ方法と、CData ADO.NET Provider for OData を使用してこれらのサービスに接続する方法を紹介します。この記事では ADO.NET プロバイダーを使用していますが、ODBC や JDBC など他のテクノロジーからも接続できます。
一部の Dynamics NAV インスタンスでは、無料の Community Edition では利用できないセキュア認証が必要になる場合があります。
Dynamics NAV Web サービスのセットアップ
以下の手順に従って、Dynamics NAV 管理ツールで OData サービスを有効にします。
- 管理ツールで OData Services ノードを展開し、Enable OData Services チェックボックスがオンになっていることを確認します。

- Dynamics NAV で「Web Services」を検索します。OData サービスを通じて現在公開されているすべてのページの一覧が表示されます。
- New ボタンをクリックして新しいサービスを追加します。
- 取得するデータの Object Type を選択します。
- 取得するデータの Object Id を選択します。
たとえば、顧客の一覧を取得するには、Object Id が 22 のページを公開するように設定します。 Service Name は、CData プロバイダーで Dynamics NAV からデータを取得する際にテーブル名として表示されます。これで、OData 経由で Dynamics NAV に接続できるようになります。

Dynamics NAV への接続
Dynamics NAV に接続するには、以下のプロパティが必要です。これらの情報は Dynamics NAV 管理ツールで確認できます。
-
URL:URL は以下の形式になります:
http://<Server>:<WebServicePort>/<ServerInstance>/OData
- User:Dynamics NAV にユーザーを認証するためのユーザー名。
- Password:Dynamics NAV にユーザーを認証するためのパスワード。
- AuthScheme:認証スキームは NAV インスタンスの構成によって異なりますが、Windows 認証を使用している場合は NTLM または NEGOTIATE 認証を使用する必要があります。
これらの接続プロパティを設定すると、Server Explorer から Dynamics NAV に接続できます。前のセクションでセットアップしたサービスにアクセスできます。

Server Explorer からの接続方法については、ヘルプドキュメントの「はじめに」の章を参照してください。使用可能な接続プロパティの詳細については、「接続文字列オプション」の章を参照してください。
別の会社への接続
テーブルに直接クエリを発行すると、Dynamics NAV は現在アクティブな会社のデータのみを表示します。DirectURL 擬似カラムを使用すると、現在アクティブでない会社からデータを取得できます。
DirectURL 擬似カラムに OData サービスの完全な URL を設定します。DirectURL は URL 接続プロパティに設定された値を上書きします。DirectURL に Company パラメータを含めてください。例:
SELECT * FROM Customers WHERE DirectURL='http://<Server>:<WebServicePort>/<ServerInstance>/OData/Company(''CData'')/Customers'
あとは、対象の Web サービスへのパスを指定するだけです。URL 内のアポストロフィは SQL エンコードする必要があります:会社名を2つのシングルアポストロフィで囲んでください。また、Company パラメータの値は URL エンコードする必要があります。
