Go连接SQL Server 2014 Express失败:连接被主动拒绝如何解决?
解决SQL Server连接被拒绝的问题
环境
- Windows 10 x64
- Go 1.20.1
- Microsoft SQL Server 2014 Express
代码文件:vy_sql_server.go
package vy_gen_sql_server // dsn := "sqlserver://sa:12345678@localhost:1433?database=gorm" import ( "gorm.io/driver/sqlserver" "gorm.io/gen" "gorm.io/gorm" ) // Dynamic SQL type Querier interface { // SELECT * FROM @@table WHERE name = @name{{if role !=""}} AND role = @role{{end}} FilterWithNameAndRole(name, role string) ([]gen.T, error) } func Main() { g := gen.NewGenerator(gen.Config{ OutPath: "../query", Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode }) gormdb, _ := gorm.Open(sqlserver.Open("sqlserver://sa:12345678@localhost:1433?database=MISASME2023Sample")) g.UseDB(gormdb) // reuse your gorm db // Generate basic type-safe DAO API for struct `model.User` following conventions //g.ApplyBasic(model.User{}) // Generate Type Safe API with Dynamic SQL defined on Querier interface for `model.User` and `model.Company` //g.ApplyInterface(func(Querier) {}, model.User{}, model.Company{}) // Generate the code g.Execute() }
错误信息
2023/03/01 15:24:11 C:/Users/Admin/GolandProjects/vy_learn_gorm_2023_03_01/vy_gen_sql_server/vy_sql_server.go:22 [error] failed to initialize database, got error 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. 2023/03/01 15:24:11 Start generating code. 2023/03/01 15:24:11 Generate code done. Process finished with the exit code 0
解决步骤
1. 确认SQL Server服务状态
- 按下
Win + R,输入services.msc打开服务管理器 - 找到**SQL Server (SQLEXPRESS)**服务,确认状态为
正在运行。未启动则右键选择启动
2. 启用并配置TCP/IP协议
- 打开SQL Server配置管理器(开始菜单搜索即可)
- 展开SQL Server网络配置 > SQLEXPRESS的协议
- 右键点击TCP/IP选择
启用 - 双击TCP/IP,切换到
IP地址标签,拉到IPAll区域,确认TCP端口为1433 - 重启SQL Server服务使配置生效
3. 核对连接参数
- 确认DSN中的
sa账户已启用、密码正确 - 检查数据库名称
MISASME2023Sample确实存在于SQL Server中 - 若本地有多个SQL实例,连接地址需指定实例名,DSN格式改为:
sqlserver://sa:12345678@localhost\SQLEXPRESS?database=MISASME2023Sample
4. 检查防火墙设置
- 临时关闭Windows防火墙测试连接,若能成功,再添加允许SQL Server程序或1433端口的入站规则
5. 捕获详细错误信息
- 修改代码,不要忽略
gorm.Open的错误,方便排查:gormdb, err := gorm.Open(sqlserver.Open("your_dsn_here"), &gorm.Config{}) if err != nil { panic(err) }
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

