Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O go-mssqldb driver aceita três formatos de cadeia de conexão: URL, ADO e ODBC. Todos os três formatos suportam o mesmo conjunto de parâmetros de conexão. Escolha o formato que melhor se encaixe na sua aplicação ou modelo de implantação.
Dica
Use o formato URL para novas aplicações do Go. Ele se integra ao pacote do net/url Go para codificação segura e construção programática. Use o formato ADO ao portar cadeias de conexão de aplicações .NET, e use o formato ODBC quando o escape de braçadeiras for mais conveniente para valores que contêm ponto e vírgula ou outros caracteres especiais.
Formato de URL
O formato URL segue o sqlserver:// esquema e é o formato mais comum para aplicações Go:
sqlserver://username:password@host:port?database=AdventureWorks2025¶m=value
Exemplos
Conecte-se a uma instância padrão local com autenticação SQL:
sqlserver://<user>:<password>@<server>?database=AdventureWorks2025
Conecte-se a uma instância nomeada:
sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025
Conecte-se ao Banco de Dados SQL do Azure:
sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false
Use autenticação do Windows (apenas Windows):
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes
Note
No formato URL, a porta é padrão 1433. Para especificar uma porta diferente, inclua-a após o host: sqlserver://<server>:1434?database=AdventureWorks2025.
Caracteres especiais nas senhas
No formato URL, senhas com caracteres especiais devem ser codificadas por percentuais. Caracteres comuns que exigem codificação:
| Character | Encoded | Senha de exemplo | Forma codificada |
|---|---|---|---|
@ |
%40 |
p@ssword |
p%40ssword |
: |
%3A |
p:ssword |
p%3Assword |
/ |
%2F |
p/ssword |
p%2Fssword |
# |
%23 |
p#ssword |
p%23ssword |
% |
%25 |
p%ssword |
p%25ssword |
Use url.UserPassword() para lidar com a codificação automaticamente:
u := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword("<user>", "p@ss:word#1"),
Host: "<server>:1433",
}
u.RawQuery = url.Values{"database": {"AdventureWorks2025"}}.Encode()
// Result: sqlserver://<user>:p%40ss%3Aword%231@<server>:1433?database=AdventureWorks2025
No formato ADO, a codificação por porcentagem não é necessária. Se um valor contém ponto e vírgula, enrole-o entre aspas duplas: password="<password>". No formato ODBC, enrole o valor entre colchetes: password={<password>}.
Formato ADO
O formato ADO utiliza pares separados key=value por ponto e vírgula:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025
Exemplos do ADO
Conecte-se com um número de porta:
server=<server>;port=1434;user id=<user>;password=<password>;database=AdventureWorks2025
Conecte-se a uma instância nomeada:
server=<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025
Note
No formato ADO, os server campos e port são parâmetros separados. Não inclua uma porta separada por dois pontos no server valor.
Formato ODBC
O formato ODBC usa o odbc: prefixo com pares separados key=value por ponto e vírgula. Valores que contêm caracteres especiais podem ser incluídos entre colchetes:
odbc:server=<server>;user id=<user>;password={<password>};database=AdventureWorks2025
Aparelhos solteiros
No formato ODBC, envolva um valor para {} evitar pontos e vírgulas, sinais iguais e outros caracteres especiais. Para incluir um aparelho interno literal } , dobre isso:
odbc:password={my}}password}
Parâmetros comuns
Os seguintes parâmetros são compartilhados entre os três formatos. O driver resolve os aliases apenas em cadeias de conexão do formato ADO . As strings de conexão em formato URL e ODBC correspondem exatamente aos nomes dos parâmetros, exceto pelo caso de maiúscula.
| Parâmetro | Aliases | Description |
|---|---|---|
user id |
user |
Nome de login do SQL Server. |
password |
- | Senha para o login do SQL Server. |
database |
- | Nome do banco de dados de destino. |
connection timeout |
- | Tempo limite em segundos para a troca de login. O driver padrão é 0, que não aplica tempo limite à troca de login. A conexão inicial da rede é limitada separadamente por dial timeout. Prefiro usar contextos Go para controlar os tempos de conexão e consulta. Para o Banco de Dados SQL do Azure serverless com autopausa ativada, a primeira conexão com um banco de dados pausado falha com o erro 40613 enquanto o banco de dados recomeça. Adicione lógica de retentativa em vez de um tempo limite mais longo. Os bancos de dados geralmente retomam em menos de um minuto. Para mais informações, consulte Pausa automática e retomada automática. |
dial timeout |
- | O timeout da discagem de rede em segundos. O padrão do driver é 15 segundos por protocolo registrado. A configuração 0 aplica esse mesmo padrão em vez de esperar indefinidamente. |
encrypt |
- | Modo de criptografia: strict, true/mandatory,false/optional , . disable Quando omitido, o padrão é false/optional. Para conexões SQL do Azure e produção, defina encrypt=true explicitamente. |
TrustServerCertificate |
- | Pule a validação do certificado. Quando encrypt é especificado, o padrão é false. Quando encrypt é omitido, o padrão é true. Use false para conexões de produção e SQL do Azure. |
app name |
- | Nome do aplicativo passado para o servidor. |
authenticator |
- | Autenticador personalizado. Usado internamente pelo azuread embale. |
Para a lista completa de opções de conexão, veja Opções de conexão.
Construir strings de conexão no código
Use o url.URL tipo ou msdsn.Config struct para construir cadeias de conexão programaticamente em vez de concatenar cadeias brutas. Essa abordagem evita problemas de injeção e codificação.
Construtor de URLs
Use url.URL a partir da biblioteca padrão para construir a cadeia de conexão com segurança:
import "net/url"
query := url.Values{}
query.Add("database", "AdventureWorks2025")
query.Add("encrypt", "true")
query.Add("TrustServerCertificate", "false")
u := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword("<user>", "<password>"),
Host: "<server>.database.windows.net:1433",
RawQuery: query.Encode(),
}
connString := u.String()
NewConnectorConfig
Use NewConnectorConfig com para configuração estruturada, especialmente quando você precisa definir um discador personalizado, msdsn.Configou configurações explícitas de TLS comoSessionInitSQLTrustServerCertificate:
import (
"database/sql"
"github.com/microsoft/go-mssqldb"
"github.com/microsoft/go-mssqldb/msdsn"
)
config := msdsn.Config{
Host: "<server>",
Port: 1433,
Database: "AdventureWorks2025",
TrustServerCertificate: false,
}
connector := mssql.NewConnectorConfig(config)
db := sql.OpenDB(connector)
Se você ainda depende do mssql comportamento obsoleto dos nomes do driver que reescreve ? os marcadores de lugar, use NewConnectorWithProcessQueryText em vez do NewConnectorConfig que quando construir o conector.