Go-mssqldb connection strings

Ovladač go-mssqldb přijímá tři formáty připojovací řetězec: URL, ADO a ODBC. Všechny tři formáty podporují stejnou sadu parametrů připojení. Vyberte formát, který nejlépe vyhovuje vaší aplikaci nebo modelu nasazení.

Tip

Pro nové aplikace v Go použijte formát URL. Integruje se s balíčkem net/url Go pro bezpečné kódování a programovou konstrukci. Při přenášení spojovacích řetězců z .NET aplikací používejte formát ADO a formát ODBC používejte při použití závorkového úniku pro hodnoty obsahující středníky nebo jiné speciální znaky.

Formát adresy URL

Formát URL následuje schéma sqlserver:// a je nejběžnějším formátem pro aplikace Go:

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

Příklady

Připojte se k lokální výchozí instanci pomocí SQL autentizace:

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

Připojení k pojmenované instanci:

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

Používejte Windows authentication (pouze Windows):

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

Note

Ve formátu URL je port výchozí na 1433. Pro určení jiného portu jej přidejte za hostitelem: sqlserver://<server>:1434?database=AdventureWorks2025.

Speciální znaky v heslech

Ve formátu URL musí být hesla se speciálními znaky kódována procentuálně. Běžné znaky, které vyžadují kódování:

Znak Encoded Příklad hesla Zakódovaná forma
@ %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

Použití url.UserPassword() pro automatické zpracování kódování:

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

Ve formátu ADO není nutné procentuální kódování. Pokud hodnota obsahuje středníky, zabalte ji do uvozovek: password="<password>". Ve formátu ODBC zabalte hodnotu místo toho do závorek: password={<password>}.

Formát ADO

Formát ADO používá páry oddělené key=value středníky:

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

Příklady ADO

Připojte se pomocí čísla portu:

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

Připojení k pojmenované instanci:

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

Note

Ve formátu server ADO jsou pole a port samostatné parametry. Do hodnoty neuvádějte port server oddělený dvojtečkou.

Formát ODBC

Formát ODBC používá odbc: předponu s páry oddělenými key=value středníky. Hodnoty obsahující speciální znaky lze uzavřít do závorek:

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

Výztuhy unikají

Ve formátu ODBC se hodnota zabalí do pro {} únik středníků, rovnátek a dalších speciálních znaků. Pokud chcete zahrnout } doslovné vnitřní rovnátka, zdvojnásobte to:

odbc:password={my}}password}

Společné parametry

Následující parametry jsou sdíleny napříč všemi třemi formáty. Ovladač vyřeší aliasy pouze v ADO formátu connection strings. Spojovací řetězce ve formátu URL a ODBC přesně odpovídají názvům parametrů, kromě case.

Parameter Aliases Description
user id user Přihlašovací jméno SQL Server.
password - Heslo k přihlášení do SQL Server.
database - Název cílové databáze.
connection timeout - Timeout pro výměnu přihlášení během několika sekund. Výchozí nastavení ovladače je 0, což neplatí pro přihlašovací výměnu bez timeoutu. Počáteční síťové spojení je ohraničeno samostatně .dial timeout Preferuji používat Go kontexty pro řízení časových limitů připojení a dotazů. U serverless Azure SQL Database s povolenou automatickou pauzou selže první spojení s pozastavenou databází s chybou 40613, zatímco databáze pokračuje. Přidejte logiku opakovaného pokusu místo delšího timeoutu. Databáze se obvykle obnoví za méně než jednu minutu. Více informací naleznete v části Automatické pozastavení a automatické obnovení.
dial timeout - Časový limit síťového čísla během několika sekund. Výchozí nastavení ovladače je 15 sekund na jeden registrovaný protokol. Nastavení aplikuje 0 stejný výchozí stav místo nekonečného čekání.
encrypt - Šifrovací režim: strict,true/mandatory , , . false/optionaldisable Pokud je vynechán, výchozí je .false/optional For Azure SQL and production connections, set encrypt=true explicitly.
TrustServerCertificate - Přeskočte ověřování certifikátů. Když encrypt je specifikováno, výchozí je false. Když encrypt je vynechán, výchozí je .true Použití false pro produkční a Azure SQL připojení.
app name - Název aplikace byl předán serveru.
authenticator - Vlastní autentizátor. Používá to interně v balíčku azuread .

Pro úplný seznam možností připojení viz Možnosti připojení.

Vytváření spojovacích řetězců v kódu

Použijte url.URL typ nebo msdsn.Config strukturu k programové budování spojovacích řetězců místo spojování surových řetězců. Tento přístup se vyhýbá problémům s injekcí a kódováním.

URL builder

Použijte url.URL ze standardní knihovny k bezpečné sestavě připojovací řetězec:

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

Použijte NewConnectorConfig s pro msdsn.Config strukturovanou konfiguraci, zejména když potřebujete nastavit vlastní vytáčecí zařízení, SessionInitSQL, nebo explicitní TLS nastavení jako TrustServerCertificatejsou:

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)

Pokud stále spoléháte na mssql zastaralé chování jmen ovladačů, které přepisuje ? zástupné ovladače, používejte místo NewConnectorWithProcessQueryText toho při NewConnectorConfig stavbě konektoru.