mirror of
https://github.com/googleapis/genai-toolbox.git
synced 2026-04-09 03:02:26 -04:00
## 1. Why do we need to support the `encrypt` parameter? MSSQL databases that `genai-toolbox` attempts to connect to may have their encryption levels set differently. For example, a testing/demo purpose MSSQL database may not require encryption at all. However, `genai-toolbox` currently uses the default encryption parameter (`encrypt=false`) to connect to this type of database and will throw an error: ``` ERROR "toolbox failed to initialize: unable to initialize configs: unable to initialize source "my-mssql-source": unable to connect successfully: TLS Handshake failed: cannot read handshake packet: EOF" ``` > In this case, the encryption parameter should be set to `encrypt=disable`. ## 2. Is this a necessary feature? `genai-toolbox` uses the `github.com/microsoft/go-mssqldb` package as a dependency to connect to MSSQL databases. According to the [README](https://github.com/microsoft/go-mssqldb?tab=readme-ov-file#common-parameters) of the `github.com/microsoft/go-mssqldb` package, `encrypt` is one of the common parameters. Therefore, I believe supporting the `encrypt` parameter in `genai-toolbox` is necessary. ## 3. How to replicate the error mentioned above? ### 3.1 Use this `docker-compose.yaml` file to start a demo MSSQL instance ``` services: demo-mssql-database: image: mcr.microsoft.com/mssql/server:2017-CU1-ubuntu ports: - "20256:1433" environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "hellopassword!" restart: unless-stopped healthcheck: test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "hellopassword!", "-Q", "SELECT 1"] interval: 5s retries: 10 demo-mssql-database-init: image: mcr.microsoft.com/mssql/server:2017-CU1-ubuntu network_mode: service:demo-mssql-database command: > /bin/bash -c "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P hellopassword! -d master -Q 'CREATE DATABASE DemoDatabase;'" depends_on: demo-mssql-database: condition: service_healthy ``` ### 3.2 Use `genai-toolbox` to connect to the above demo MSSQL database with this `tools.yaml` configuration file: ``` sources: my-mssql-source: kind: mssql host: localhost port: 20256 database: master user: sa password: 'hellopassword!' ``` ### 3.3 We shall see the error: ``` ERROR "toolbox failed to initialize: unable to initialize configs: unable to initialize source "my-mssql-source": unable to connect successfully: TLS Handshake failed: cannot read handshake packet: EOF" ``` --------- Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
3.4 KiB
3.4 KiB
title, type, weight, description
| title | type | weight | description |
|---|---|---|---|
| SQL Server | docs | 1 | SQL Server is a relational database management system (RDBMS). |
About
SQL Server is a relational database management system (RDBMS) developed by Microsoft that allows users to store, retrieve, and manage large amount of data through a structured format.
Available Tools
-
mssql-sql
Execute pre-defined SQL Server queries with placeholder parameters. -
mssql-execute-sql
Run parameterized SQL Server queries in SQL Server.
Requirements
Database User
This source only uses standard authentication. You will need to create a SQL Server user to login to the database with.
Example
sources:
my-mssql-source:
kind: mssql
host: 127.0.0.1
port: 1433
database: my_db
user: ${USER_NAME}
password: ${PASSWORD}
# encrypt: strict
{{< notice tip >}} Use environment variable replacement with the format ${ENV_NAME} instead of hardcoding your secrets into the configuration file. {{< /notice >}}
Reference
| field | type | required | description |
|---|---|---|---|
| kind | string | true | Must be "mssql". |
| host | string | true | IP address to connect to (e.g. "127.0.0.1"). |
| port | string | true | Port to connect to (e.g. "1433"). |
| database | string | true | Name of the SQL Server database to connect to (e.g. "my_db"). |
| user | string | true | Name of the SQL Server user to connect as (e.g. "my-user"). |
| password | string | true | Password of the SQL Server user (e.g. "my-password"). |
| encrypt | string | false | Encryption level for data transmitted between the client and server (e.g., "strict"). If not specified, defaults to the github.com/microsoft/go-mssqldb package's default encrypt value. |