Cog*_*ave 3 windows sql-server go
我正在尝试使用 go 和此 sql 驱动程序“github.com/denisenkom/go-mssqldb”连接到 sql server express
目前,它调用 open,然后在 ping 命令上停止,它从不 ping 或返回错误。
我正在使用 winauth,它与 sql management studio 一起使用。
我已经验证了数据库名称,如果我输入了错误的名称,则会生成错误并在打开步骤中记录该错误。
我尝试过设置一个非常短的连接超时,但同样的事情发生了。
我尝试连接到远程 SQL 服务器并且它工作正常。远程服务器是 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")
}
Run Code Online (Sandbox Code Playgroud)
小智 5
不久前我也遇到了同样的问题,经过两天的研究,我能够解决这个问题。
令人困惑的方面似乎来自这样一个事实:go-mssqldb 需要传递一个名为“server”的参数,并且在 SQL Management Studio 中,它们在连接属性中对服务器有明确的引用:
然而,这不是 go-mssqldb 正在寻找的值。它正在寻找安装数据库的实际服务器。意思是,如果它安装在您的本地 PC 上,这将是“localhost”。如果它位于网络中的另一台计算机上,则这将是相应的 IP 地址或服务器名称
另一件需要记住的事情是 go-mssqldb 需要一个端口来连接到数据库,如果您不提供端口,它会假设端口是 1433。但是,我的不是这个值。为了查找您的端口号:
最后,我最终用来运行代码的命令是:
sqlserver-agent -debug=true -server=localhost -port=62587 -user=Username -password=Password -database=DatabaseName
Run Code Online (Sandbox Code Playgroud)