Search documentation...

ChangelogBook a demoSign up

SQL Server

Power internal tools, in-app experiences, and more

Connect to SQL Server

You may need to allowlist Hightouch's IP addresses to let our systems connect to your SQL Server instance. Reference our networking docs to determine which IP addresses you need to allowlist.

You can also securely connect to your SQL Server instance using AWS PrivateLink or GCP Private Service Connect. AWS PrivateLink and GCP Private Service Connect are Business Tier features.

SSH tunneling

Hightouch can connect directly to SQL Server over the public internet or via an SSH tunnel. Since data is encrypted in transit via TLS, a direct connection is suitable for most use cases. You may need to set up a tunnel if your SQL Server instance is on a private network or virtual private cloud (VPC).

Hightouch supports both standard and reverse SSH tunnels. To learn more about SSH tunneling, refer to Hightouch's tunneling documentation.

The connection string method doesn't currently support SSH tunneling. Please if you're interested in this feature.

Azure firewall setup

By default, Azure protects your SQL Server from any external IP address from connecting to your SQL Server. Follow these steps to add Hightouch's IP addresses to the firewall:

  1. Log into your Azure Console Dashboard.
  2. Click on SQL databases under Services.
  3. Select the SQL database you want to update.
  4. Select Set server firewall .
    Azure Console Dashboard with settings
  5. Under Public network access, select Selected networks.
    Azure Console Dashboard with settings
  6. Scroll to Firewall rules and click Add a firewall rule.
    Azure Console Dashboard with settings
  7. Allowlist the Hightouch IP addresses for your region.
  8. Click the Save button on the bottom left.

Required permissions

Both setup options require:

  • Server name (IP address or Azure hostname)
  • Port number (1433 by default)
  • Database name
  • SQL Server Username
  • SQL Server Password

Your credentials must be able to:

  • Add/update/delete rows in your sync's table.
  • View these tables: (*These are used for gathering metadata to set up the sync.)

To ensure your credentials are correct, click Test connection. This will confirm if Hightouch is able to properly connect to your database by running a simple SELECT query.

Password form

Connection string

Connection string must be in this format: Server=server;Database=database;User Id=username;Password=password;Encrypt=boolean

Sync configuration

Hightouch supports Upsert mode with the option to delete removed rows.

Select the schema and table you want to sync to. A common schema to use is the database's default, dbo.

Record matching

Records can be matched from your source to your database table using any primary key or unique column. Hightouch only shows columns that are of the PRIMARY KEY or UNIQUE type in the dropdown.

Note: We do not display IDENTITY columns as those can't be edited or set when inserting.

Field mapping

Select the fields from your source that you want to sync to SQL Server.

Make sure you account for column types and columns that are non-nullable. If you upsert any row with the wrong column type or set a null value for a non-nullable column, the entire batch with that row (up to 1k rows) will fail.

Tips and troubleshooting

Common errors

If you encounter an error or question not listed below and need assistance, don't hesitate to . We're here to help.

Cannot open server 'hightouch-test' request by login

If you see the following error message, you need to update your firewall settings in your Azure Console.

Cannot open server 'hightouch-test' request by login.
Client with IP address '' is not allowed to access the server.
To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule
on the master database to create a firewall rule for this IP address or address range.
It may up take up to five minutes for this change to take effect.

"Invalid time" error

This error occurs when incorrectly formatted data is sent to a SQL Server time field. To resolve this issue, you need to reformat your model column data. For example, if your model column contains values formatted like hh:mm:ss, you need to use the template mapper to change the data's format to:

1970-01-01T{{ model.row['column_name'] }}Z

Be sure to replace column_name with the name of your time column.

Template mapping in the Hightouch UI

SQL Server accepts these types of values and converts them to the hh:mm:ss.nnnnnnn format SQL Server expects.

Live debugger

Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.

Sync alerts

Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: May 15, 2024

On this page

Connect to SQL ServerSSH tunnelingAzure firewall setupSync configurationRecord matchingField mappingTips and troubleshootingCommon errorsLive debuggerSync alerts

Was this page helpful?