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. Sterownik rozwiązuje aliasy tylko w ciągu połączeń w formacie ADO . Stringi połączeń w formacie URL i ODBC dokładnie odpowiadają nazwam parametrów, z wyjątkiem oznaczenia określeń (case).

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 na wymianę logowania za kilka sekund. Domyślny sterownik to 0, co nie stosuje się limitu czasu na wymianę logowania. Początkowe połączenie sieciowe jest ograniczone oddzielnie przez dial timeout. Wolę używać kontekstów Go do kontrolowania limitów połączeń i zapytań. W przypadku serwerlessa Azure SQL Database z włączoną automatyczną pauzą, pierwsze połączenie z wstrzymaną bazą danych kończy się błędem 40613, podczas gdy baza wraca. Dodaj logikę powtórek zamiast dłuższego timeoutu. Bazy danych zazwyczaj wracają w mniej niż minutę. Więcej informacji znajdziesz w sekcji Automatyczne wstrzymywanie i automatyczne wznawianie.
dial timeout - Limit wybrania sieci w kilka sekund. Domyślny czas na sterownik to 15 sekund na zarejestrowany protokół. Ustawienie 0 stosuje ten sam domyślny sposób zamiast czekać 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.