Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Treiber go-mssqldb akzeptiert drei Verbindungszeichenfolge-Formate: URL, ADO und ODBC. Alle drei Formate unterstützen denselben Satz von Verbindungsparametern. Wählen Sie das Format, das am besten zu Ihrer Anwendung oder Ihrem Bereitstellungsmodell passt.
Tip
Verwenden Sie das URL-Format für neue Go-Anwendungen. Es integriert sich mit Gos net/url Paket für sichere Codierung und programmatische Konstruktion. Verwenden Sie das ADO-Format beim Portieren von Verbindungszeichenketten aus .NET-Anwendungen und verwenden Sie das ODBC-Format, wenn das Ausweichen von Klammern für Werte mit Semikolons oder anderen Sonderzeichen bequemer ist.
URL-Format
Das URL-Format folgt dem Schema sqlserver:// und ist das gebräuchlichste Format für Go-Anwendungen:
sqlserver://username:password@host:port?database=AdventureWorks2025¶m=value
Beispiele
Verbinden Sie sich mit einer lokalen Standardinstanz über SQL-Authentifizierung:
sqlserver://<user>:<password>@<server>?database=AdventureWorks2025
Stellen Sie eine Verbindung mit einer benannten Instanz her:
sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025
Connect to Azure SQL-Datenbank:
sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false
Verwenden Sie Windows-Authentifizierung (nur Windows):
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes
Hinweis
Im URL-Format steht der Port standardmäßig auf 1433. Um einen anderen Port zu spezifizieren, fügen Sie ihn nach dem Host hinzu: sqlserver://<server>:1434?database=AdventureWorks2025.
Sonderzeichen in Passwörtern
Im URL-Format müssen Passwörter mit Sonderzeichen prozentual codiert werden. Häufige Zeichen, die codiert werden müssen:
| Character | Encoded | Beispielpasswort | Codierte 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 |
Verwenden url.UserPassword() Sie zur automatischen Kodierung:
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
Im ADO-Format ist eine prozentuale Codierung nicht erforderlich. Wenn ein Wert Semikolons enthält, wird er in Anführungszeichen gesetzt: password="<password>". Im ODBC-Format wickelt man den Wert stattdessen in Klammern: password={<password>}.
ADO-Format
Das ADO-Format verwendet Semikolon-getrennte key=value Paare:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025
ADO-Beispiele
Verbinden Sie sich mit einer Portnummer:
server=<server>;port=1434;user id=<user>;password=<password>;database=AdventureWorks2025
Stellen Sie eine Verbindung mit einer benannten Instanz her:
server=<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025
Hinweis
Im ADO-Format sind die server Felder und port getrennte Parameter. Fügen Sie keinen Doppelpunkt-getrennten Port in den server Wert ein.
ODBC-Format
Das ODBC-Format verwendet das odbc: Präfix mit semikolon-getrennten key=value Paaren. Werte, die spezielle Zeichen enthalten, können in Klammern eingeschlossen werden:
odbc:server=<server>;user id=<user>;password={<password>};database=AdventureWorks2025
Zahnspangen lösen sich aus
Im ODBC-Format wird ein Wert eingewickelt {} , um Semikolon, Gleichzeichenzeichen und andere Sonderzeichen zu entkommen. Um eine buchstäbliche } innere Zahnspange hinzuzufügen, verdoppeln Sie sie:
odbc:password={my}}password}
Allgemeine Parameter
Die folgenden Parameter werden in allen drei Formaten geteilt:
| Parameter | Aliase | Description |
|---|---|---|
user id |
user |
SQL Server-Login-Name. |
password |
- | Passwort für den SQL Server-Anmelder. |
database |
- | Zieldatenbankname. |
connection timeout |
- | Login-Timeout in Sekunden. Der Standardtreiber ist 0, der unbegrenzt wartet. Ich bevorzuge Go-Kontexte, um Verbindungs- und Abfrage-Timeouts zu steuern. |
dial timeout |
- | Netzwerkwahl-Timeout in Sekunden. Der Standardtreiber basiert auf den registrierten Protokollen. Auf unbestimmte Zeit warten 0 . |
encrypt |
- | Verschlüsselungsmodus: strict, true/mandatory, false/optional, disable. Wenn weggelassen, lautet false/optionalder Standard . Für Azure SQL und Produktionsverbindungen setzen encrypt=true Sie explizit. |
TrustServerCertificate |
- | Zertifikatsvalidierung überspringen. Wenn encrypt angegeben ist, ist falseder Standard . Wenn encrypt weggelassen wird, ist trueder Standard .
false Verwendung für Produktions- und Azure SQL-Verbindungen. |
app name |
- | Anwendungsname an den Server weitergegeben. |
authenticator |
- | Benutzerdefinierter Authenticator. Wird intern vom azuread Paket verwendet. |
Für die vollständige Liste der Verbindungsoptionen siehe Verbindungsoptionen.
Aufbau von Verbindungsstrings im Code
Verwenden Sie den Type oder msdsn.Config Structurl.URL, um Verbindungsstrings programmatisch zu erstellen, anstatt rohe Strings zu verketten. Dieser Ansatz vermeidet Injektions- und Codierungsprobleme.
URL-Builder
Verwenden url.URL Sie aus der Standardbibliothek, um die Verbindungszeichenfolge sicher zu konstruieren:
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
Verwendung NewConnectorConfig mit msdsn.Config für strukturierte Konfigurationen, besonders wenn Sie einen benutzerdefinierten Dialer einrichten müssen oder SessionInitSQL:
import (
"database/sql"
"github.com/microsoft/go-mssqldb"
"github.com/microsoft/go-mssqldb/msdsn"
)
config := msdsn.Config{
Host: "<server>",
Port: 1433,
Database: "AdventureWorks2025",
}
connector := mssql.NewConnectorConfig(config)
db := sql.OpenDB(connector)