gpt4 book ai didi

sql-server - 无法使用 Go 连接到 MS SQL Server

转载 作者:IT王子 更新时间:2023-10-29 01:59:30 25 4
gpt4 key购买 nike

我正在尝试使用 go 和这个 sql 驱动程序“github.com/denisenkom/go-mssqldb”连接到 sql server express

目前它调用 open 然后在 ping 命令上停止,它从不 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")
}

最佳答案

不久前我遇到了同样的问题,经过两天的研究我能够解决这个问题。

令人困惑的方面似乎是因为 go-mssqldb 需要传递一个名为“server”的参数,而在 SQL Management Studio 中,它们在连接属性中明确引用了服务器:

Connection Properties

但是,这不是 go-mssqldb 正在寻找的值。它正在寻找安装数据库的实际服务器。意思是,如果它安装在您的本地 PC 中,这将是“本地主机”。如果它在您网络中的另一台机器上,那么这将是相应的 IP 地址或服务器名称

另一件要记住的事情是 go-mssqldb 需要一个端口来连接到数据库,如果你不提供,它会假定端口是 1433。但是,我的不是那个值。为了查找您的端口号:

  1. 打开 SQL Server 配置管理器。
  2. 展开左侧树上的“SQL Server 网络配置”。
  3. 单击“SQLEXPRESS 协议(protocol)(或您的数据库的任何名称)”
  4. 在主菜单中,确保“TCP/IP”已启用。如果没有,请右键单击它并选择“启用”。
  5. 再次右键单击“TCP/IP”并选择属性。
  6. 选择“IP 地址”选项卡并一直向下滚动。
  7. 查看“IPAll”部分,“TCP 动态端口”字段中显示的数字是正确的端口号。

SQL Server Configuration Manager

最后,我最终用来运行代码的命令是:

sqlserver-agent -debug=true -server=localhost -port=62587 -user=Username -password=Password -database=DatabaseName

关于sql-server - 无法使用 Go 连接到 MS SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com