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şılmaktadır. Sürücü, takma adları yalnızca ADO format bağlantı dizilerinde çözer. URL ve ODBC format bağlantı dizileri parametre isimleriyle tam olarak eşleşir, sadece kaplan hariç.

Parametre Aliases Description
user id user SQL Server giriş adı.
password - SQL Server giriş şifresi.
database - Hedef veritabanı adı.
connection timeout - Giriş değişimi için süre aşımı. Sürücü varsayılan 0olarak , bu da giriş değişimine zaman aşımına bağlı değildir. İlk ağ bağlantısı ayrı olarak sınırlıdır.dial timeout Bağlantı ve sorgulama zamanlarını kontrol etmek için Go bağlamlarını kullanmayı tercih edin. Otomatik duraklatma etkin olan Azure SQL Veritabanı sunucusuz olduğunda, durdurulmuş veritabanına ilk bağlantı 40613 hatasıyla başarısız olur ve veritabanı devam eder. Daha uzun bir zaman aşımına göre tekrar deneme mantığı ekleyin. Veritabanları genellikle bir dakikadan kısa sürede yeniden başlar. Daha fazla bilgi için bkz. Otomatik duraklatma ve otomatik devam.
dial timeout - Ağ arama süresi saniyelerde. Kayıtlı protokol başına sürücü varsayılan süresi 15 saniyedir. Ayar 0 , sonsuza kadar beklemek yerine aynı varsayılan şeyi uygular.
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 mssql modifikasyonlu ? sürücü adı davranışına bağımlıysanız, konnektör oluştururken yerine NewConnectorWithProcessQueryText kullanınNewConnectorConfig.