Salesforce と SQL Server のデータ連携
CData DBAmp を使えば、SQL Server チームは標準の T-SQL と既存のツールを使って、Salesforce をリアルタイムでクエリしたり、ローカルにミラーリングしたり、変更を書き戻したりできます。ミドルウェアも新しいインフラも不要です。
主な機能
使い慣れたツールとプロダクションレベルの信頼性で、Salesforce と Microsoft SQL Server を完全にコントロールして接続できます。
リアルタイム SQL アクセス
Linked Server で標準の T-SQL を使って、Salesforce オブジェクトをオンデマンドでクエリできます。API 連携のコードを書くことなく、SELECT、JOIN、WHERE、ORDER BY ステートメントで運用クエリやレポートを実行できます。
高精度なレプリケーション
SF_Mirror と SF_Replicate ストアドプロシージャを使って、Salesforce オブジェクトを SQL Server テーブルにミラーリングします。一貫性のある信頼できるコピーで、分析、ガバナンス付きバックアップ、下流システムとの連携をサポートします。
双方向の更新
SQL Server から Salesforce への INSERT、UPDATE、UPSERT が可能です。標準の INSERT、UPDATE、UPSERT パターンで、リバース ETL や運用ワークフローを実現します。
SQL Server ツールとの連携
SSIS、SSRS、SQL Agent ジョブ、既存の監視ツールを使って Salesforce データを運用できます。すべてがデータベース管理者(DBA)が既に管理している SQL Server 環境内で動作します。
Bulk/API 対応の高パフォーマンス
ワークロードに応じて適切な Salesforce API(Bulk、REST、Tooling)を自動選択します。バッチ処理と増分戦略により、大量データを効率的に処理します。
セキュリティを重視した設計
Salesforce の権限とプロファイルを尊重し、認証情報を安全に保存し、SQL Server のガバナンスで監査の可視性を維持します。DBAmp は最小権限環境向けに設計されています。
DBAmp のしくみ
SQL Server に DBAmp を一度インストールし、Salesforce への Linked Server を設定するだけで、使い慣れた T-SQL とストアドプロシージャでクエリ、レプリケーション、同期が可能になります。
DBAmp コンポーネントをインストール
インストーラーを実行して、DBAmp ストアドプロシージャの追加と前提条件の設定を行います。
Salesforce への Linked Server を作成
接続、認証情報、プロバイダ設定を定義します。シンプルな SELECT ステートメントでセットアップを確認できます。
ライブクエリまたはローカルミラーリング
Linked Server でオンデマンドクエリを実行するか、SF_Mirror / SF_Replicate プロシージャでローカルテーブルを作成・更新します。
SQL Agent と SSIS で自動化
増分ジョブのスケジュール、パイプラインのオーケストレーション、標準的な SQL Server の手法での監視が可能です。
Linked Server 経由のライブクエリ
-- データをコピーせずに Salesforce の Account をクエリ SELECT a.Name, a.AccountNumber, a.Industry, a.BillingCountry FROM SALESFORCE.CData.Salesforce.Account a WHERE a.Industry IN ('Manufacturing','Technology') ORDER BY a.Name;サンプル:
ミラーリングと増分更新
-- 選択したオブジェクトのローカルテーブルを作成・更新 EXEC dbo.SF_Mirror @table_server = 'SALESFORCE', @objects = 'Account,Contact,Opportunity', @pkchunk = 'AUTO', @createdate = 'AUTO';
DBAmp を選ぶ理由
DBAmp は、Salesforce データを他の SQL ワークロードと同じように扱いたい DBA や SQL Server チーム向けに設計されています。使い慣れたワークフロー、予測可能なパフォーマンス、そして完全な運用コントロールを提供します。
ネイティブ SQL 体験
Linked Server、T-SQL、SSIS、既存の監視ツールを使って Salesforce を操作できます。
大規模環境でも安定動作
大規模組織や大量のオブジェクトを、予測可能なパフォーマンスで処理します。
スムーズなガバナンス
既存の SQL Server ガバナンス、監査、バックアップの手法を Salesforce データに適用できます。
比較表
一般的なユースケース
DBAmp を使えば、DBA、データエンジニア、アプリケーションチームは、既存のツールとガバナンスを活用して、SQL ネイティブな方法で Salesforce データを運用できます。
運用レポート
Salesforce と社内 SQL テーブルを結合して、統合ダッシュボードやレポートを作成します。
- リアルタイム Linked Server クエリ
- SSRS、Power BI、T-SQL を使用
レプリケーションと分析
分析や履歴保持のために、オブジェクトをローカルテーブルにミラーリングします。
- SF_Mirror で増分更新
- SQL Agent でオーケストレーション
バックアップ/アーカイブ
ガバナンス対応の SQL コピーでコンプライアンスと DR を実現します。
- オブジェクトの全体/部分選択
- 標準的な DBA 保持ポリシー
リバース ETL(SQL → Salesforce)
マスタリングされた SQL データを Salesforce に公開します。
INSERT/UPDATE/UPSERT- 外部 ID による Upsert
データ品質と MDM
SQL Server の DQ ルールを使用し、クリーンな結果を伝播します。
- SQL DQ ツール
- 制御された伝播
移行と統合
Salesforce 組織の統合やモダナイゼーションをサポートします。
- 選択的オブジェクトレプリケーション
- 再現可能でスクリプト化されたジョブ
アーキテクチャと互換性
DBAmp は SQL Server が稼働する場所で動作し、Salesforce API と通信します。
概要
INSERT / UPDATE / UPSERT(外部 ID 対応)デプロイパターン
SQL Server が DBAmp コンポーネントをホストし、Salesforce に直接接続します。
以下のいずれかを選択できます:
- ライブアクセス:Linked Server 経由で Salesforce をオンデマンドでクエリ
- ローカルミラー:オブジェクトをコピーして増分更新
下流のツールは通常どおり SQL Server を使用します。SQL Agent で更新をオーケストレーションします。
高度な設定
API、バッチ処理、チャンキング、ランタイム動作、書き戻しパターンを詳細に制御したい DBA やデータエンジニア向けに、DBAmp は予測可能なパフォーマンスとスケールを実現する成熟した SQL ネイティブオプションを提供しています。
実行モデル
- Linked Server アドレッシング:
[LinkedServer].[CData].[Salesforce].[Object]のような4部構成の名前を使用します。例:SALESFORCE.CData.Salesforce.Account - API の選択(読み取りパス):
SF_MirrorとSF_ReplicateはSOAPとBulkを自動選択し、必要に応じて PK チャンキングを行います。手動でSOAPまたはBulk(soap、bulkapi)を強制することも可能です。 - 設定項目:プロバイダプロパティで API バージョン、Bulk ポーリング間隔、タイムアウトを調整できます。
スループット制御
- PK チャンキング:
SF_Replicateはpkchunkを使用して Bulk API ジョブを送信できます。オプションでbatchsize(N)も指定可能です。 - グローバルテーブルオプション:
DBAmpTableOptionsを使用して、オブジェクトまたはパターンごとにpkchunk、bulkapi、batchsizeを適用できます。 - API コールの効率化:読み取りはバッチで実行されます。
SF_TableLoaderは行単位の DML ではなくバッチ書き込みをサポートします。
書き戻しパターン(安全かつ高速)
ステージングされた入力テーブル + Bulk プロシージャの使用を推奨します。
-- 1) SF_TableLoader 用の入力テーブルを作成 -- 入力テーブルは有効なオブジェクト名で開始(例:Account_Load) CREATE TABLE dbo.Account_Load ( Id varchar(18) NULL, ExternalId__c varchar(128) NULL, Name nvarchar(255) NOT NULL, BillingCity nvarchar(100) NULL -- ...マッピングされたフィールドのみ ); -- 2) SF_TableLoader で Upsert(行数に基づいて API を自動選択) EXEC dbo.SF_TableLoader 'Upsert','SALESFORCE','dbo.Account_Load','ExternalId__c';
SF_TableLoader は、行数が少ない場合は SOAP、多い場合は Bulk API を自動選択します。
ミラーリング、変更データ、履歴
- 増分更新:
SF_Mirrorはメタデータを再利用します。可能な場合は増分、スキーマ変更時はフル更新を行います。 - テンポラルテーブル:履歴用に有効化できます。派生フィールドによってはフル更新が必要な場合があります。
- システムビュー:
SF_CreateSysViewsがパイプライン用のメタデータビューを構築します。
運用化
ステージングされた入力テーブル + Bulk プロシージャの使用を推奨します。
-- オブジェクトごとにミラージョブをスケジュール(SQL Agent) EXEC dbo.SF_Mirror 'SALESFORCE','Account'; -- オブジェクトごとに繰り返し、各呼び出しで必要なオプションを使用するか、 -- DBAmpTableOptions で処理します -- または、すべてのテーブルを取得する場合は SF_MirrorAll を使用 EXEC dbo.SF_MirrorAll 'SALESFORCE' -- xp_cmdshell なしでミラーリングを実行(Agent CmdExec) -- 'MirrorCopy' と単一のターゲットオブジェクトで DBAmpAZ.exe を使用 -- 引数の例: -- "C:\Program Files\CData\CData DBAmp\bin\DBAmpAZ.exe" -- MirrorCopy Account "MSSQL01" "SalesforceBackups" SALESFORCE pkchunk,batchsize(50000) -- 完全なパラメータリストはドキュメントを参照
Agent 対応:T-SQL でミラーリングするか、DBAmpAZ.exe を使用します(xp_cmdshell 不要)。
クエリのヒント
ステージングされた入力テーブル + Bulk プロシージャの使用を推奨します。
- OPENQUERY vs 4部構成:シンプルさを重視する場合は4部構成を使用。複雑なリモートプッシュダウンには
OPENQUERYを使用します。 - JOIN:ローカル + リモートを混在させる場合、まず最小限のリモートサブセットを取得します。