Go-MSSQLDB 연결 문자열

드라이버는 go-mssqldb URL, ADO, ODBC 세 가지 연결 문자열 형식을 지원합니다. 세 가지 포맷 모두 동일한 연결 매개변수 집합을 지원합니다. 애플리케이션이나 배포 모델에 가장 적합한 형식을 선택하세요.

팁 (조언)

새로운 바둑 애플리케이션에는 URL 형식을 사용하세요. 안전한 인코딩과 프로그래밍 구조를 위해 Go의 net/url 패키지와 통합됩니다. .NET 애플리케이션에서 연결 문자열을 포팅할 때는 ADO 형식을 사용하고, 세미콜론이나 기타 특수 문자가 포함된 값에 대해서는 대괄호 이스케이프가 더 편리할 때는 ODBC 형식을 사용하세요.

URL 형식

URL 형식은 이 sqlserver:// 방식을 따르며, Go 애플리케이션에서 가장 일반적인 형식입니다:

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

예제

SQL 인증으로 로컬 기본 인스턴스에 연결하세요:

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

명명된 인스턴스에 연결합니다.

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

Azure SQL Database에 연결:

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

Windows 인증 사용(Windows 한정):

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

Note

URL 형식에서는 포트가 기본값으로 1433입니다. 다른 포트를 지정하려면 호스트 뒤에 포함하세요: sqlserver://<server>:1434?database=AdventureWorks2025.

비밀번호 내 특수 문자

URL 형식에서는 특수 문자가 포함된 비밀번호는 백분율 인코딩되어야 합니다. 인코딩이 필요한 일반적인 문자:

캐릭터 Encoded 예시 비밀번호 인코딩 형식
@ %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

인코딩을 자동으로 처리하는 용도 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 형식에서는 백분율 인코딩이 필요하지 않습니다. 세미콜론이 포함된 값은 쌍따옴표로 감쌌습니다: password="<password>". ODBC 형식에서는 값을 대괄호로 감싸 주세요: password={<password>}.

ADO 포맷

ADO 형식은 세미콜론 구분 key=value 쌍을 사용합니다:

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

ADO 예시

포트 번호로 연결:

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

명명된 인스턴스에 연결합니다.

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

Note

ADO 형식에서는 와 server 필드가 port 별도의 매개변수입니다. 콜론 분리 포트는 값에 server 포함하지 마세요.

ADO.NET 키워드 동의어

v1.11.0 이후 버전에서는 ADO 포맷이 Microsoft가 사용하는 대체 키워드 철자도 허용합니다. Data.SqlClient가 사용하는 경우, .NET 애플리케이션에 작성된 연결 문자열을 재사용할 수 있습니다. 키워드는 대문자 구분이 없습니다.

ADO.NET 키워드 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

다음 연결 문자열은 동의어만을 사용합니다:

Data Source=<server>;Initial Catalog=AdventureWorks2025;UID=<user>;PWD=<password>;Connect Timeout=30

이 동의어들은 ADO 형식에만 적용됩니다. URL과 ODBC 형식은 오른쪽 열에 드라이버 매개변수 이름을 허용합니다.

ODBC 포맷

ODBC 형식은 세미콜론 구분 odbc: 쌍이 포함된 접두사를 key=value 사용합니다. 특수 문자를 포함하는 값은 괄호로 둘러싸일 수 있습니다:

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

교정기가 빠져나가는 것

ODBC 형식에서는 세미콜론, 등호, 기타 특수 문자를 피하기 위해 값을 감싸 넣 {} 습니다. 실제 } 내부 교정기를 포함하려면 두 배로 추가하세요:

odbc:password={my}}password}

일반 매개 변수

다음 매개변수들은 세 가지 형식 모두에서 공유됩니다. 드라이버는 ADO 형식 의 연결 문자열로만 별칭을 해결합니다. URL과 ODBC 형식의 연결 문자열은 케이싱을 제외하고는 매개변수 이름과 정확히 일치합니다.

매개 변수 Aliases Description
user id user SQL Server 로그인 이름.
password - SQL Server 로그인 비밀번호.
database - 대상 데이터베이스 이름입니다.
connection timeout - 로그인 교환 시 몇 초 만에 타임아웃이 발생했습니다. 드라이버 기본값은 0이로, 로그인 교환에 타임아웃이 적용되지 않습니다. 초기 네트워크 연결은 각각 dial timeout에 의해 경계가 설정됩니다. 연결 및 쿼리 타임아웃을 제어하기 위해 Go 컨텍스트를 사용하는 것을 선호합니다. Azure SQL Database serverless에서 자동 일시정지가 활성화된 경우, 일시정지된 데이터베이스에 대한 첫 번째 연결이 오류 40613과 함께 실패하고 데이터베이스가 재개됩니다. 더 긴 타임아웃 대신 재시도 논리를 추가하세요. 데이터베이스는 일반적으로 1분 이내에 재개됩니다. 자세한 내용은 자동 일시정지와 자동 재개를 참조하세요.
dial timeout - 네트워크 다이얼 타임아웃은 몇 초 만에 완료됩니다. 드라이버 기본값은 등록된 프로토콜당 15초입니다. 설정은 0 같은 기본값을 적용해 무한히 기다리지 않습니다.
encrypt - 암호화 모드: strict, true/mandatory,false/optional , . disable 생략 시 기본값은 false/optional입니다. For Azure SQL and production connections, set encrypt=true explicitly.
TrustServerCertificate - 인증서 검증은 건너뛰세요. 가 지정될 때encrypt, 기본값은 입니다.false 를 생략하면 encrypt 기본값은 true입니다. 用於false生產環境及 Azure SQL 連線.
app name - 애플리케이션 이름이 서버에 전달됩니다.
authenticator - 맞춤 인증기. 패키지 내부에서 azuread 사용되었습니다.

연결 옵션 전체 목록은 연결 옵션을 참조하세요.

코드에서 연결 문자열을 구축하기

원시 문자열을 연결하는 대신 프로그래밍적으로 연결 문자열을 생성하기 위해 타입이나 url.URL 구조체를 msdsn.Config 사용하세요. 이 방법은 주입 및 인코딩 문제를 피할 수 있습니다.

URL 빌더

url.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 구조화된 설정에 사용 msdsn.Config 하세요, 특히 커스텀 다이얼러를 SessionInitSQL설정하거나 명시적인 TLS 설정을 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)

만약 플레이스홀더를 다시 쓰는 mssql 폐기 ? 된 드라이버 이름 동작에 여전히 의존한다면, 커넥터를 만들 때 대신 NewConnectorWithProcessQueryText 사용 NewConnectorConfig 하세요.