ExchangeとSalesforceのSQL統合

ExchangeとSalesforceのSQL統合

Georgii KapanadzeTechnical Leave a Comment

1.トピック

1.1 はじめに

私たちの最初の技術的な記事が成功したことにより、以下のようになりました。 此処 を続けることにしました。今回は、ExchangeとSalesforceの統合を最もシンプルな方法で実現する方法を見ていきます。SQLクエリを使用します。

統合にはCB Linked Server for Enterprise Applicationsを使用しています。製品の無料トライアルはお問い合わせください。

2.シナリオ要件

ここで必要とされる統合シナリオは、ローカルデータベースの連絡先テーブル、Exchange 365の連絡先とSalesForceの連絡先の間で同期し、ローカルデータベーステーブルからこれら2つのターゲットシステムへの即時レプリケーションを行うことです。これは、オフラインで連絡先のバックアップを取ったり、データウェアハウスを作成したり、その他の理由で便利です。

3.基本的なワークフロー

3.1 CB クエリアナライザの設定

まず最初のステップとして、ターゲットシステム(今回のシナリオではExchangeとSalesForce)に接続できるかどうかを確認します。ここでは、管理ツールを使ってConnectBridgeサーバーを設定し、MS Exchange 365とSalesForceに接続するために必要なグループとユーザーを作成しています。ユーザー名は"マーティン" パスワード付き "1234”.このユーザーはExchange 365とSalesForceに接続する権限を持っています。さて、Query Analyzerから各ターゲットシステムに2つの接続を作成し、正常に接続できることを確認します。

ExchangeとSalesforceのSQL統合

図1:アカウント管理

ExchangeとSalesforceのSQL統合画像2

図2:グループとユーザーの管理

Image

図 3.クエリアナライザの接続

3.2 ステートメントをテストする

上記のように、両方のターゲットシステムへの設定と接続が成功しました。これで、ステートメントをテストすることができます。

3.2.1 Exchangeの接点

私のExchangeアカウントには、以下のように3つの連絡先があります。

Image

図 4: Exchange の接点

今、私たちは4つの基本的な操作SELECT、INSERT、UPDATE、DELETEをテストするつもりです。

1.連絡先の選択

以下の文を実行すると、図5に示す3つの接点が得られます。

SELECT [GivenName],[SurName],[Email1EmailAddress] FROM [Contact].
ExchangeとSalesforceのSQL統合画像5

図 5: 連絡先の選択

2.コンタクトの挿入

以下のステートメントを実行すると、図 6 に示すように新しいコンタクトが挿入されます。

INSERT INTO Contact([GivenName],[SurName],[Email1EmailAddress]) VALUES ('Peter','K.', 'peter@gmail.com')。
ExchangeとSalesforceのSQL統合画像6

図 6: 新しいコンタクトの挿入

3.連絡先の更新

以下のステートメントを実行すると、図 7 に示すように、先ほど挿入した連絡先の姓が更新されます。

UPDATE Contact SET [SurName] = 'Keys' WHERE [Email1EmailAddress] LIKE 'peter@gmail.com'。
ExchangeとSalesforceのSQL統合画像7

図 7: コンタクトの更新

4.コンタクトの削除

以下のステートメントを実行すると、図 8 に示すように、新しく挿入されたコンタクトが削除されます。

DELETE FROM Contact WHERE [Email1EmailAddress] LIKE 'peter@gmail.com'。
ExchangeとSalesforceのSQL統合画像8

図 8: コンタクトの削除

3.2.2 Salesforceの連絡先

私の SalesForce アカウントには、以下のように 17 の連絡先があります。

ExchangeとSalesforceのSQL統合写真9

図 9: SalesForce の連絡先

今、私たちは同じ4つの基本操作SELECT、INSERT、UPDATE&DELETEをテストしようとしています。

1.連絡先の選択

以下の文を実行すると、図10に示す17個のコンタクトが得られるはずです。

SELECT [FirstName],[LastName],[Email] FROM [Contact].
ExchangeとSalesforceのSQL統合画像10

図 10: 連絡先の選択

2.コンタクトの挿入

以下のステートメントを実行すると、図 11 に示すように新しいコンタクトが挿入されます。

INSERT INTO Contact([Firstname],[LastName],[Email]) VALUES ('Peter','K.', 'peter@gmail.com')。
ExchangeとSalesforceのSQL統合画像11

図 11: 新しいコンタクトの挿入

3.連絡先の更新

以下のステートメントを実行すると、図 12 に示すように、先ほど挿入した連絡先の姓が更新されます。

UPDATE Contact SET [LastName] = 'Keys' WHERE [Email] = 'peter@gmail.com'。
ExchangeとSalesforceのSQL統合画像12

図 12: コンタクトの更新

4.コンタクトの削除

以下のステートメントを実行すると、図 13 に示すように、新しく挿入されたコンタクトが削除されます。

DELETE FROM Contact WHERE [Email] = 'peter@gmail.com'。
ExchangeとSalesforceのSQL統合写真13

図 13: コンタクトの削除

3.3 コピー接続とステートメント

これで、Exchange と SalesForce から連絡先を選択、更新、挿入、削除することができることがわかりました。あとは、Query Analyzerからの接続文字列とテスト済みのステートメントをコピーして、後でMS SQL Serverソリューションで使用します。

クエリ・アナライザーから接続をコピーするには、接続を右クリックし、[編集]をクリックして[詳細]タブに移動し、図14に示すように、そこからテキストをコピーする必要があります。

ExchangeとSalesforceのSQL統合写真14

図 14: Query Analyzer からの接続文字列のコピー

以下は両方のターゲットシステムの接続文字列です。

Exchange

Driver={Media Gateway ODBC Driver};impl='CORBA';host='localhost';port='8087';acc='ACC_EXCH365_CU7';uid='martin';pwd='1234'

セールスフォース

Driver={Media Gateway ODBC Driver};IMPL=CORBA;HOST='localhost';PORT='8087';ACC='ACC_SALF_CBD';UID='martin';PWD='1234'

これでMS SQL Serverを開き、SQL Server統合ソリューションの実装を開始する準備が整いました。

4.ソリューション・ウォークスルー

4.1 MS SQL Server

SQL Server Linked Server 機能を介して外部データソースを操作できるようにするには、以下の設定を行う必要があります。

1.Microsoft SQL Server Management Studioを起動し、図15に示すように、Windows認証またはユーザー名とパスワードを使用してログインします。

ExchangeとSalesforceのSQL統合画像15

図 15: MS SQL Server Management Studio ログイン画面

ExchangeとSalesforceのSQL統合画像16

図 16: MSDASQL プロパティ

2.に移動します。 Sever Objects -> Linked Servers -> Providers -> MSDASQL のように対応するノードを展開します。を右クリックします。 エムエスダエスエル - Microsoft Data Access SQL - と選択します。 物件情報 をクリックすると、図17のダイアログが表示されます。

ExchangeとSalesforceのSQL統合 写真17

図17:MSDASQLプロパティの設定

3.以下の設定/オプションにチェックが入っていることを確認する必要があります。

a. レベルゼロのみ:セキュリティ上の理由から、レベル 0 の OLE DB インタフェースに準拠した OLE DB プロバイダのみをサポートするようにしなければなりません。

b. プロセス中の処理を許可するデータ・プロバイダー(「外部データ・ソース」)をプロセス内サーバー(「MS SQL Server と同じプロセス内」)としてインスタンス化できるようにするためです。MS SQL Serverとデータ・プロバイダーの間で認証情報を渡さないようにするためと、(varchar(max), nvarchar(max), varbinary(max), text, ntext, image)といったデータ型を扱えるようにするために、このオプションを有効にする必要がある。このオプションを有効にしないと、例えばExchangeからimage型のデータを取得し、MS SQL Serverデータベースに挿入することができません。

4.今、私たちはMS SQL Serverが外部プロバイダに接続し、OLEDBを使用する外部プロバイダからデータを問い合わせるためのクエリを実行できるようにする必要があります。外部OLEDBデータソース”.3つのステップで行います。

a.下の図18に示すように、[New Query]ボタンをクリックして新しいクエリウィンドウを開く必要があります。どのデータベースがアクティブなのかは関係ありません。以下に示すように、私は "master "をアクティブ/ターゲットデータベースとして使用しています。

ExchangeとSalesforceのSQL統合写真18

図 18: MS SQL Server Query Analyzer

b.MS SQL Serverの詳細オプションを変更/構成できるように、MS SQL Serverを再構成する必要があります。そのためには、"sp_configure "というストアドプロシージャを実行します(これはプリインストールされているシステムのストアドプロシージャです)。すべてがうまくいけば、以下の図19のようなメッセージが表示されるはずです。

図19:MS SQL Server - 詳細オプションの表示

ExchangeとSalesforceのSQL統合画像19

c.ここで、MS SQL Serverがこれらの"外部OLEDBデータソース"と呼ばれるものを使ってアドホック分散クエリ".デフォルトでは、MS SQL Server は「Ad Hoc Distributed Queries」を許可しないので、この高度なオプションを再設定する必要があります - これが前のステップで行った理由です - ストアドプロシージャ「sp_configure」を実行して、設定「Ad Hoc Distributed Queries」とそれを有効にする値 1 を渡すのです。すべてがうまくいけば、"exec sp_configure 'Ad Hoc Distributed Queries', 1; reconfigure "を実行した後に、以下の図20のようなメッセージが表示されるはずです。

ExchangeとSalesforceのSQL統合画像20

図20:MS SQL Server - アドホック分散クエリーの有効化

これで、MS SQL Serverは適切に設定されているので、必要なだけLinked Serverを追加することができるようになりました。

4.2 MS Exchange リンクドサーバーの設定

1.次の場所に移動します。 Sever オブジェクト -> リンクされたサーバー.を右クリックします。 リンクサーバー を選択して 新規リンクサーバ 以下の図21に示すように

ExchangeとSalesforceのSQL統合画像21

図21:MS SQL Server - 新規リンク先サーバーの追加

2.下の図 22 に示すように、新しい Linked Server ダイアログでは、以下の情報を提供する必要があります。

a. リンク先サーバ名Exchange365_CU7を選択します。

b. プロバイダConnectBridgeはODBCを使用しているので、"Microsoft OLE DB Providers for ODBC Drivers "である必要があります。

c. プロバイダ文字列: ここでは、先ほどのクエリアナライザーからコピーした接続文字列を貼り付けます。

ExchangeとSalesforceのSQL統合画像22

図22:MS SQL Server - 新しいリンクされたサーバーの構成 - 一般

3.MS SQL Serverを使用しているユーザ/アクセスしているユーザとCBを使用しているユーザ/アクセスしているユーザの関係を確立する必要があります。MS SQL Serverを使用しているユーザはローカルログインと呼ばれ(このシナリオでは "sa")、CBを使用/アクセスしているユーザはリモートユーザと呼ばれます(このシナリオではMartin with login martin)。これは設定しなければならないもので、そのためには"あんぜんほご"タブを使用して、下図のようなダイアログを表示します。

ExchangeとSalesforceの画像をSQLで統合。

図23:MS SQL Server - 新しいリンクドサーバーの構成 - セキュリティ

4.上記のダイアログが表示されたら、「Add」ボタンをクリックして、合意した通りに「Local Login」と「Remote User」を入力します。これが図24のここでやったことです。

ExchangeとSalesforceのSQL統合画像24

図 24:MS SQL Server - 新しいリンクされたサーバーの構成 - ログイン

5.さて、ダイアログを閉じたいのは分かっていますが、待ってください!もう一つのステップが必要です。今、私たちは"サーバーオプション左側の "タブをクリックして、下図の図25のダイアログを表示し、2つの機能を有効にします。

a. アールピーシーと呼ばれるレガシー機能を使用する際に必要なセキュリティ機能を有効にします。 リモートサーバー - 今は気にしないでください - CBとMS SQL Server間のログイン検証が可能になるように

b. RPC出力を有効にします。リモートプロシージャコール"ストアドプロシージャをリモートで実行できるようにする必要があるからです。

ExchangeとSalesforceのSQL統合画像25

図 25:MS SQL Server - 新しいリンクされたサーバーの構成 - サーバーオプション

6.今、私たちはOKをクリックして、私たちは完了しましたこれで完了です。Exchangeに接続するためにMS SQL Serverを設定しました。これで、MS SQL ServerのデータベースとしてExchangeプラットフォームを見ることができ、連絡先と呼ばれるテーブルを見ることができ、Exchangeからの連絡先のリストを表示することができます。

ExchangeとSalesforceのSQL統合

図 26:MS SQL Server - Linked Server Configured Successfully(リンクされたサーバーの設定に成功しました。

4.3 MS Exchange リンクドサーバーのテスト

統合ソリューションを開発する前に、新しく設定したLinked Serverを介してMS Exchange上で基本データの操作ができることを確認する必要があります。

1.連絡先の選択

以下の文を実行すると、MS Exchangeから3つの連絡先が得られるはずです。

SELECT GivenName, SurName, Email1EmailAddress FROM EXCHANGE365_CU7...Contact.

なぜ"..."?それはSERVER.DATABASE.SCHEMA.TABLEという構文に従っているからで、上の図26からわかるように、私たちのサーバーはExchange365_CU7で、私たちのデータベースは "名前なし "で、スキーマは "名前なし "で、最後に私たちのテーブルは "連絡先 "です。

ExchangeとSalesforceのSQL統合

図27連絡先の選択

2.コンタクトの挿入

以下の文を実行すると、新しいコンタクトが挿入されます。

EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress]))
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7;
ExchangeとSalesforceのSQL統合画像28

図28新しいコンタクトの挿入

3.連絡先の更新

以下のステートメントを実行すると、以前に挿入した連絡先の姓が更新されます。

EXEC('UPDATEコンタクトSET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;
ExchangeとSalesforceのSQL統合画像 29

図29連絡先の更新

4.コンタクトの削除

以下のステートメントを実行すると、新しく挿入されたコンタクトが削除されます。

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;
ExchangeとSalesforceのSQL統合画像30

図30コンタクトの削除

4.4 SalesForce Linked Server の設定

ここでは、「4.2 MS Exchange リンクドサーバーの設定」の手順に沿って、SalesForce の接続文字列を使用します。以上の手順を踏むと、以下のように Linked Server の設定が完了しているはずです。

ExchangeとSalesforceのSQL統合画像 31

図 31SalesForce Linked Server の設定に成功

4.5 Salesforce Linked Serverのテスト

先ほどのMS Exchange Linked Serverでもそうでしたが、SalesForce Linked Server経由で基本データ操作のタスクを実行できるようにする必要があります。

ガイドを短縮するために、以下の図32は、以下のすべてのステートメントをテストしています。

1.連絡先の選択

以下のステートメントを実行すると、SalesForce からの連絡先が得られるはずです。

SELECT GivenName, SurName, Email1EmailAddress FROM EXCHANGE365_CU7...Contact.

2.コンタクトの挿入

以下の文を実行すると、新しいコンタクトが挿入されます。

EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress]))
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7;

3.連絡先の更新

以下のステートメントを実行すると、以前に挿入した連絡先の姓が更新されます。

EXEC('UPDATEコンタクトSET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;

4.コンタクトの削除

以下のステートメントを実行すると、新しく挿入されたコンタクトが削除されます。

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;
ExchangeとSalesforceのSQL統合画像32

図 32SalesForce Linked Server のテスト

4.6 ローカルデータベーステーブル

ここから、我々はローカルMS SQL Server上に実際のローカルデータベースを持っている必要があります。もし既に持っているのであれば、それ以外の場合は新しいデータベースを作成する必要があります。私は、ConnectingSoftwareというデータベースをLocalContactsというテーブルで作成しました。そのテーブルには、図33に示すように1つのレコードしかありません。

図33ローカル連絡先一覧表

4.7 レプリケーションテーブルのトリガ

ExchangeとSalesforceの画像をSQLで統合する 33

私たちのソリューションの最初のステップは、ローカルデータベーステーブルの変更をSalesForceとExchangeの両方にレプリケートすることです。

トリガーのSQLスクリプトを以下に示します。

CREATE TRIGGER [dbo].[trgSyncContact]を作成します。
ON [dbo].
INSERT、UPDATE、DELETEの後に
AS
ビギン
宣言 @Operation varchar(50)
宣言 @FirstName nvarchar(max)
宣言 @LastName nvarchar(max)
宣言 @Email varchar(255)
宣言 @Deleted_FirstName nvarchar(max)
宣言 @Deleted_LastName nvarchar(max)
宣言 @Deleted_Email varchar(255)

IF COLUMNS_UPDATED() > 0
ビギン
--更新されたカラムがある場合は
きろく
存在する場合 (SELECT * FROM DELETED)
ビギン
--もし値が削除されていたら、それは更新操作だったことになります。
SELECT @FirstName = inserted.FirstName, @LastName =
insert.LastName, @Email = inserted.Email.
@Deleted_FirstName = deleted.FirstName.
削除された_LastName = deleted.LastName, @Deleted_Email = @Deleted_Email
削除された.Eメール
FROM削除された、挿入された
--セールスフォース
Exec ('UPDATE Contact SET FirstName = ? LastName = ? Email = ?
WHERE FirstName = ? and LastName = ? and Email = ?
FirstName, @LastName, @Email, @Deleted_FirstName.
削除された_LastName, @Deleted_Email)をSALESFORCE_CBDでご利用ください。
--Exchange
EXEC ('UPDATE Contact SET GivenName = ?
Email1EmailAddress = ?WHERE GivenName = ?
とEmail1EmailAddress = ? ', @FirstName, @LastName.
メールアドレス、@Deleted_FirstName、@Deleted_LastNameです。
EXCHANGE365_CU7で@Deleted_Email)を使用しています。
終了
そうでなければ
ビギン
--更新操作ではない場合は、挿入操作になります。
SELECT @FirstName = FirstName, @LastName = LastName, @Email =
電子メール
挿入されたFROM
--セールスフォース
Exec ('Insert into Contact (FirstName, LastName, Email) values.
(?,?,?,?)', @FirstName, @LastName, @Email) at
SALESFORCE_CBD.
--MS Exchange
EXEC ('Insert into Contact (GivenName, SurName.
Email1EmailAddress) values(?,?,?,?)', @FirstName.
@LastName, @Email)をEXCHANGE365_CU7で。
終了
終了
そうでなければ
ビギン
--もし操作が更新/挿入でない場合は削除されます。
SELECT @Deleted_Email = Email FROM deleted
--セールスフォース
Exec ('Delete From Contact Where Email = ?', @Deleted_Email) at
SALESFORCE_CBD.
--MS Exchange
Exec ('Delete From Contact Where Email1EmailAddress = ?
Deleted_Email) at EXCHANGE365_CU7.
終了
終了

警告: 上記のスクリプトを実行した後、2つのターゲットシステム(ExchangeとSalesForce)とローカルデータベースの間で同期を取るまでは、ローカルデータベースのテーブルから何も挿入しないようにしましょう。

4.8 同期ストアドプロシージャ

私たちのソリューションの第二のステップは、MS Exchange、SalesForce、および私たちのローカル連絡先テーブルの間で同期を取ることです。

そのために、ストアドプロシージャを書くことにします。プロシージャのロジックは

1.非常に重要なのは、上記で作成したトリガーを無効にすることです "我々は同期を行っているので、我々はトリガーによって実装された自動レプリケーションを有効にしてはいけません"

2.SalesForceと私のデータベース間の同期
連絡先のメールアドレスをマッチングキーとして使用している場合、SalesForce 上に連絡先があり、ローカル連絡先テーブルにはありませんか?

a.はい: ローカル連絡先テーブルに連絡先を追加

b.いいえ: ローカル連絡先テーブルで連絡先の姓と名を更新する

3.MS Exchangeと私のデータベース間の同期化
連絡先の電子メールアドレスをマッチングキーとして使用している場合、Exchangeに連絡先がありますが、ローカル連絡先テーブルにはありません。

a.はい: ローカル連絡先テーブルに連絡先を追加

b.いいえ: ローカル連絡先テーブルで連絡先の姓と名を更新する

この時点で、私のローカルの連絡先テーブルには、元々テーブルにあったレコードに加えて、SalesForce と MS Exchange の両方からのすべての連絡先が含まれています。ここで、他のターゲットシステムとローカルデータベースからの連絡先で各ターゲットシステムを更新する必要があります。

4.SalesForce上の連絡先を更新(Exchangeと私のローカルテーブルからの連絡先による

連絡先のメールアドレスをマッチングキーとして使用している場合、ローカル連絡先テーブルに連絡先がありますが、SalesForce にはありませんか?

a.はい:SalesForceに連絡先を追加

b.いいえ: 連絡先の姓と名をSalesForce上で更新する

5.Exchangeの連絡先を更新(SalesForceと私のローカルテーブルからの連絡先による

連絡先の電子メールアドレスをマッチングキーとして使用している場合、ローカル連絡先テーブルに連絡先があり、Exchangeにはありません。

a.はい: MS Exchangeに連絡先を追加します。

b.いいえ:Exchangeで連絡先の姓と名を更新する

6.これで、先ほど無効にしたトリガーを有効にすることができるので、自動レプリケーションが再びONになります。

次の SQL スクリプトは、上で説明したロジックを実装します。

CREATE PROCEDURE [dbo].[uspInitSync]を作成します。
-- ストアドプロシージャのパラメータをここに追加します。
AS
ビギン
-- 結果セットの追加を防ぐために SET NOCOUNT ON が追加されました。
-- SELECT文を妨害します。
SET NOCOUNT ON.

--トリガーを無効にすることで、SalesForceからの挿入時には
--セールスフォースに連絡先を再度追加する
TRIGGER [trgSyncContact] ON LocalContacts.

--SalesForce から LocalDB にレコードをマージします。
DECLARE @ImportedContacts Table(FirstName nvarchar(max), LastName)
nvarchar(max), Email varchar(255))。

--SalesForceをソースとして使用してLocalDBに連絡先を更新/挿入する
MERGE LocalContacts AS target
USING (SELECT FirstName, LastName, Email FROM SalesForce_CBD...Contact)
ASソース
ON (target.Email LIKE source.Email)
マッチしたとき
UPDATE SET FirstName = source.FirstName、LastName =
ソース.ラストネーム
マッチしていない場合
INSERT (FirstName, LastName, Email)
VALUES (source.FirstName, source.LastName, source.Email)
OUTPUT inserted.FirstName, inserted.LastName, inserted.Email
INTO @ImportedContacts.

--SalesForceからLocalDBに挿入された連絡先を表示する
select * from @ImportedContacts.

--Exchangeをソースとして使用してLocalDBに連絡先を更新/挿入する
MERGE LocalContacts AS target
USING (SELECT GivenName, SurName, Email1EmailAddress FROM)
EXCHANGE365_CU7...Contact) ASソース
ON (target.Email LIKE source.Email1EmailAddress)
マッチしたとき
UPDATE SET FirstName = source.GivenName、LastName =
ソース.SurName
マッチしていない場合
INSERT (FirstName, LastName, Email)
VALUES (source.GivenName, source.SurName.
source.Email1EmailAddress)
OUTPUT inserted.FirstName, inserted.LastName, inserted.Email
INTO @ImportedContacts.

--テーブル変数を使って挿入された連絡先を表示する
select * from @ImportedContacts.

--今すぐすべてをSalesForceとExchangeにコピーして、彼らが正確なコピーを持つようにします。
--すべてのシステムでLocalDBが同期された後にLocalDBから
--insert....select....whereではなく、cursourとifを使用する必要があります。
--はリモートテーブルでは動作しませんでした。
--リモートテーブル
宣言 @FirstName nvarchar(max)
宣言 @LastName nvarchar(max)
宣言 @Email varchar(255)
宣言 @SQL nvarchar(max)

DECLARE Contacts_cursor CURSOR FAST_FORWARD FOR
SELECT FirstName, LastName, Email from LocalContacts.

OPEN Contacts_cursor
FETCH NEXT FROM Contacts_cursor INTO @FirstName, @LastName, @Email
WHILE @@FETCH_STATUS = 0
ビギン
IF EXISTS (SELECT Email1EmailAddress FROM EXCHANGE365_CU7...Contact)
WHERE Email1EmailAddress LIKE @Email)
EXEC ('UPDATE Contact SET GivenName = ?WHERE
Email1EmailAddress = ?)
で、EXCHANGE365_CU7を使用します。
それ以外の場合
EXEC ('Insert into Contact (GivenName, SurName.
Email1EmailAddress) values(?,?,?,?)', @FirstName.
@LastName, @Email) at EXCHANGE365_CU7.

IF EXISTS (SELECT Email FROM SalesForce_CBD...Contact WHERE Email LIKE)
電子メール)
Exec ('UPDATE Contact SET FirstName = ?WHERE
電子メール = ?
SalesForce_CBD.
ELSE
Exec ('Insert into Contact (FirstName, LastName, Email) values.
(?,?,?,?)', @FirstName, @LastName, @Email) at
SalesForce_CBDです。

FETCH NEXT FROM Contacts_cursor INTO @FirstName, @LastName, @Email
終了
Contacts_cursorを閉じる。
Contacts_cursorをDEALLOCATEする。

--変更がオンラインLOBに反映されるようにトリガーを有効にします。
ENABLE TRIGGER [trgSyncContact] ON LocalContacts.
終了

5.アクションでの解決策

以下のように同期ストアドプロシージャ「uspInitSync」を実行すると、エラーなく実行されました。

ExchangeとSalesforceのSQL統合画像 34

図34:同期ストアドプロシージャの実行

また、MS Exchangeに新しい連絡先が追加されたことも確認できました。

ExchangeとSalesforceのSQL統合画像35

図35MS Exchangeのアップデート

そして、SalesForceに追加された新しい連絡先

ExchangeとSalesforceのSQL統合画像36

図 36SalesForceのアップデート

そして、私たちのローカルデータベースのテーブルには、新しい連絡先があります。

ExchangeとSalesforceのSQL統合画像 37

図37ローカル連絡先テーブルの更新

自動複製の動作を見ることができます。

1.ローカルデータベースから連絡先を挿入し、SalesForceとExchangeから削除する

ExchangeとSalesforceのSQL統合画像 38

図38インサートレプリケーション

2.ローカルデータベースの連絡先を更新すると、SalesForceとExchangeで更新されます。

ExchangeとSalesforceのSQL統合画像39

図39更新レプリケーション

3.ローカルデータベースから連絡先を削除すると、SalesForceとExchangeから削除されます。

ExchangeとSalesforceのSQL統合画像40

図40複製の削除

6.解決策の注意点

私たちは、ソリューションロジックを可能な限りシンプルに保つように努めましたが、ロジックをさらに改良し、より良いパフォーマンスとより複雑な機能を実現するために微調整することができました。

の製品ページには、この製品の詳細情報が表示されます。 CB Linked Server for Enterprise Applications.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.