Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O go-mssqldb driver aceita três formatos de cadeia de ligação: URL, ADO e ODBC. Os três formatos suportam o mesmo conjunto de parâmetros de ligação. Escolha o formato que melhor se adequa à sua aplicação ou modelo de implementação.
Tip
Use o formato URL para novas aplicações Go. Integra-se com o pacote do net/url Go para codificação segura e construção programática. Use o formato ADO ao portar cadeias de ligação de aplicações .NET, e utilize o formato ODBC quando o escape de colchetes for mais conveniente para valores que contenham ponto e vírgula ou outros caracteres especiais.
Formato do 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
Liga-te a uma instância local por defeito com autenticação SQL:
sqlserver://<user>:<password>@<server>?database=AdventureWorks2025
Conecte-se a uma instância nomeada:
sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025
Conectar-se ao Base de Dados SQL do Azure:
sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false
Use Windows authentication (apenas Windows):
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes
Note
No formato URL, a porta passa por defeito a 1433. Para especificar uma porta diferente, inclua-a após o hospedeiro: sqlserver://<server>:1434?database=AdventureWorks2025.
Caracteres especiais nas palavras-passe
No formato URL, as palavras-passe com caracteres especiais devem ser codificadas por percentuais. Caracteres comuns que requerem codificação:
| Character | Encoded | Palavra-passe 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 tratar da 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 percentual não é necessária. Se um valor contiver ponto e vírgula, envolva-o entre aspas duplas: password="<password>". No formato ODBC, envolva o valor em 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 ADO
Liga-te a 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 utiliza 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 a escaparem
No formato ODBC, envolve um valor para {} evitar pontos e vírgulas, signos iguais e outros caracteres especiais. Para incluir literalmente um } aparelho dentário interior, dobre-o:
odbc:password={my}}password}
Parâmetros comuns
Os seguintes parâmetros são partilhados entre os três formatos:
| Parâmetro | Aliases | Description |
|---|---|---|
user id |
user |
Nome de login do SQL Server. |
password |
- | Palavra-passe para o login do SQL Server. |
database |
- | Nome do banco de dados de destino. |
connection timeout |
- | Tempo limite de login em segundos. O driver por defeito é 0, que espera indefinidamente. Prefiro usar contextos de Go para controlar os tempos de ligação e de consulta. |
dial timeout |
- | O timeout da discagem de rede em segundos. O padrão do driver baseia-se nos protocolos registados. Configurado 0 para esperar indefinidamente. |
encrypt |
- | Modo de encriptação: strict, true/mandatory, false/optional, disable. Quando omitido, o padrão é false/optional. Para SQL do Azure e ligações de produção, defina encrypt=true explicitamente. |
TrustServerCertificate |
- | Ignora a validação do certificado. Quando encrypt é especificado, o padrão é false. Quando encrypt é omitido, o padrão é true. Use false para ligações de produção e SQL do Azure. |
app name |
- | O nome da aplicação passou para o servidor. |
authenticator |
- | Autenticador personalizado. Usado internamente pela azuread embalagem. |
Para a lista completa de opções de ligação, consulte Opções de ligação.
Construir cadeias de ligação em código
Use o url.URL type ou msdsn.Config struct para construir cadeias de ligação programaticamente em vez de concatenar cadeias brutas. Esta 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 ligação de forma segura:
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 with para configuração estruturada, especialmente quando precisa de definir um discador personalizado, SessionInitSQLou definições TLS explícitas comoTrustServerCertificatemsdsn.Config:
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 ainda dependes do mssql comportamento obsoleto dos nomes do driver que reescreve ? os marcadores de lugar, usa NewConnectorWithProcessQueryText em vez do NewConnectorConfig quando construíres o conector.