-
Notifications
You must be signed in to change notification settings - Fork 84
docs: update README for documentation freshness #639
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -162,16 +162,20 @@ The following switches have different behavior in this version of `sqlcmd` compa | |||||||||||||
|
|
||||||||||||||
| ### Switches not available in the new sqlcmd (go-sqlcmd) yet | ||||||||||||||
|
|
||||||||||||||
| There are a few switches yet to be implemented in the new `sqlcmd` (go-sqlcmd) compared | ||||||||||||||
| to the original ODBC based `sqlcmd`, discussion [#293](https://github.com/microsoft/go-sqlcmd/discussions/292) | ||||||||||||||
| lists these switches. Please provide feedback in the discussion on which | ||||||||||||||
| switches are most important to you to have implemented next in the new sqlcmd. | ||||||||||||||
| Most switches from the original ODBC-based `sqlcmd` have been implemented. The following switches are not yet available: | ||||||||||||||
|
|
||||||||||||||
| | Switch | Description | | ||||||||||||||
| |--------|-------------| | ||||||||||||||
| | `-f` | Input/output code page | | ||||||||||||||
| | `-j` | Print raw error messages | | ||||||||||||||
| | `-p[1]` | Print statistics (optional colon format) | | ||||||||||||||
|
|
||||||||||||||
| For historical context and to provide feedback, see [discussion #292](https://github.com/microsoft/go-sqlcmd/discussions/292). | ||||||||||||||
|
|
||||||||||||||
| ### Miscellaneous enhancements | ||||||||||||||
|
|
||||||||||||||
| - Console output coloring (see below) | ||||||||||||||
| - `:Connect` now has an optional `-G` parameter to select one of the authentication methods for Azure SQL Database - `SqlAuthentication`, `ActiveDirectoryDefault`, `ActiveDirectoryIntegrated`, `ActiveDirectoryServicePrincipal`, `ActiveDirectoryManagedIdentity`, `ActiveDirectoryPassword`. If `-G` is not provided, either Integrated security or SQL Authentication will be used, dependent on the presence of a `-U` username parameter. | ||||||||||||||
| - `:Connect` now has an optional `-G` parameter to select one of the authentication methods for Azure SQL Database - `SqlAuthentication`, `ActiveDirectoryDefault`, `ActiveDirectoryIntegrated`, `ActiveDirectoryServicePrincipal`, `ActiveDirectoryManagedIdentity`, `ActiveDirectoryPassword`, `ActiveDirectoryInteractive`, `ActiveDirectoryAzCli`, `ActiveDirectoryDeviceCode`. If `-G` is not provided, either Integrated security or SQL Authentication will be used, dependent on the presence of a `-U` username parameter. | ||||||||||||||
| - The new `--driver-logging-level` command line parameter allows you to see traces from the `go-mssqldb` client driver. Use `64` to see all traces. | ||||||||||||||
| - Sqlcmd can now print results using a vertical format. Use the new `--vertical` command line option to set it. It's also controlled by the `SQLCMDFORMAT` scripting variable. | ||||||||||||||
|
|
||||||||||||||
|
|
@@ -219,7 +223,7 @@ To use AAD auth, you can use one of two command line switches: | |||||||||||||
|
|
||||||||||||||
| `ActiveDirectoryIntegrated` | ||||||||||||||
|
|
||||||||||||||
| This method is currently not implemented and will fall back to `ActiveDirectoryDefault`. | ||||||||||||||
| This method is not fully implemented in the go-mssqldb driver and currently falls back to `ActiveDirectoryDefault`. | ||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
| `ActiveDirectoryPassword` | ||||||||||||||
|
|
||||||||||||||
|
|
@@ -239,6 +243,26 @@ Use this method when running sqlcmd on an Azure VM that has either a system-assi | |||||||||||||
|
|
||||||||||||||
| This method authenticates the provided username as a service principal id and the password as the client secret for the service principal. Provide a username in the form `<service principal id>@<tenant id>`. Set `SQLCMDPASSWORD` variable to the client secret. If using a certificate instead of a client secret, set `AZURE_CLIENT_CERTIFICATE_PATH` environment variable to the path of the certificate file. | ||||||||||||||
|
|
||||||||||||||
| `ActiveDirectoryAzCli` | ||||||||||||||
|
|
||||||||||||||
| This method uses the Azure CLI to obtain an access token. You must be logged in to Azure CLI (`az login`) before using this method. | ||||||||||||||
|
|
||||||||||||||
| `ActiveDirectoryDeviceCode` | ||||||||||||||
|
|
||||||||||||||
| This method uses the device code flow for authentication. It displays a code that you enter at https://microsoft.com/devicelogin to authenticate. | ||||||||||||||
|
|
||||||||||||||
| #### Additional authentication methods | ||||||||||||||
|
|
||||||||||||||
| The following authentication methods are also supported via `--authentication-method`: | ||||||||||||||
|
|
||||||||||||||
| - `ActiveDirectoryWorkloadIdentity` - Uses federated token authentication for Kubernetes or GitHub Actions workloads; optionally provide `client_id@tenant_id` as username and `tokenfilepath` parameter (defaults to `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, `AZURE_FEDERATED_TOKEN_FILE` env vars) | ||||||||||||||
| - `ActiveDirectoryClientAssertion` - Authenticates with a signed JWT assertion instead of a client secret | ||||||||||||||
| - `ActiveDirectoryAzurePipelines` - Authenticates using an Azure Pipelines service connection; requires `client_id@tenant_id` as username, plus `serviceconnectionid` and `systemtoken` connection parameters (or `AZURESUBSCRIPTION_CLIENT_ID`, `AZURESUBSCRIPTION_SERVICE_CONNECTION_ID`, `SYSTEM_ACCESSTOKEN` env vars) | ||||||||||||||
|
Comment on lines
+258
to
+260
|
||||||||||||||
| - `ActiveDirectoryWorkloadIdentity` - Uses federated token authentication for Kubernetes or GitHub Actions workloads; optionally provide `client_id@tenant_id` as username and `tokenfilepath` parameter (defaults to `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, `AZURE_FEDERATED_TOKEN_FILE` env vars) | |
| - `ActiveDirectoryClientAssertion` - Authenticates with a signed JWT assertion instead of a client secret | |
| - `ActiveDirectoryAzurePipelines` - Authenticates using an Azure Pipelines service connection; requires `client_id@tenant_id` as username, plus `serviceconnectionid` and `systemtoken` connection parameters (or `AZURESUBSCRIPTION_CLIENT_ID`, `AZURESUBSCRIPTION_SERVICE_CONNECTION_ID`, `SYSTEM_ACCESSTOKEN` env vars) | |
| - `ActiveDirectoryWorkloadIdentity` - Uses federated token authentication for Kubernetes or GitHub Actions workloads; optionally provide `client_id@tenant_id` as username, and use `AZURE_FEDERATED_TOKEN_FILE` to specify the token file path (`AZURE_CLIENT_ID` and `AZURE_TENANT_ID` are also used when username is not provided) | |
| - `ActiveDirectoryClientAssertion` - Authenticates with a signed JWT assertion instead of a client secret | |
| - `ActiveDirectoryAzurePipelines` - Authenticates using an Azure Pipelines service connection; requires `client_id@tenant_id` as username, and uses `AZURESUBSCRIPTION_SERVICE_CONNECTION_ID` and `SYSTEM_ACCESSTOKEN` environment variables (`AZURESUBSCRIPTION_CLIENT_ID` can also be used when username is not provided) |
Copilot
AI
Apr 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section says ActiveDirectoryServicePrincipalAccessToken works by setting SQLCMDPASSWORD to the access token, but the current implementation never includes the provided password in the connection string for this auth method (so the token is not passed into GetTokenBasedConnection). Either update the documentation to match current behavior, or update the implementation to propagate the token for this method.
| - `ActiveDirectoryServicePrincipalAccessToken` - Uses a pre-obtained bearer token; set `SQLCMDPASSWORD` to the access token value | |
| - `ActiveDirectoryServicePrincipalAccessToken` - Uses a pre-obtained bearer token; `SQLCMDPASSWORD` is not currently used to pass the access token for this method |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SqlAuthenticationis not a supported value in this repo (the code and help text useSqlPassword). ListingSqlAuthenticationunder:Connect -Gwill cause users to pass an auth method that the implementation treats as AAD, likely resulting in a connection error. Replace it withSqlPassword(or remove SQL auth from the-Glist and document that SQL auth is selected by using-U/-Pwithout-G).