Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il go-mssqldb driver accetta tre formati di stringa di connessione: URL, ADO e ODBC. Tutti e tre i formati supportano lo stesso insieme di parametri di connessione. Scegli il formato che si adatta meglio alla tua applicazione o al modello di distribuzione.
Tip
Usa il formato URL per le nuove applicazioni Go. Si integra con il pacchetto di net/url Go per una codifica sicura e una costruzione programmatica. Utilizzare il formato ADO quando si portano stringhe di connessione da applicazioni .NET, e utilizzare il formato ODBC quando la fuga di brace è più comoda per valori che contengono punti e virgola o altri caratteri speciali.
Formato di URL
Il formato URL segue lo sqlserver:// schema ed è il formato più comune per le applicazioni Go:
sqlserver://username:password@host:port?database=AdventureWorks2025¶m=value
Examples
Connettiti a un'istanza predefinita locale con autenticazione SQL:
sqlserver://<user>:<password>@<server>?database=AdventureWorks2025
Connettiti a un'istanza denominata:
sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025
Connettiti a database SQL di Azure:
sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false
Usa autenticazione di Windows (solo Windows):
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes
Note
Nel formato URL, la porta è predefinita su 1433. Per specificare una porta diversa, includila dopo l'host: sqlserver://<server>:1434?database=AdventureWorks2025.
Caratteri speciali nelle password
Nel formato URL, le password con caratteri speciali devono essere codificate per percentuale. Caratteri comuni che richiedono codifica:
| Character | Encoded | Esempio di password | Forma codificata |
|---|---|---|---|
@ |
%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 |
Usare url.UserPassword() per gestire automaticamente la codifica:
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
Nel formato ADO, la codifica percentuale non è necessaria. Se un valore contiene punti e virgola, si avvolga tra virgolette doppie: password="<password>". In formato ODBC, avvolgi il valore tra parentesi: password={<password>}.
Formato ADO
Il formato ADO utilizza coppie separate key=value a punto e virgola:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025
Esempi ADO
Collegati con un numero di porta:
server=<server>;port=1434;user id=<user>;password=<password>;database=AdventureWorks2025
Connettiti a un'istanza denominata:
server=<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025
Note
Nel formato ADO, i server campi e port sono parametri separati. Non includere una porta separata da due punti nel server valore.
Sinonimi di parole chiave ADO.NET
Con la versione v1.11.0 e successive, il formato ADO accetta anche le grafie alternative delle parole chiave che Microsoft. Data.SqlClient utilizza, che permette di riutilizzare una stringa di connessione scritta per un'applicazione .NET. Le parole chiave non sono indistinte a maiuscole.
| Parola chiave ADO.NET | parametro go-mssqldb |
|---|---|
Addr, Address, Network AddressData Source |
server |
User, UID |
user id |
PWD |
password |
Initial Catalog |
database |
App, Application Name |
app name |
Connect Timeout, Timeout |
connection timeout |
Application Intent |
applicationintent |
Failover Partner |
failoverpartner |
Failover Partner SPN |
failoverpartnerspn |
Trust Server Certificate |
trustservercertificate |
Multi Subnet Failover |
multisubnetfailover |
Host Name In Certificate |
hostnameincertificate |
Server SPN |
serverspn |
Server Certificate |
servercertificate |
WSID |
workstation id |
Column Encryption Setting |
columnencryption |
La seguente stringa di connessione usa solo sinonimi:
Data Source=<server>;Initial Catalog=AdventureWorks2025;UID=<user>;PWD=<password>;Connect Timeout=30
Questi sinonimi si applicano solo al formato ADO. I formati URL e ODBC accettano i nomi dei parametri driver nella colonna di destra.
Formato ODBC
Il formato ODBC utilizza il odbc: prefisso con coppie separate key=value a punto e virgola. I valori che contengono caratteri speciali possono essere racchiusi tra parentesi:
odbc:server=<server>;user id=<user>;password={<password>};database=AdventureWorks2025
Apparecchi che si staccano
In formato ODBC, si avvolge un valore {} per evitare punti e virgola, segni uguali e altri caratteri speciali. Per includere letteralmente un } apparecchio interno, raddoppialo:
odbc:password={my}}password}
Parametri comuni
I seguenti parametri sono condivisi tra tutti e tre i formati. Il driver risolve gli alias solo nelle stringhe di connessione in formato ADO . Le stringhe di connessione in formato URL e ODBC corrispondono esattamente ai nomi dei parametri, tranne per la maiuscolagem.
| Parametro | Aliases | Descrizione |
|---|---|---|
user id |
user |
Nome di accesso SQL Server. |
password |
- | Password per l'accesso SQL Server. |
database |
- | Nome del database di destinazione. |
connection timeout |
- | Timeout in pochi secondi per lo scambio di accesso. Il driver predefinito è 0, che non applica timeout allo scambio di accesso. La connessione di rete iniziale è limitata separatamente da dial timeout. Preferisco usare i contesti Go per controllare la connessione e i timeout delle query. Per database SQL di Azure serverless con auto-pausa attivata, la prima connessione a un database in pausa fallisce con l'errore 40613 mentre il database riprende. Aggiungi una logica di ritentativi invece di un timeout più lungo. I database generalmente riprendono in meno di un minuto. Per ulteriori informazioni, vedi Pausa automatica e ripresa automatica. |
dial timeout |
- | Timeout della chiamata di rete in pochi secondi. Il driver predefinito è di 15 secondi per protocollo registrato. L'impostazione 0 applica lo stesso valore predefinito invece di aspettare all'infinito. |
encrypt |
- | Modalità di crittografia: strict, true/mandatory, false/optional, disable. Quando viene omesso, il valore predefinito è false/optional. Per Azure SQL e connessioni di produzione, imposta encrypt=true esplicitamente. |
TrustServerCertificate |
- | Saltare la validazione dei certificati. Quando encrypt è specificato, il valore predefinito è false. Quando encrypt è omesso, il valore predefinito è true. Usa false per connessioni di produzione e Azure SQL. |
app name |
- | Il nome dell'applicazione è passato al server. |
authenticator |
- | Autenticatore personalizzato. Usata internamente dal azuread pacchetto. |
Per l'elenco completo delle opzioni di connessione, vedi Opzioni di connessione.
Compila stringhe di connessione nel codice
Usa il url.URL tipo o msdsn.Config la struct per costruire stringhe di connessione in modo programmatico invece di concatenare stringhe grezze. Questo approccio evita problemi di iniezione e codifica.
Costruttore di URL
Usa url.URL dalla libreria standard per costruire la stringa di connessione in sicurezza:
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
Usa NewConnectorConfig con msdsn.Config per una configurazione strutturata, specialmente quando devi impostare un dialer personalizzato, SessionInitSQL, o impostazioni TLS esplicite come TrustServerCertificate:
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 dipendi ancora dal mssql comportamento obsoleto dei nomi driver che riscrive ? i segnaposto, usa NewConnectorWithProcessQueryText invece di NewConnectorConfig quando costruisci il connettore.