1.トピック
1.1 はじめに
私たちの最初の技術的な記事が成功したことにより、以下のようになりました。 此処 を続けることにしました。今回は、ExchangeとSalesforceの統合を最もシンプルな方法で実現する方法を見ていきます。SQLクエリを使用します。
統合にはCB Linked Server for Enterprise Applicationsを使用しています。製品の無料トライアルはお問い合わせください。
2.シナリオ要件
ここで必要とされる統合シナリオは、ローカルデータベースの連絡先テーブル、Exchange 365の連絡先とSalesForceの連絡先の間で同期し、ローカルデータベーステーブルからこれら2つのターゲットシステムへの即時レプリケーションを行うことです。これは、オフラインで連絡先のバックアップを取ったり、データウェアハウスを作成したり、その他の理由で便利です。
3.基本的なワークフロー
3.1 CB クエリアナライザの設定
最初のステップは、ターゲットシステム(今回のシナリオではExchangeとSalesForce)に接続できることを確認することです。最も簡単な方法は、CB Query Analyzerを使用することです。ここでは、必要なグループとユーザーを作成することで、MS Exchange 365とSalesForceに接続できるように、管理ツールでConnectBridgeサーバーを設定しました。ユーザー名は“マーティン”「パスワード “1234”.このユーザーはExchange 365とSalesForceに接続する権限を持っています。Query Analyzerから各ターゲットシステムに2つの接続を作成し、正常に接続できることを確認します。.

図1:アカウント管理

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

図 3.クエリアナライザの接続
3.2 ステートメントをテストする
上記のように、両方のターゲットシステムへの設定と接続が成功しました。これで、ステートメントをテストすることができます。
3.2.1 Exchangeの接点
私のExchangeアカウントには、以下のように3つの連絡先があります。

図 4: Exchange の接点
今、私たちは4つの基本的な操作SELECT、INSERT、UPDATE、DELETEをテストするつもりです。
1.連絡先の選択
以下の文を実行すると、図5に示す3つの接点が得られます。
SELECT [GivenName],[SurName],[Email1EmailAddress] FROM [Contact].

図 5: 連絡先の選択
2.コンタクトの挿入
以下のステートメントを実行すると、図 6 に示すように新しいコンタクトが挿入されます。
INSERT INTO Contact([GivenName],[SurName],[Email1EmailAddress]) VALUES ('Peter','K.', 'peter@gmail.com')。

図 6: 新しいコンタクトの挿入
3.連絡先の更新
以下のステートメントを実行すると、図 7 に示すように、先ほど挿入した連絡先の姓が更新されます。
UPDATE Contact SET [SurName] = 'Keys' WHERE [Email1EmailAddress] LIKE 'peter@gmail.com'。

図 7: コンタクトの更新
4.コンタクトの削除
以下のステートメントを実行すると、図 8 に示すように、新しく挿入されたコンタクトが削除されます。
DELETE FROM Contact WHERE [Email1EmailAddress] LIKE 'peter@gmail.com'。

図 8: コンタクトの削除
3.2.2 Salesforceの連絡先
私の SalesForce アカウントには、以下のように 17 の連絡先があります。

図 9: SalesForce の連絡先
今、私たちは同じ4つの基本操作SELECT、INSERT、UPDATE&DELETEをテストしようとしています。
1.連絡先の選択
以下の文を実行すると、図10に示す17個のコンタクトが得られるはずです。
SELECT [FirstName],[LastName],[Email] FROM [Contact].

図 10: 連絡先の選択
2.コンタクトの挿入
以下のステートメントを実行すると、図 11 に示すように新しいコンタクトが挿入されます。
INSERT INTO Contact([Firstname],[LastName],[Email]) VALUES ('Peter','K.', 'peter@gmail.com')。

図 11: 新しいコンタクトの挿入
3.連絡先の更新
以下のステートメントを実行すると、図 12 に示すように、先ほど挿入した連絡先の姓が更新されます。
UPDATE Contact SET [LastName] = 'Keys' WHERE [Email] = 'peter@gmail.com'。

図 12: コンタクトの更新
4.コンタクトの削除
以下のステートメントを実行すると、図 13 に示すように、新しく挿入されたコンタクトが削除されます。
DELETE FROM Contact WHERE [Email] = 'peter@gmail.com'。

図 13: コンタクトの削除
3.3 コピー接続とステートメント
これで、Exchange と SalesForce から連絡先を選択、更新、挿入、削除することができることがわかりました。あとは、Query Analyzerからの接続文字列とテスト済みのステートメントをコピーして、後でMS SQL Serverソリューションで使用します。
クエリ・アナライザーから接続をコピーするには、接続を右クリックし、[編集]をクリックして[詳細]タブに移動し、図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認証またはユーザー名とパスワードを使用してログインします。

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

図 16: MSDASQL プロパティ
2.に移動します。 Sever Objects -> Linked Servers -> Providers -> MSDASQL のように対応するノードを展開します。を右クリックします。 エムエスダエスエル - マイクロソフト・データ・アクセス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ボタンをクリックして新しいQueryウィンドウを開く必要があります。どのデータベースがアクティブであるかは問題ではありません。なぜなら、これから行うことは、MS SQL Serverのインストール全体、ひいてはその中の各データベースに影響を与えるからです。以下に示すように、私は “master ”をアクティブ/ターゲット・データベースとしています。

図 18: MS SQL Server Query Analyzer
b.MS SQL Serverを再設定して、詳細オプションを変更/構成できるようにする必要があります。これを行うには、“exec sp_configure ”show advanced options“, 1; reconfigure ”と入力し、F5キーを押して実行します。すべてがうまくいけば、以下の図19のようなメッセージが表示されるはずだ。
図19:MS SQL Server - 詳細オプションの表示

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

図20:MS SQL Server - アドホック分散クエリーの有効化
これで、MS SQL Serverは適切に設定されているので、必要なだけLinked Serverを追加することができるようになりました。
4.2 MS Exchange リンクドサーバーの設定
1.次の場所に移動します。 Sever オブジェクト -> リンクされたサーバー.を右クリックします。 リンクサーバー を選択して 新規リンクサーバ 以下の図21に示すように

図21:MS SQL Server - 新規リンク先サーバーの追加
2.下の図 22 に示すように、新しい Linked Server ダイアログでは、以下の情報を提供する必要があります。
a. リンク先サーバ名Exchange365_CU7を選択します。
b. プロバイダConnectBridgeはODBCを使用しているため、“Microsoft OLE DB Providers for ODBC Drivers ”でなければなりません。.
c. プロバイダ文字列: ここでは、先ほどのクエリアナライザーからコピーした接続文字列を貼り付けます。

図22:MS SQL Server - 新しいリンクされたサーバーの構成 - 一般
3.ここで、MS SQL Serverを使用/アクセスするユーザーとCBを使用/アクセスするユーザーの関係を確立する必要があります。MS SQL Serverを使用するユーザーをローカル・ログイン(このシナリオでは “sa”)と呼び、CBを使用/アクセスするユーザーをリモート・ユーザー(このシナリオではMartin with login martin)と呼びます。これを設定するために、“あんぜんほご”タブで以下の図23のダイアログを表示する。

図23:MS SQL Server - 新しいリンクドサーバーの構成 - セキュリティ
4.上記のダイアログが表示されたら、「Add」ボタンをクリックし、ローカル・ログインとリモート・ユーザーを合意したとおりに入力する。これが図24で私が行ったことである。

図 24:MS SQL Server - 新しいリンクされたサーバーの構成 - ログイン
5.さて、ダイアログを閉じたいのはわかるが、待って!もうひとつステップを踏む必要がある。今度は、“サーバーオプション”左側の "tab "タブで以下の図25のダイアログを表示し、2つの機能を有効にする。
a. アールピーシーと呼ばれるレガシー機能を使用する際に必要なセキュリティ機能を有効にします。 リモートサーバー - CBとMS SQL Server間のログイン・バリデーションができるようになりました。
b. RPC出力を有効にする。“リモートプロシージャコール”「ストアドプロシージャをリモートで実行できるようにする必要があります。

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

図 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、データベースは “名前なし”、スキーマは “名前なし”、そして最後にテーブルはContactsです。.

図27連絡先の選択
2.コンタクトの挿入
以下の文を実行すると、新しいコンタクトが挿入されます。
EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress]))
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7;

図28新しいコンタクトの挿入
3.連絡先の更新
以下のステートメントを実行すると、以前に挿入した連絡先の姓が更新されます。
EXEC('UPDATEコンタクトSET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;

図29連絡先の更新
4.コンタクトの削除
以下のステートメントを実行すると、新しく挿入されたコンタクトが削除されます。
EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') at exchange365_cu7;

図30コンタクトの削除
4.4 SalesForce Linked Server の設定
もちろん、SalesForce 用の接続文字列を使用する以外は、「4.2 MS Exchange Linked Server の設定」の手順に従ってください。これらのステップに従った後、Linked Server は以下のように正常に設定されます。.

図 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;

図 32SalesForce Linked Server のテスト
4.6 ローカルデータベーステーブル
ここから、我々はローカルMS SQL Server上に実際のローカルデータベースを持っている必要があります。もし既に持っているのであれば、それ以外の場合は新しいデータベースを作成する必要があります。私は、ConnectingSoftwareというデータベースをLocalContactsというテーブルで作成しました。そのテーブルには、図33に示すように1つのレコードしかありません。
図33ローカル連絡先一覧表
4.7 レプリケーションテーブルのトリガ

私たちのソリューションの最初のステップは、ローカルデータベーステーブルの変更を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と私のデータベース間の同期
コンタクトのメールアドレスをマッチングキーとして使用する。
a.はい: ローカル連絡先テーブルに連絡先を追加
b.いいえ:ローカル連絡先テーブルの連絡先の姓と名を更新します。
3.MS Exchangeと私のデータベース間の同期化
コンタクトのEメールアドレスをマッチング・キーとして使用する場合、Exchangeにコンタクトがあり、ローカル・コンタクト・テーブルにはありません。
a.はい: ローカル連絡先テーブルに連絡先を追加
b.いいえ:ローカル連絡先テーブルの連絡先の姓と名を更新します。
この時点で、私のローカルの連絡先テーブルには、元々テーブルにあったレコードに加えて、SalesForce と MS Exchange の両方からのすべての連絡先が含まれています。ここで、他のターゲットシステムとローカルデータベースからの連絡先で各ターゲットシステムを更新する必要があります。
4.SalesForce上の連絡先を更新(Exchangeと私のローカルテーブルからの連絡先による
コンタクトのEメールアドレスをマッチングキーとして使用する; SalesForceに登録されていないコンタクトがLocal Contactsテーブルに存在しますか?
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” を実行することで、ストアド・プロシージャはエラーなく実行されました。.

図34:同期ストアドプロシージャの実行
また、MS Exchangeに新しい連絡先が追加されたことも確認できました。

図35MS Exchangeのアップデート
そして、SalesForceに追加された新しい連絡先

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

図37ローカル連絡先テーブルの更新
自動複製の動作を見ることができます。
1.ローカルデータベースから連絡先を挿入し、SalesForceとExchangeから削除する

図38インサートレプリケーション
2.ローカルデータベースの連絡先を更新すると、SalesForceとExchangeで更新されます。

図39更新レプリケーション
3.ローカルデータベースから連絡先を削除すると、SalesForceとExchangeから削除されます。

図40複製の削除
6.解決策の注意点
私たちは、ソリューションロジックを可能な限りシンプルに保つように努めましたが、ロジックをさらに改良し、より良いパフォーマンスとより複雑な機能を実現するために微調整することができました。
の製品ページには、この製品の詳細情報が表示されます。 CB Linked Server for Enterprise Applications.
