Go语言连接SQL Server报错:目标机器主动拒绝TCP连接
SQL Server连接报错:目标机器主动拒绝连接
错误信息
unable to open tcp connection with host 'localhost:1433': dial tcp [::1]:1433: connectex: No connection could be made because the target machine actively refused it.
exit status 1
代码示例
package main import ( "database/sql" "fmt" "log" _ "github.com/denisenkom/go-mssqldb" ) var kiosk string var server = ".\\MSSQLSERVER01" var port = 1433 var user = "DESKTOP-37624KK" var password = "**********" var database = "Kiosk" func main() { connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s", server, user, password, port, database) db, err := sql.Open("mssql", connString) if err != nil { fmt.Println("Error in connect DB") log.Fatal(err) } rows, err := db.Query("SELECT * FROM Kiosk") if err != nil { log.Fatal(err) } for rows.Next() { if err := rows.Scan(&kiosk); err != nil { log.Fatal(err) } fmt.Println(kiosk) } defer rows.Close() }
已尝试操作
- 检查防火墙是否阻塞所需端口
- 尝试更换端口进行连接
- 搜索网络上的其他解决方案
排查及解决步骤
确认SQL Server实例服务状态
按下Win+R输入services.msc打开服务管理器,找到SQL Server (MSSQLSERVER01),确保服务处于“正在运行”状态。若未启动,右键启动并设置启动类型为“自动”。启用并配置TCP/IP协议
打开SQL Server配置管理器,展开「SQL Server网络配置」→「MSSQLSERVER01的协议」,确保TCP/IP为“已启用”。
双击TCP/IP进入设置,切换到「IP地址」标签,拉至底部「IPAll」项,确认「TCP端口」与代码中port值一致(默认1433),修改后重启SQL Server服务。修正连接字符串
- 若使用Windows身份验证,无需指定用户名密码,将连接字符串改为:
connString := fmt.Sprintf("server=%s;database=%s;trusted_connection=true", server, database) - 命名实例的连接写法可调整为
localhost\MSSQLSERVER01,避免转义符问题,同时确保端口与SQL Server监听端口匹配。
- 若使用Windows身份验证,无需指定用户名密码,将连接字符串改为:
验证数据库与表权限
确认Kiosk数据库中存在Kiosk表,且当前使用的账户具备该表的查询权限。测试端口连通性
用PowerShell执行Test-NetConnection localhost -Port 1433,或用telnet localhost 1433测试端口是否开放。若不通,回到步骤2重新配置TCP/IP端口。
内容的提问来源于stack exchange,提问作者Hojamuhammet
相关产品推荐
相关产品推荐

