Data integration for Salesforce and SQL Server

With CData DBAmp, SQL Server teams can query Salesforce in real time, maintain local mirrors, and write changes back—all using standard T-SQL and existing SQL Server tooling. No middleware. No new infrastructure.

Salesforce
CData DBAmp
SQL Server Microsoft SQL Server
Backup
Local Reporting
Integration

Key Capabilities

Connect Salesforce and Microsoft SQL Server with full control, familiar tooling, and production-grade reliability.

Real-time SQL access

Use standard T-SQL with Linked Servers to query Salesforce objects on demand. Run SELECT, JOIN, WHERE, and ORDER BY statements for operational lookups and reporting without writing API integrations.

High-fidelity replication

Mirror Salesforce objects into SQL Server tables by using SF_Mirror and SF_Replicate stored procedures. Support analytics, governed backups, and downstream integrations with consistent, trusted copies.

Bi-directional updates

Insert, update, and upsert from SQL Server back into Salesforce. Power reverse ETL and operational workflows by using standard INSERT, UPDATE, and UPSERT patterns.

SQL Server tooling integration

Use SSIS, SSRS, SQL Agent jobs, and existing monitoring practices to operationalize Salesforce data. Everything runs inside the SQL Server environment that database administrators (DBAs) already manage.

Bulk and API-aware performance

Automatically use the right Salesforce API (Bulk, REST, Tooling) for each workload. Handle large volumes efficiently through batching and incremental strategies.

Secure by design

Honor Salesforce permissions and profiles, store credentials securely, and maintain audit visibility by using SQL Server governance. DBAmp is built for least-privilege environments

How it works

Install DBAmp once on SQL Server, configure an SQL Linked Server to Salesforce, and use familiar T-SQL and stored procedures to query, replicate, and sync.

1

Install DBAmp components
Run the installer to add DBAmp stored procedures and configure prerequisites.

2

Create Linked Server to Salesforce
Define connection, credentials, and provider settings. Verify the setup with a simple SELECT statement.

3

Query live or mirror locally
Use Linked Server for on-demand queries, or run SF_Mirror / SF_Replicate procedures to create or refresh local tables.

4

Automate processes with SQL Agent and SSIS
Schedule incremental jobs, orchestrate pipelines, and monitor via your standard SQL Server practices.

Sample:

Live Query via Linked Server

-- Query Salesforce Accounts without copying data 
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; 
Sample:

Mirror & Incremental Refresh

-- Create/refresh local tables for selected objects 
EXEC dbo.SF_Mirror @table_server = 'SALESFORCE', 
    @objects = 'Account,Contact,Opportunity', 
    @pkchunk = 'AUTO', 
    @createdate = 'AUTO'; 

Why DBAmp

DBAmp is purpose-built for DBAs and SQL Server teams who want Salesforce data to behave like any other SQL workload. That includes familiar workflows, predictable performance, and full operational control.

Native SQL experience

Work with Salesforce using Linked Servers, T-SQL, SSIS, and your existing monitoring toolchain.

Reliable at scale

Handle large organizations and high-volume objects with predictable performance.

Frictionless governance

Apply your existing SQL Server governance, auditing, and backup practices to Salesforce data.

Quick comparison table

Approach
Pros
Trade-offs
Direct Salesforce APIs in custom code
Maximum flexibility
Higher dev/maintenance cost; re-implement SQL features
Generic ETL/ELT tools
Broad connectors, visual pipelines
Extra infrastructure; learning curve; may lack DBA-centric SQL workflows
DBAmp (SQL-native)
Use T-SQL & Linked Servers; simple replication; write-back supported
Focused on SQL Server (by design)

Resources

Product Documentation

Covers installation, Linked Server configuration, stored procedures, replication options, and troubleshooting.

Quick Start Guide

Provides instructions for installing DBAmp, connecting to Salesforce, running your first Linked Server query, and mirroring key objects.

Download Trial

Try DBAmp in your environment with your Salesforce org.

Common Use Cases

DBAmp gives DBAs, data engineers, and application teams a SQL-native way to operationalize Salesforce data using the tools and governance already in place.

Operational Reporting

Join Salesforce with internal SQL tables for unified dashboards and reports.

  • Real-time Linked Server queries
  • Use SSRS, Power BI, T-SQL

Replication and analytics

Mirror objects to local tables for analytics and history.

  • SF_Mirror for incrementals
  • SQL Agent orchestration

Backup/archival

Compliance + DR via governed SQL copies.

  • Full/partial object selection
  • Standard DBA retention

Reverse ETL (SQL → Salesforce)

Publish mastered SQL data into Salesforce.

  • INSERT / UPDATE / UPSERT
  • Upsert via External IDs

Data Quality and MDM

Use SQL Server DQ rules and propagate clean results.

  • SQL DQ tooling
  • Controlled propagation

Migration and consolidation

Support Salesforce org merges and modernization.

  • Selective object replication
  • Repeatable, scriptable jobs

Architecture and Compatibility

DBAmp runs where your SQL Server runs and communicates with Salesforce APIs.

At a glance

Key
Value
DB Platform
Microsoft SQL Server
Access Mode
Live Linked Server queries; Local mirror/replication
APIs
Salesforce Bulk, REST, Tooling
Write-back
INSERT / UPDATE / UPSERT with External IDs
Tooling
SSIS, SSRS, T-SQL, SQL Agent
Security
Respects Salesforce permissions; standard SQL Server controls

Deployment Pattern

SQL Server hosts DBAmp components and connects directly to Salesforce.

Choose either:

  • Live access: Query Salesforce on demand via Linked Server
  • Local mirror: Copy objects and refresh incrementally

Downstream tools use SQL Server as usual. SQL Agent orchestrates refreshes.

Advanced Configuration

For DBAs and data engineers who need detailed control over APIs, batching, chunking, runtime behavior, and write-back patterns, DBAmp exposes a mature set of SQL-native options designed for predictable performance and scale.

Execution model

  • Linked Server addressing: use four-part names like [LinkedServer].[CData].[Salesforce].[Object] Example: SALESFORCE.CData.Salesforce.Account
  • API choice (read paths): SF_Mirror and SF_Replicate auto-select SOAP vs Bulk; PK chunking when applicable; you may manually force SOAP or Bulk (soap, bulkapi).
  • Config surface: Tune API version, bulk polling interval, timeouts via provider properties.

Throughput controls

  • PK Chunking: SF_Replicate can submit Bulk API jobs using pkchunk; optional batchsize(N).
  • Global table options: Use DBAmpTableOptions to apply pkchunk, bulkapi, batchsize per object or pattern
  • API call economics: reads occur in batches; SF_TableLoader supports batched writes instead of row-by-row DML.

Write-back patterns (safe and fast)

Prefer staged input tables + bulk procedures.

-- 1) Build an input table for SF_TableLoader 
--    Input table should start with a valid object name, e.g., 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 
-- ...only mapped fields 
); 
 
-- 2) Upsert via SF_TableLoader (auto-selects API based on row count) 
EXEC dbo.SF_TableLoader 'Upsert','SALESFORCE','dbo.Account_Load','ExternalId__c';

SF_TableLoader auto-selects SOAP for small row counts and Bulk API for larger ones.

Mirroring, Change Data & History

  • Incrementals: SF_Mirror reuses metadata; incremental when possible, full when schema changes.
  • Temporal tables: enable for history; some derived fields may force full refresh.
  • System views: SF_CreateSysViews builds metadata views for pipelines.

Operationalization

Prefer staged input tables + bulk procedures.

-- Schedule a mirror job per object (SQL Agent) 
EXEC dbo.SF_Mirror 'SALESFORCE','Account'; 
-- Repeat per object, using options as needed in each call, or using DBAmpTableOptions to handle them
-- OR if you need to bring down every table, use SF_MirrorAll

EXEC dbo.SF_MirrorAll 'SALESFORCE' 
-- Run mirroring without xp_cmdshell (Agent CmdExec)
-- Use DBAmpAZ.exe with 'MirrorCopy' and a single target object
-- Example arguments:
--	"C:\Program Files\CData\CData DBAmp\bin\DBAmpAZ.exe"
-- MirrorCopy Account "MSSQL01" "SalesforceBackups" SALESFORCE pkchunk,batchsize(50000)
-- See docs for full parameter list.

Agent-friendly: mirror via T-SQL or use DBAmpAZ.exe (no xp_cmdshell required).

Query tips

Prefer staged input tables + bulk procedures.

  • OPENQUERY vs 4-part: Use 4-part for simplicity; use OPENQUERY for complex remote pushdown.
  • JOINs: When mixing local + remote, pull minimal remote subset first.


Quick reference

Setting
What it does
When to use
pkchunk
Splits large objects into PK ranges for Bulk API
Very large tables
batchsize(N)
Controls batch size for either API
Tune for network/row width or Apex limits
bulkapi
Forces Bulk API (no PK chunk)
Large tables where chunking isn't needed
Temporal Mirror
Maintains row history
Auditing & SCD patterns

Get started with DBAmp

Install, connect, and run your first query in minutes.