各製品の資料を入手。
詳細はこちら →AWS RDS for SQL Server のリンクサーバーに Salesforce データを連携:CData Connect
こんにちは、CData Softwatre Japan エンジニアの宮本です。
今回は AWS RDS に構築している SQLServer のリンクサーバー機能を用いて、データハブサービスの CData Connect 経由で Salesforce のデータにアクセスする方法をご紹介します。
CData Connect とは?
さまざまなクラウドサービスのデータをOData、MySQL、TDS(SQLServer) の3つの規格で接続できるインタフェースが提供されるSaaS 型のサービスです。 例えば SQLServer でしか外部との連携ができないサービスがある場合、CData Connect がデータソースと利用ツール・サービスの間に入ってデータソースへの接続用に TDS エンドポイントを作成し、色々なデータソースを SQLServer インタフェースでアクセスすることが可能になります。
https://www.cdata.com/jp/connect/
OData、MySQL、SQLServer 3つの規格があるとお伝えしましたが、本内容では Salesforce に TDS(SQLServer) プロトコルで通信できるように CData Connect で設定していきます。
手順
CData Connect で Salesforce への接続設定
CData Connect のアカウントでログイン後、「DATABASE」→ Salesforce のアイコンをクリックします。※CData Connect のアカウントがない場合は、以下のリンクよりトライアル申請を行ってください。
https://www.cdata.com/jp/connect/cloud/
Salesforce への接続設定を行います。
CData Connect のユーザー作成
CData Connect 上のユーザーを作成することができます。ここで作成したユーザーは他のサービスから CData Connect へ接続する際に使用します。
「USERS」→「Add」でユーザーを作成します。
CData Connect で TDS Endpoint の作成と仮想データベース名の確認
まずは、「ENDPOINTS」をクリックしてください。そこにはOData、MySQL、TDS(SQLServer) のエンドポイントが表示されています。リンクサーバからの接続には TDS のエンドポイントを使用します。
次に CData Connect 上で定義したデータベース名を確認します。「DATABASES」をクリックして、Name 列にあるデータベース名を確認します。
作成したデータベースをクリック後、「Privilrgrs」タブより使用するユーザーに権限を付与します。
これで、CData Connect へ TDS プロトコルで接続できる準備が整いました。
リンクサーバー設定
SQLServer Management Studio (以下、SSMS) がインストールされているマシンから RDS の SQLServer に接続します。Object Explorer から Server Objects > Linked Server を辿って右クリックからリンクサーバーを作成しようとすると下記のようなエラーが発生します。
これは、AWS の下記ドキュメントに記載のあるように権限が付与されていないためのようです。代替案としてクエリーからストアドプロシージャでリンクサーバーを作成する手段が紹介されています。
クエリからリンクサーバーを作成する方法はこちらの CData 社のマニュアルをご参照ください。SSMS の新規クエリーから以下クエリーを実行します。
「sp_addlinkedserver」ストアド内の「datasrc」は、CData Connect で生成した TDS Endpoint を指定ください。ただし、注意点としてはポート指定の部分を「:1433」→「,1433」に変更して指定してください。
「catalog」には CData Connect で確認したデータベース名を指定します。
EXEC sp_addlinkedserver @server='Salesforce', @srvproduct = '', @provider='SQLNCLI', @datasrc='xxxx.xxxxxx.xxxxxx,1433', @catalog='Salesforce_Test'; GO
「sp_addlinkedsrvlogin」ストアドの「rmtuser」および「rmtpassword」は、CData Connect で作成したユーザ名・パスワードを設定ください。
EXEC sp_addlinkedsrvlogin @rmtsrvname='Salesforce', @rmtuser='SalesforceTest', @rmtpassword='xxxxxxx', @useself='FALSE', @locallogin=NULL; GO
上記ストアドプロシージャを実行したら SSMS の オブジェクトエクスプローラ― をリフレッシュして最新情報を表示してください。オブジェクトエクスプローラ― にて サーバーオブジェクト > リンクサーバー > Salesforce > Salesforce_Test > テーブルと辿っていくと Salesforce のオブジェクトがテーブルリストに表示されることを確認してください。
リンクサーバー上の Salesforce リンクサーバーにクエリでアクセス
それでは、SSMSのクエリーから以下のSalesforceのAccount(取引先)へのアクセスするSQLを実行してみましょう。
SELECT * FROM [Salesforce].[Salesforce_Test].[Salesforce].[Account] GO
右下のデータ表示エリアに Salesforce の Account のデータが表示されれば成功です。
おわりに
いかがでしたでしょうか。CData Connect を利用することで AWS RDS for SQL Server のリンクサーバーに Salesforce の取引先データを連携することができました。
同じ構成で「Dynamics 365 → SQLServer(リンクサーバー)」、「kintone → SQLServer(リンクサーバー)」の連携なども簡単に構築することができます。
現時点で対応しているデータソースはこちらから確認できます。
CData Software Japan - CData Connect Connectors
CData Connect はトライアルが可能です。ぜひお試しください。