Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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¶m=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.