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.
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.
Install DBAmp components
Run the installer to add DBAmp stored procedures and configure prerequisites.
Create Linked Server to Salesforce
Define connection, credentials, and provider settings. Verify the setup with a simple SELECT statement.
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.
Automate processes with SQL Agent and SSIS
Schedule incremental jobs, orchestrate pipelines, and monitor via your standard SQL Server practices.
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
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.
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
INSERT / UPDATE / UPSERT with External IDsDeployment 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_MirrorandSF_Replicateauto-selectSOAPvsBulk; PK chunking when applicable; you may manually forceSOAPorBulk(soap, bulkapi). - Config surface: Tune API version, bulk polling interval, timeouts via provider properties.
Throughput controls
- PK Chunking:
SF_Replicatecan submit Bulk API jobs usingpkchunk; optionalbatchsize(N). - Global table options: Use
DBAmpTableOptionsto applypkchunk,bulkapi,batchsizeper object or pattern - API call economics: reads occur in batches;
SF_TableLoadersupports 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_Mirrorreuses metadata; incremental when possible, full when schema changes. - Temporal tables: enable for history; some derived fields may force full refresh.
- System views:
SF_CreateSysViewsbuilds 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
OPENQUERYfor complex remote pushdown. - JOINs: When mixing local + remote, pull minimal remote subset first.
Quick reference
Get started with DBAmp
Install, connect, and run your first query in minutes.