package msdsn

import "github.com/microsoft/go-mssqldb/msdsn"

Index

Constants

const (
	EncryptionOff      = 0
	EncryptionRequired = 1
	EncryptionDisabled = 3
)

Variables

var ProtocolDialers map[string]ProtocolDialer = map[string]ProtocolDialer{}
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

func TLSVersionFromString(minTLSVersion string) uint16

Types

type BrowserData

type BrowserData map[string]map[string]string

type BrowserMsg

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
}

func Parse

func Parse(dsn string) (Config, error)

func (Config) URL

func (p Config) URL() *url.URL

convert connectionParams to url style connection string used mostly for testing

type Encryption

type Encryption int

type Log

type Log uint64
const (
	LogErrors      Log = 1
	LogMessages    Log = 2
	LogRows        Log = 4
	LogSQL         Log = 8
	LogParams      Log = 16
	LogTransaction Log = 32
	LogDebug       Log = 64
	LogRetries     Log = 128
)

type ProtocolDialer

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

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

Source Files

conn_str.go conn_str_go112.go conn_str_go115.go conn_str_go118.go extensions.go

Version
v1.2.0
Published
May 30, 2023
Platform
js/wasm
Imports
13 packages
Last checked
28 minutes ago

Tools for package owners.