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. O driver resolve os aliases apenas em cadeias de ligação em formato ADO . As cadeias de ligação em formato URL e ODBC correspondem exatamente aos nomes dos parâmetros, exceto pela maiúscula.
| 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 em segundos para a troca de login. O driver por defeito é 0, que não aplica timeout à troca de login. A ligação inicial à rede é limitada separadamente por dial timeout. Prefiro usar contextos de Go para controlar os tempos de ligação e de consulta. Para o Base de Dados SQL do Azure serverless com auto-pausa ativada, a primeira ligação a uma base de dados pausada falha com o erro 40613 enquanto a base de dados recomeça. Adiciona lógica de retentativas em vez de um tempo de espera mais longo. As bases de dados geralmente retomam em menos de um minuto. Para mais informações, veja Pausa automática e retomada automática. |
dial timeout |
- | O timeout da discagem de rede em segundos. O padrão do driver é de 15 segundos por protocolo registado. A definição 0 aplica esse mesmo padrão em vez de 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, msdsn.Configou definições TLS explícitas 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 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.