GO-mssqldb connection strings

Sterownik go-mssqldb akceptuje trzy formaty parametry połączenia: URL, ADO i ODBC. Wszystkie trzy formaty obsługują ten sam zestaw parametrów połączenia. Wybierz format, który najlepiej pasuje do Twojej aplikacji lub modelu wdrożenia.

Wskazówka

Używaj formatu URL dla nowych aplikacji Go. Integruje się z pakietem net/url Go dla bezpiecznego kodowania i budowy programatycznej. Używaj formatu ADO przy przenoszeniu ciągów połączeń z aplikacji .NET, a formatu ODBC, gdy ucieczka nawiasowa jest wygodniejsza dla wartości zawierających średniki lub inne znaki specjalne.

Format adresu URL

Format URL podąża za schematem sqlserver:// i jest najczęściej stosowanym formatem dla aplikacji Go:

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

Examples

Połącz się z lokalną domyślną instancją za pomocą uwierzytelniania SQL:

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

Aby połączyć się z instancją o nazwie:

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

Używaj Windows authentication (tylko Windows):

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

Note

W formacie URL port domyślnie przyjmuje 1433. Aby określić inny port, należy dodać go po hostze: sqlserver://<server>:1434?database=AdventureWorks2025.

Znaki specjalne w hasłach

W formacie URL hasła ze specjalnymi znakami muszą być kodowane procentowo. Typowe znaki wymagające kodowania:

Character Encoded Przykładowe hasło Forma zakodowana
@ %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

Zastosowanie url.UserPassword() do automatycznego obsługi kodowania:

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

W formacie ADO kodowanie procentowe nie jest potrzebne. Jeśli wartość zawiera średniki, należy ją owinąć w cudzysłów: password="<password>". W formacie ODBC oplotmy wartość w nawiasu: password={<password>}.

Format ADO

Format ADO wykorzystuje pary oddzielone key=value średnikami:

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

Przykłady ADO

Połącz się z numerem portu:

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

Aby połączyć się z instancją o nazwie:

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

Note

W formacie server ADO pola i port są oddzielnymi parametrami. Nie uwzględniaj portu z oddzieleniem dwukropkiem w wartości.server

Format ODBC

Format ODBC używa prefiksu odbc: z parami oddzielonymi key=value średnikami. Wartości zawierające znaki specjalne można otulić w nawiasach:

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

Ucieczki aparatów

W formacie ODBC można oplatać wartość w skrótki {} , znaki równości i inne znaki specjalne. Aby dołączyć dosłowne } wewnętrzne aparaty, podwaj to:

odbc:password={my}}password}

Wspólne parametry

Następujące parametry są wspólne dla wszystkich trzech formatów:

Parameter Aliases Opis
user id user Nazwa logowania do SQL Server.
password - Hasło do logowania do SQL Server.
database - Nazwa docelowej bazy danych.
connection timeout - Czas logowania trwa kilka sekund. Domyślnym 0sterownikiem jest , który czeka w nieskończoność. Wolę używać kontekstów Go do kontrolowania limitów połączeń i zapytań.
dial timeout - Limit wybrania sieci w kilka sekund. Domyślny sterownik opiera się na zarejestrowanych protokołach. Ustaw 0 oczekiwanie w nieskończoność.
encrypt - Tryb szyfrowania: strict,true/mandatory , , . false/optionaldisable Po pominięciu domyślnie jest false/optional. For Azure SQL and production connections, set encrypt=true explicitly.
TrustServerCertificate - Pomiń walidację certyfikatów. Gdy encrypt jest określona, domyślna wartość wynosi .false Gdy encrypt jest pomijany, domyślnym truejest . Zastosowanie false do połączeń produkcyjnych i Azure SQL.
app name - Nazwa aplikacji przekazywana serwerowi.
authenticator - Własny uwierzytelniacz na zamówienie. Wykorzystywane wewnętrznie przez pakiet.azuread

Pełną listę opcji połączenia znajdziesz w sekcji Opcje połączenia.

Buduj stringi połączeń w kodzie

Użyj url.URL typu lub msdsn.Config struktury do tworzenia łańcuchów połączeń programatycznie, zamiast łączyć surowe ciągi znaków. Takie podejście unika problemów z wstrzykiwaniem i kodowaniem.

Kreator URL

Użyj url.URL ze standardowej biblioteki do bezpiecznej konstrukcji parametry połączenia:

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

Zastosowanie NewConnectorConfig z do msdsn.Config konfiguracji strukturalnej, zwłaszcza gdy musisz ustawić niestandardowy dialer, SessionInitSQL, lub wyraźne ustawienia TLS, takie jak 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)

Jeśli nadal polegasz na zachowaniu mssql przestarzałej nazwy sterownika, która przepisuje ? tymczasowe elementy, używaj NewConnectorWithProcessQueryText zamiast NewConnectorConfig podczas budowy złącza.