go-mssqldb bağlantı dizileri

Sürücü go-mssqldb üç bağlantı dizesi formatını kabul eder: URL, ADO ve ODBC. Üç format da aynı bağlantı parametreleri setini destekler. Uygulamanıza veya dağıtım modelinize en uygun formatı seçin.

İpucu

Yeni Go uygulamaları için URL formatı kullanın. Güvenli kodlama ve programatik yapı için Go net/url paketiyle entegre olur. .NET uygulamalarından bağlantı dizelerini taşırken ADO formatını kullanın ve nokta virgül veya diğer özel karakterler içeren değerler için brace kaçış daha uygun olduğunda ODBC formatını kullanın.

URL biçimi

URL formatı bu sqlserver:// şemayı takip eder ve Go uygulamaları için en yaygın formattır:

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

Examples

SQL kimlik doğrulama ile yerel bir varsayılan instance'a bağlanın:

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

Adlandırılmış örneğe bağlanın:

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

Connect to Azure SQL Veritabanı:

sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false

Windows authentication'ı kullanın (sadece Windows için):

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

Uyarı

URL formatında port varsayılan olarak 1433 olur. Farklı bir port belirtmek için, ana bilgisayardan sonra ekleyin: sqlserver://<server>:1434?database=AdventureWorks2025.

Şifrelerdeki özel karakterler

URL formatında, özel karakterli şifreler yüzde olarak kodlanmalıdır. Kodlama gerektiren yaygın karakterler:

Karakter Encoded Örnek şifre Kodlanmış 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

Otomatik olarak kodlamayı işlemek için kullanılır url.UserPassword() :

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

ADO formatında yüzde kodlama gerekmiyor. Bir değer nokta virgül içeriyorsa, onu çift tırnak içinde sarın: password="<password>". ODBC formatında, değeri braketlerle sarın: password={<password>}.

ADO formatı

ADO formatı, nokta virgülle ayrılmış key=value çiftler kullanır:

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

ADO örnekleri

Bir port numarasıyla bağlanın:

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

Adlandırılmış örneğe bağlanın:

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

Uyarı

ADO formatında server ve port alanları ayrı parametrelerdir. Değere iki nokta ayrılmış server port dahil etmeyin.

ODBC formatı

ODBC formatı, nokta virgülle ayrılmış odbc: çiftlerle preeki key=value kullanır. Özel karakterler içeren değerler braketlerle kaplanabilir:

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

Diş teli kaçıyor

ODBC formatında, nokta virgüllerden, eşit işaretlerinden ve diğer özel karakterlerden kaçmak için bir değeri içine {} sarın. İç tellerin tam anlamıyla } bir kısmını eklemek için, bunu iki katına çıkarın:

odbc:password={my}}password}

Genel parametreler

Aşağıdaki parametreler üç formatın tamamında paylaşılmıştır:

Parametre Aliases Description
user id user SQL Server giriş adı.
password - SQL Server giriş şifresi.
database - Hedef veritabanı adı.
connection timeout - Giriş süresi saniyeler içinde. Sürücü varsayılan 0, bu da sonsuz olarak bekler. Bağlantı ve sorgulama zamanlarını kontrol etmek için Go bağlamlarını kullanmayı tercih edin.
dial timeout - Ağ arama süresi saniyelerde. Sürücü varsayılan olarak kayıtlı protokollere dayanır. Süresiz beklemeye ayarlandı 0 .
encrypt - Şifreleme modu: strict, true/mandatory,false/optional , . disable Atlandığında, varsayılan olarak false/optional. Azure SQL ve production bağlantıları için açıkça ayarlanencrypt=true.
TrustServerCertificate - Sertifika doğrulamasını atlayın. Belirtildiğindeencrypt, varsayılan değer 'dir.false Atlandığındaencrypt, varsayılan değer .true Üretim ve Azure SQL bağlantıları için kullanılırfalse.
app name - Uygulama adı sunucuya iletilir.
authenticator - Özel kimlik doğrulama cihazı. Paket tarafından dahili olarak kullanılır azuread .

Bağlantı seçeneklerinin tam listesi için Bağlantı seçenekleri bölümüne bakınız.

Kodda bağlantı dizileri oluştur

Ham dizeleri birleştirmek yerine bağlantı dizelerini programlayıcı olarak oluşturmak için type veya url.URL struct kullanınmsdsn.Config. Bu yaklaşım, enjeksiyon ve kodlama sorunlarını önler.

URL oluşturucu

Standart kütüphaneden güvenli bir şekilde bağlantı dizesi oluşturmak için kullanınurl.URL:

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

NewConnectorConfig Yapılandırılmış yapılandırma için kullanın, msdsn.Config özellikle özel bir çevirici veya SessionInitSQLaçık TLS ayarları yapmanız gerektiğinde :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)

Eğer hala yer tutucuları yeniden yazan ? modifikasyonlu mssql sürücü adı davranışına bağımlıysanız, konnektör oluştururken yerine NewConnectorConfig kullanınNewConnectorWithProcessQueryText.