|
|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
|
"database/sql" |
|
|
|
|
"fmt" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
"net/url" |
|
|
|
|
"strconv" |
|
|
|
|
|
|
|
|
|
_ "github.com/denisenkom/go-mssqldb" |
|
|
|
@ -21,10 +22,7 @@ func init() { |
|
|
|
|
func newMssqlQueryEndpoint(datasource *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { |
|
|
|
|
logger := log.New("tsdb.mssql") |
|
|
|
|
|
|
|
|
|
cnnstr, err := generateConnectionString(datasource) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
cnnstr := generateConnectionString(datasource) |
|
|
|
|
if setting.Env == setting.DEV { |
|
|
|
|
logger.Debug("getEngine", "connection", cnnstr) |
|
|
|
|
} |
|
|
|
@ -43,21 +41,21 @@ func newMssqlQueryEndpoint(datasource *models.DataSource) (tsdb.TsdbQueryEndpoin |
|
|
|
|
return tsdb.NewSqlQueryEndpoint(&config, &rowTransformer, newMssqlMacroEngine(), logger) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func generateConnectionString(datasource *models.DataSource) (string, error) { |
|
|
|
|
func generateConnectionString(datasource *models.DataSource) string { |
|
|
|
|
server, port := util.SplitHostPortDefault(datasource.Url, "localhost", "1433") |
|
|
|
|
|
|
|
|
|
encrypt := datasource.JsonData.Get("encrypt").MustString("false") |
|
|
|
|
connStr := fmt.Sprintf("server=%s;port=%s;database=%s;user id=%s;password=%s;", |
|
|
|
|
server, |
|
|
|
|
port, |
|
|
|
|
datasource.Database, |
|
|
|
|
datasource.User, |
|
|
|
|
datasource.DecryptedPassword(), |
|
|
|
|
) |
|
|
|
|
if encrypt != "false" { |
|
|
|
|
connStr += fmt.Sprintf("encrypt=%s;", encrypt) |
|
|
|
|
|
|
|
|
|
query := url.Values{} |
|
|
|
|
query.Add("database", datasource.Database) |
|
|
|
|
query.Add("encrypt", encrypt) |
|
|
|
|
|
|
|
|
|
u := &url.URL{ |
|
|
|
|
Scheme: "sqlserver", |
|
|
|
|
User: url.UserPassword(datasource.User, datasource.DecryptedPassword()), |
|
|
|
|
Host: fmt.Sprintf("%s:%s", server, port), |
|
|
|
|
RawQuery: query.Encode(), |
|
|
|
|
} |
|
|
|
|
return connStr, nil |
|
|
|
|
return u.String() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type mssqlRowTransformer struct { |
|
|
|
|