Go-mssqlDB anslutningssträngar

Drivrutinen go-mssqldb accepterar tre reťazec pripojenia-format: URL, ADO och ODBC. Alla tre format stöder samma uppsättning anslutningsparametrar. Välj det format som passar din applikation eller distributionsmodell bäst.

Tip

Använd URL-format för nya Go-applikationer. Det integreras net/url med Gos paket för säker kodning och programmatisk konstruktion. Använd ADO-formatet när du portar anslutningssträngar från .NET-applikationer, och använd ODBC-formatet när parentesescape är mer bekvämt för värden som innehåller semikolon eller andra specialtecken.

URL-format

URL-formatet följer schemat sqlserver:// och är det vanligaste formatet för Go-applikationer:

sqlserver://username:password@host:port?database=AdventureWorks2025&param=value

Exempel

Koppla till en lokal standardinstans med SQL-autentisering:

sqlserver://<user>:<password>@<server>?database=AdventureWorks2025

Anslut till en namngiven instans:

sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025

Connect to Azure SQL Database:

sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false

Använd Windows authentication (endast Windows):

sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes

Note

I URL-formatet är porten standardinställning till 1433. För att specificera en annan port, inkludera den efter värden: sqlserver://<server>:1434?database=AdventureWorks2025.

Specialtecken i lösenord

I URL-format måste lösenord med specialtecken vara procentuellt kodade. Vanliga tecken som kräver kodning:

Character Encoded Exempel på lösenord Kodad form
@ %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

Används url.UserPassword() för att hantera kodning automatiskt:

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

I ADO-format behövs inte procentkodning. Om ett värde innehåller semikolon, slå in det i dubbelcitattecken: password="<password>". I ODBC-format, slå istället in värdet i klammer: password={<password>}.

ADO-format

ADO-formatet använder semikolonseparerade key=value par:

server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025

ADO-exempel

Koppla in med ett portnummer:

server=<server>;port=1434;user id=<user>;password=<password>;database=AdventureWorks2025

Anslut till en namngiven instans:

server=<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025

Note

I ADO-formatet är fälten server och port separata parametrar. Inkludera inte en kolonseparerad port i värdet server .

ODBC-format

ODBC-formatet använder prefixet odbc: med semikolonseparerade key=value par. Värden som innehåller specialtecken kan omslutas av klammer:

odbc:server=<server>;user id=<user>;password={<password>};database=AdventureWorks2025

Tandställning som rymmer

I ODBC-format, slå in ett värde {} för att undvika semikolon, lika tecken och andra specialtecken. För att inkludera en bokstavlig } inre tandställning, dubbla den:

odbc:password={my}}password}

Gemensamma parametrar

Följande parametrar delas mellan alla tre format:

Parameter Aliases Description
user id user SQL Server-inloggningsnamn.
password - Lösenord för SQL Server-inloggningen.
database - Måldatabasens namn.
connection timeout - Inloggningstid om några sekunder. Drivrutinens standard är 0, som väntar obestämt. Föredrar att använda Go-kontexter för att styra anslutning och frågetidsavbrott.
dial timeout - Nätverksuppringningstimeout på några sekunder. Drivrutinens standard baseras på de registrerade protokollen. Inställd 0 på att vänta på obestämd tid.
encrypt - Krypteringsläge: strict, true/mandatory,false/optional , . disable När den utelämnas är false/optionalstandarden . För Azure SQL och produktionsanslutningar, sätt encrypt=true explicit.
TrustServerCertificate - Hoppa över certifikatvalidering. När encrypt anges är standarden .false När encrypt utelämnas är standardvärdet true. Använd false för produktions- och Azure SQL-anslutningar.
app name - Applikationsnamn skickades till servern.
authenticator - Anpassad autentisering. Används internt av paketet azuread .

För hela listan över anslutningsalternativ, se Anslutningsalternativ.

Bygg anslutningssträngar i kod

Använd url.URL typen eller msdsn.Config strukturen för att bygga anslutningssträngar programmatiskt istället för att sammanfoga råsträngar. Denna metod undviker problem med injektion och kodning.

URL-byggare

Använd url.URL från standardbiblioteket för att säkert konstruera reťazec pripojenia:

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

Använd NewConnectorConfig med msdsn.Config för strukturerad konfiguration, särskilt när du behöver ställa in en anpassad uppringare, SessionInitSQL, eller explicita TLS-inställningar såsom 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)

Om du fortfarande är beroende av det föråldrade mssql drivrutinsnamnsbeteendet som skriver ? om platshållare, använd NewConnectorWithProcessQueryText istället för NewConnectorConfig när du bygger kopplingen.