feat(sources/mssql): add app name to MSSQL (#1620)

## Description

---
Add auditable application name to mssql sources. Query the db with:
```
SELECT session_id, program_name
FROM sys.dm_exec_sessions;
```

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [ ] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
This commit is contained in:
Averi Kitsch
2025-10-03 14:11:14 -07:00
committed by GitHub
parent 36c658472c
commit 1536d1fdab
2 changed files with 21 additions and 10 deletions

View File

@@ -111,20 +111,25 @@ func initCloudSQLMssqlConnection(ctx context.Context, tracer trace.Tracer, name,
ctx, span := sources.InitConnectionSpan(ctx, tracer, SourceKind, name)
defer span.End()
// Create dsn
query := fmt.Sprintf("database=%s&cloudsql=%s:%s:%s", dbname, project, region, instance)
url := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword(user, pass),
Host: ipAddress,
RawQuery: query,
}
// Get dial options
userAgent, err := util.UserAgentFromContext(ctx)
if err != nil {
return nil, err
}
// Create dsn
query := url.Values{}
query.Add("app name", userAgent)
query.Add("database", dbname)
query.Add("cloudsql", fmt.Sprintf("%s:%s:%s", project, region, instance))
url := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword(user, pass),
Host: ipAddress,
RawQuery: query.Encode(),
}
// Get dial options
opts, err := sources.GetCloudSQLOpts(ipType, userAgent, false)
if err != nil {
return nil, err

View File

@@ -22,6 +22,7 @@ import (
"github.com/goccy/go-yaml"
"github.com/googleapis/genai-toolbox/internal/sources"
"github.com/googleapis/genai-toolbox/internal/util"
_ "github.com/microsoft/go-mssqldb"
"go.opentelemetry.io/otel/trace"
)
@@ -114,8 +115,13 @@ func initMssqlConnection(
ctx, span := sources.InitConnectionSpan(ctx, tracer, SourceKind, name)
defer span.End()
userAgent, err := util.UserAgentFromContext(ctx)
if err != nil {
userAgent = "genai-toolbox"
}
// Create dsn
query := url.Values{}
query.Add("app name", userAgent)
query.Add("database", dbname)
if encrypt != "" {
query.Add("encrypt", encrypt)