Documentation
¶
Index ¶
- Constants
- Variables
- func SetupTLS(certificate string, insecureSkipVerify bool, hostInCertificate string, ...) (*tls.Config, error)
- func TLSVersionFromString(minTLSVersion string) uint16
- type BrowserData
- type BrowserMsg
- type Config
- type EncodeParameters
- type Encryption
- type Log
- type ProtocolDialer
- type ProtocolParser
Constants ¶
View Source
const ( DsnTypeURL = 1 DsnTypeOdbc = 2 DsnTypeAdo = 3 )
View Source
const ( EncryptionOff = 0 EncryptionRequired = 1 EncryptionDisabled = 3 EncryptionStrict = 4 )
View Source
const ( Database = "database" Encrypt = "encrypt" Password = "password" ChangePassword = "change password" UserID = "user id" Port = "port" TrustServerCertificate = "trustservercertificate" Certificate = "certificate" TLSMin = "tlsmin" PacketSize = "packet size" LogParam = "log" ConnectionTimeout = "connection timeout" HostNameInCertificate = "hostnameincertificate" KeepAlive = "keepalive" ServerSpn = "serverspn" WorkstationID = "workstation id" AppName = "app name" ApplicationIntent = "applicationintent" FailoverPartner = "failoverpartner" FailOverPort = "failoverport" DisableRetry = "disableretry" Server = "server" Protocol = "protocol" DialTimeout = "dial timeout" Pipe = "pipe" MultiSubnetFailover = "multisubnetfailover" NoTraceID = "notraceid" GuidConversion = "guid conversion" Timezone = "timezone" )
Variables ¶
View Source
var ProtocolDialers map[string]ProtocolDialer = map[string]ProtocolDialer{}
View Source
var ProtocolParsers []ProtocolParser = []ProtocolParser{
tcpParser{Prefix: "tcp"},
tcpParser{Prefix: "admin"},
}
ProtocolParsers is an ordered list of protocols that can be dialed. Each parser must have a corresponding Dialer in mssql.ProtocolDialers
Functions ¶
func SetupTLS ¶
func SetupTLS(certificate string, insecureSkipVerify bool, hostInCertificate string, minTLSVersion string) (*tls.Config, error)
Build a tls.Config object from the supplied certificate.
func TLSVersionFromString ¶ added in v0.16.0
Types ¶
type BrowserData ¶ added in v0.18.0
type BrowserMsg ¶ added in v1.0.0
type BrowserMsg byte
const ( BrowserDefault BrowserMsg = 0 BrowserAllInstances BrowserMsg = 0x03 BrowserDAC BrowserMsg = 0x0f )
type Config ¶
type Config struct {
Port uint64
Host string
Instance string
Database string
User string
Password string
Encryption Encryption
TLSConfig *tls.Config
FailOverPartner string
FailOverPort uint64
// If true the TLSConfig servername should use the routed server.
HostInCertificateProvided bool
// Read Only intent for application database.
// NOTE: This does not make queries to most databases read-only.
ReadOnlyIntent bool
LogFlags Log
ServerSPN string
Workstation string
AppName string
// If true disables database/sql's automatic retry of queries
// that start on bad connections.
DisableRetry bool
DialTimeout time.Duration // DialTimeout defaults to 15s per protocol. Set negative to disable.
ConnTimeout time.Duration // Use context for timeouts.
KeepAlive time.Duration // Leave at default.
PacketSize uint16
Parameters map[string]string
// Protocols is an ordered list of protocols to dial
Protocols []string
// ProtocolParameters are written by non-tcp ProtocolParser implementations
ProtocolParameters map[string]interface{}
// BrowserMsg is the message identifier to fetch instance data from SQL browser
BrowserMessage BrowserMsg
// ChangePassword is used to set the login's password during login. Ignored for non-SQL authentication.
ChangePassword string
//ColumnEncryption is true if the application needs to decrypt or encrypt Always Encrypted values
ColumnEncryption bool
// Attempt to connect to all IPs in parallel when MultiSubnetFailover is true
MultiSubnetFailover bool
// guid to set as Activity Id in the prelogin packet. Defaults to a new value for each Config.
ActivityID []byte
// When true, no connection id or trace id value is sent in the prelogin packet.
// Some cloud servers may block connections that lack such values.
NoTraceID bool
// Parameters related to type encoding
Encoding EncodeParameters
}
type EncodeParameters ¶ added in v1.8.1
type EncodeParameters struct {
// Properly convert GUIDs, using correct byte endianness
GuidConversion bool
// Timezone is the timezone to use for encoding and decoding datetime values.
Timezone *time.Location
}
func (EncodeParameters) GetTimezone ¶ added in v1.9.0
func (e EncodeParameters) GetTimezone() *time.Location
type Encryption ¶
type Encryption int
type ProtocolDialer ¶ added in v0.18.0
type ProtocolDialer interface {
// Translates data from SQL Browser to parameters in the config
ParseBrowserData(data BrowserData, p *Config) error
// DialConnection eturns a Dialer to make the connection. On success, also set Config.ServerSPN if it is unset.
DialConnection(ctx context.Context, p *Config) (conn net.Conn, err error)
// Returns true if information is needed from the SQL Browser service to make a connection
CallBrowser(p *Config) bool
}
ProtocolDialer makes the network connection for a protocol
type ProtocolParser ¶ added in v0.18.0
type ProtocolParser interface {
// ParseServer updates the Config with protocol properties from the server. Returns an error if the server isn't compatible.
ParseServer(server string, p *Config) error
// Protocol returns the name of the protocol dialer
Protocol() string
// Hidden returns true if this protocol must be explicitly chosen by the application
Hidden() bool
}
ProtocolParser can populate Config with parameters to dial using its protocol
Click to show internal directories.
Click to hide internal directories.