Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
go-mssqldb Driver menerima tiga format string koneksi: URL, ADO, dan ODBC. Ketiga format mendukung serangkaian parameter koneksi yang sama. Pilih format yang paling sesuai dengan aplikasi atau model penyebaran Anda.
Tip
Gunakan format URL untuk aplikasi Go baru. Ini terintegrasi dengan paket Go net/url untuk pengkodean yang aman dan konstruksi terprogram. Gunakan format ADO saat memindahkan string koneksi dari aplikasi .NET, dan gunakan format ODBC saat pengulangan kurung kurawal lebih nyaman untuk nilai yang berisi titik koma atau karakter khusus lainnya.
Format URL
Format URL mengikuti sqlserver:// skema dan merupakan format yang paling umum untuk aplikasi Go:
sqlserver://username:password@host:port?database=AdventureWorks2025¶m=value
Examples
Sambungkan ke instans default lokal dengan autentikasi SQL:
sqlserver://<user>:<password>@<server>?database=AdventureWorks2025
Sambungkan ke instans bernama:
sqlserver://<user>:<password>@<server>/myinstance?database=AdventureWorks2025
Menyambungkan ke Azure SQL Database:
sqlserver://<user>:<password>@<server>.database.windows.net?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=false
Gunakan Windows authentication (khusus Windows):
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes
Note
Dalam format URL, port default ke 1433. Untuk menentukan port yang berbeda, sertakan setelah host: sqlserver://<server>:1434?database=AdventureWorks2025.
Karakter khusus dalam kata sandi
Dalam format URL, sandi dengan karakter khusus harus dikodekan persen. Karakter umum yang memerlukan pengkodean:
| karakter | Encoded | Contoh kata sandi | Formulir yang dikodekan |
|---|---|---|---|
@ |
%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 |
Gunakan url.UserPassword() untuk menangani pengodean secara otomatis:
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
Dalam format ADO, pengkodean persen tidak diperlukan. Jika nilai berisi titik koma, bungkus dengan tanda kutip ganda: password="<password>". Dalam format ODBC, bungkus nilai dalam kurung kurawal sebagai gantinya: password={<password>}.
Format ADO
Format ADO menggunakan pasangan yang dipisahkan key=value titik koma:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025
Contoh ADO
Hubungkan dengan nomor port:
server=<server>;port=1434;user id=<user>;password=<password>;database=AdventureWorks2025
Sambungkan ke instans bernama:
server=<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025
Note
Dalam format ADO, server bidang dan port adalah parameter terpisah. Jangan sertakan port yang dipisahkan titik dua dalam server nilai.
Sinonim kata kunci ADO.NET
Pada versi v1.11.0 dan versi berikutnya, format ADO juga menerima ejaan kata kunci alternatif yang digunakan Microsoft. Data.SqlClient, yang memungkinkan Anda menggunakan kembali string koneksi yang ditulis untuk aplikasi .NET. Kata kunci tidak sensitif terhadap huruf besar/kecil.
| Kata kunci ADO.NET | parameter go-mssqldb |
|---|---|
Addr,Address,Network Address,Data Source |
server |
User, UID |
user id |
PWD |
password |
Initial Catalog |
database |
App, Application Name |
app name |
Connect Timeout, Timeout |
connection timeout |
Application Intent |
applicationintent |
Failover Partner |
failoverpartner |
Failover Partner SPN |
failoverpartnerspn |
Trust Server Certificate |
trustservercertificate |
Multi Subnet Failover |
multisubnetfailover |
Host Name In Certificate |
hostnameincertificate |
Server SPN |
serverspn |
Server Certificate |
servercertificate |
WSID |
workstation id |
Column Encryption Setting |
columnencryption |
string koneksi berikut hanya menggunakan sinonim:
Data Source=<server>;Initial Catalog=AdventureWorks2025;UID=<user>;PWD=<password>;Connect Timeout=30
Sinonim ini hanya berlaku untuk format ADO. Format URL dan ODBC menerima nama parameter driver di kolom kanan.
Format ODBC
Format ODBC menggunakan odbc: awalan dengan pasangan yang dipisahkan key=value titik koma. Nilai yang berisi karakter khusus dapat diapit dalam kurung kurawal:
odbc:server=<server>;user id=<user>;password={<password>};database=AdventureWorks2025
Kawat gigi keluar
Dalam format ODBC, bungkus nilai untuk {} melarikan diri dari titik koma, tanda sama dengan, dan karakter khusus lainnya. Untuk menyertakan kurung gigi dalam literal } , gandakan:
odbc:password={my}}password}
Parameter umum
Parameter berikut dibagikan di ketiga format. Driver hanya menyelesaikan alias dalam format ADO connection strings. String koneksi format URL dan ODBC cocok persis dengan nama parameter, kecuali casing.
| Parameter | Aliases | Description |
|---|---|---|
user id |
user |
Nama login SQL Server. |
password |
- | Kata sandi untuk login SQL Server. |
database |
- | Nama database target. |
connection timeout |
- | Timeout dalam hitungan detik untuk pertukaran login. Default driver adalah 0, yang tidak memberikan timeout pada pertukaran login. Koneksi jaringan awal dibatasi secara terpisah oleh dial timeout. Lebih suka menggunakan konteks Go untuk mengontrol batas waktu koneksi dan kueri. Untuk Azure SQL Database tanpa server dengan auto-pause diaktifkan, koneksi pertama ke database yang dijeda gagal dengan error 40613 saat database dilanjutkan. Tambahkan logika retry, bukan timeout yang lebih lama. Basis data umumnya kembali aktif dalam waktu kurang dari satu menit. Untuk informasi lebih lanjut, lihat Auto-pause dan auto-resume. |
dial timeout |
- | Batas waktu panggilan jaringan dalam hitungan detik. Default driver adalah 15 detik per protokol yang terdaftar. Pengaturan 0 menerapkan default yang sama daripada menunggu tanpa batas waktu. |
encrypt |
- | Mode enkripsi: strict,true/mandatory , , . false/optionaldisable Jika dihilangkan, defaultnya adalah false/optional. Untuk koneksi Azure SQL dan produksi, atur encrypt=true secara eksplisit. |
TrustServerCertificate |
- | Lewati validasi sertifikat. Saat encrypt ditentukan, defaultnya adalah false. Ketika encrypt dihilangkan, defaultnya adalah true. Gunakan false untuk koneksi produksi dan Azure SQL. |
app name |
- | Nama aplikasi diteruskan ke server. |
authenticator |
- | Pengautentikasi khusus. Digunakan oleh azuread paket secara internal. |
Untuk daftar lengkap opsi koneksi, lihat Opsi koneksi.
Membangun string koneksi dalam kode
Gunakan url.URL jenis atau msdsn.Config struktur untuk membuat string koneksi secara terprogram alih-alih menggabungkan string mentah. Pendekatan ini menghindari masalah injeksi dan pengkodean.
Pembuat URL
Gunakan url.URL dari pustaka standar untuk membuat string koneksi dengan aman:
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()
Konfigurasi Konektor Baru
Gunakan NewConnectorConfig dengan msdsn.Config untuk konfigurasi terstruktur, terutama saat Anda perlu menyetel dialer kustom, SessionInitSQL, atau setelan TLS eksplisit seperti 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)
Jika Anda masih bergantung pada perilaku nama driver yang tidak digunakan mssql lagi yang menulis ? ulang placeholder, gunakan NewConnectorWithProcessQueryText alih-alih NewConnectorConfig saat Anda membuat konektor.