To chart SQL Server data in Claude, ChatGPT or another AI client, connect it here, then create an app on it.
Bonnard reads Microsoft SQL Server through a read-only login, so your apps query only what you grant.
DataConnect the databases and integrations your apps read.Available connectionsDatabasesPostgreSQLBigQueryRedshiftClickHouseMotherDuckMySQL / MariaDBMSSQLIntegrationsPostHogDemo dataEcommerceEcommerceSetting up…PostHogDatabaseConnect a databaseConnection nameAcme sampleHostdb.acme.internalPort (optional)1433DatabaseacmeUseracme_readerSSL modeverify-fullCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not needed for public-CA hosts.Password••••••••••••••••Encrypted at rest.Allow our IP addressesIf your database is firewalled, allowlist these egress IPs so we can reach it:208.77.244.241208.77.244.242152.55.184.240These addresses are stable. We will give advance notice before any change.Test & connectBackTesting connection...Back1Details2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseConnection nameAcme sampleHostdb.acme.internalPort (optional)1433DatabaseacmeUseracme_readerSSL modeverify-fullCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not needed for public-CA hosts.Password••••••••••••••••Encrypted at rest.Allow our IP addressesIf your database is firewalled, allowlist these egress IPs so we can reach it:208.77.244.241208.77.244.242152.55.184.240These addresses are stable. We will give advance notice before any change.Test & connectBackTesting connection...Back1Details2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.Save & continueBackSaving…BackconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantRow-levelisolationbytenant,withapolicythatfiltersonSESSION_CONTEXT(N'tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…Save & continueBackSaving…BackDetails2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.Save & continueBackSaving…BackconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantRow-levelisolationbytenant,withapolicythatfiltersonSESSION_CONTEXT(N'tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…Save & continueBackSaving…BackDetails2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseConnection saved"Acme sample" is ready to use.4 tables discovered · No tenancySearch tables…4 tablesSchemaTable ↑TypeRowsColumnsdbocustomerstable12505dboorder_itemstable273155dboorderstable98406dboproductstable864Next stepCreate an app so your users can query these tables from their AI client.Create an app Or view source detailsBack to setupDetailsTenancyDoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseConnection saved"Acme sample" is ready to use.4 tables discovered · No tenancySearch tables…4 tablesSchemaTable ↑TypeRowsColumnsdbocustomerstable12505dboorder_itemstable273155dboorderstable98406dboproductstable864Next stepCreate an app so your users can query these tables from their AI client.Create an app Or view source detailsBack to setupDetailsTenancyDoneNeed help?Setup guideConnection details areencrypted at rest.
Requirements
The Admin role in your Bonnard workspace.
A SQL Server login that can create logins and database users.
SQL Server authentication turned on, which on Azure SQL means Microsoft Entra-only authentication is off.
1. Create a read-only login
Bonnard connects as this login. Agents can query only the tables it can read.
SQL
-- In master: the login Bonnard connects asCREATE LOGIN mcp_reader WITH PASSWORD = '<password>';-- In your database. On Azure SQL Database, connect to it directly:-- USE does not switch databases there.CREATE USER mcp_reader FOR LOGIN mcp_reader;-- Run this line once for each schema apps should query. Grant SELECT and nothing more:-- Bonnard adds no read-only check on SQL Server, so this grant is the limitGRANT SELECT ON SCHEMA::<schema> TO mcp_reader;
Replace <password> and <schema> with your own. The grant covers tables you add to the schema later.
2. Allow Bonnard’s IP addresses
If your database limits who can connect, allow Bonnard’s IP addresses on port 1433. The connect form lists them
under Allow our IP addresses. Bonnard cannot reach databases on a private network. On Azure SQL Database, add them
as server-level IP firewall rules.
3. Add the connection
In the console at app.bonnard.ai, select Data, then MSSQL.DataConnect the databases and integrations your apps read.Available connectionsDatabasesPostgreSQLBigQueryRedshiftClickHouseMotherDuckMySQL / MariaDBMSSQLIntegrationsPostHogDemo dataEcommerceEcommerceSetting up…PostHogDataConnect the databases and integrations your apps read.Available connectionsDatabasesPostgreSQLBigQueryRedshiftClickHouseMotherDuckMySQL / MariaDBMSSQLIntegrationsPostHogDemo dataEcommerceEcommerceSetting up…PostHog
Enter a Connection name and the login’s details from the table below.DatabaseConnect a databaseConnection nameAcme sampleHostdb.acme.internalPort (optional)1433DatabaseacmeUseracme_readerSSL modeverify-fullCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not needed for public-CA hosts.Password••••••••••••••••Encrypted at rest.Allow our IP addressesIf your database is firewalled, allowlist these egress IPs so we can reach it:208.77.244.241208.77.244.242152.55.184.240These addresses are stable. We will give advance notice before any change.Test & connectBackTesting connection...Back1Details2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseConnection nameAcme sampleHostdb.acme.internalPort (optional)1433DatabaseacmeUseracme_readerSSL modeverify-fullCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not needed for public-CA hosts.Password••••••••••••••••Encrypted at rest.Allow our IP addressesIf your database is firewalled, allowlist these egress IPs so we can reach it:208.77.244.241208.77.244.242152.55.184.240These addresses are stable. We will give advance notice before any change.Test & connectBackTesting connection...Back1Details2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.
Select Test & connect. Bonnard connects as the login and reads the tables it can see.
Microsoft SQL Server connection fields
Field
Enter
Connection name
A name for this database in Bonnard, such as Production.
Host
The server’s public hostname or IP address, such as <server>.database.windows.net on Azure SQL Database.
Port
1433, unless your server listens on another port. For a named instance, enter the fixed port it listens on.
Database
The database to read.
User and Password
The read-only login from step 1, such as mcp_reader.
SSL mode
Keep verify-full. For a private CA, such as Amazon RDS, paste its bundle into CA certificate (PEM).
4. Choose the tenancy
Choose how callers see the data, then select Save & continue.
Tenancy options
Option
Use it when
No tenancy
Every caller should see the same data.
Multi-tenant (RLS)
Your row-level security policies decide each caller’s rows. They read the caller’s tenant (the customer they belong to) from SESSION_CONTEXT(N'tenant_id').
Database per tenant
Each tenant’s tables sit in their own database, named by a pattern such as customer_{tenant}.
DatabaseConnect a databaseconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.Save & continueBackSaving…BackconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantRow-levelisolationbytenant,withapolicythatfiltersonSESSION_CONTEXT(N'tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…Save & continueBackSaving…BackDetails2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.Save & continueBackSaving…BackconnectedAcme sampleNo tenancyMulti-tenant (RLS)Database per tenantRow-levelisolationbytenant,withapolicythatfiltersonSESSION_CONTEXT(N'tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…Save & continueBackSaving…BackDetails2Tenancy3DoneNeed help?Setup guideConnection details areencrypted at rest.
Connection saved shows the number of tables discovered.
DatabaseConnect a databaseConnection saved"Acme sample" is ready to use.4 tables discovered · No tenancySearch tables…4 tablesSchemaTable ↑TypeRowsColumnsdbocustomerstable12505dboorder_itemstable273155dboorderstable98406dboproductstable864Next stepCreate an app so your users can query these tables from their AI client.Create an app Or view source detailsBack to setupDetailsTenancyDoneNeed help?Setup guideConnection details areencrypted at rest.DatabaseConnect a databaseConnection saved"Acme sample" is ready to use.4 tables discovered · No tenancySearch tables…4 tablesSchemaTable ↑TypeRowsColumnsdbocustomerstable12505dboorder_itemstable273155dboorderstable98406dboproductstable864Next stepCreate an app so your users can query these tables from their AI client.Create an app Or view source detailsBack to setupDetailsTenancyDoneNeed help?Setup guideConnection details areencrypted at rest.
Troubleshooting
Host resolves to a private or reserved address. Use the public hostname. Bonnard cannot reach private networks.
The test times out. Check that Bonnard’s IP addresses are allowed (step 2).
Connected, but introspect failed: <message> The login cannot read the table list. Fix what the message names.
A table is missing. Grant SELECT on its schema, then select Re-introspect on the database’s Tables tab.
tenant_not_routable under Multi-tenant (RLS). Check the tenant ID: on SQL Server, Bonnard accepts up to
128 characters.
Any other error is SQL Server’s own message. Check the field it names, then select Test & connect again.
Charts in your AI client
Create an app on this database, so AI clients such as Claude and ChatGPT can query it and draw charts.