我正在尝试使用go和这个sql驱动程序连接到sql server express“github.com/denisenkom/go-mssqldb”
目前它在ping命令上调用open然后停顿,它从不ping或返回错误。
我正在使用winauth,它适用于sql management studio。
我已经验证了数据库名称,如果我输入了一个虚假名称,则会生成错误并在打开步骤中记录。
我尝试设置一个非常短的连接时间,但同样的事情发生了。
我已尝试连接到远程sql server并且它可以正常工作。 远程服务器是sql server的开发者版本,其名称类似于xyz.abc.123,其本地sql express称为machine-name \ sqlexpress。
这是一个示例程序。
package main
import (
"database/sql"
_ "github.com/denisenkom/go-mssqldb"
"log"
)
func main() {
log.Println("Main:")
log.Println("Opening")
db, err := sql.Open("mssql", "server=Machine-Name\\SQLEXPRESS; database=MyDatabaseName;")
if err != nil {
log.Println("Open Failed: ", err.Error())
}
log.Println("Opened")
log.Println("Pinging")
err = db.Ping();
if err != nil {
log.Println("Failed to ping: ", err.Error())
}
log.Println("Pinged")
}
答案 0 :(得分:3)
我不久前遇到过同样的问题,经过两天的研究,我得以解决这个问题。
令人困惑的方面似乎是因为go-mssqldb需要一个名为“server”的参数传递,而在SQL Management Studio中,它们在连接属性中有一个对服务器的明确引用:
但是,这不是go-mssqldb正在寻找的价值。它正在寻找安装数据库的实际服务器。这意味着,如果它安装在您的本地PC中,那么它将是“localhost”。如果它在您网络中的另一台计算机上,那么这将是相应的IP地址或服务器名称
要记住的另一件事是go-mssqldb需要一个端口来连接数据库,如果你不提供一个端口,它假定端口是1433.但是,我的不是那个值。为了查找您的端口号:
SQL Server Configuration Manager
最后,我最终用来运行我的代码的命令最终成为:
sqlserver-agent -debug=true -server=localhost -port=62587 -user=Username -password=Password -database=DatabaseName
答案 1 :(得分:0)
这个https://code.google.com/p/odbc/驱动程序可以帮我使用MS SQL Server。
亚历