通过C#和SqlClient连接SQL本地服务器(非数据库连接)问题
解决连接localhost\SQLEXPRESS服务器的问题
你遇到的System.Data.SqlClient.SqlException(TCP Provider错误25)是SQL Server实例连接的常见配置问题,我来一步步帮你排查和解决:
1. 先确认SQL Server Express服务正在运行
- 按下
Win + R,输入services.msc打开服务管理器 - 在列表里找到SQL Server (SQLEXPRESS),检查它的状态是否为「正在运行」
- 如果没运行,右键点击选择「启动」;要是启动失败,去服务属性里看日志找原因
2. 验证实例名称是否正确
有时候安装时实例名可能不是默认的SQLEXPRESS,或者你装的是默认实例(无命名实例):
- 打开SQL Server Configuration Manager(开始菜单搜索就能找到)
- 展开「SQL Server服务」,看服务名称:
- 要是服务名是
SQL Server (SQLEXPRESS),那实例名就是SQLEXPRESS,连接字符串里用localhost\SQLEXPRESS没问题 - 要是服务名是
SQL Server (MSSQLSERVER),这是默认实例,连接字符串只需要写localhost或者.(代表本地)就行,不用加实例名
- 要是服务名是
3. 启用TCP/IP协议
错误提示里的TCP Provider, error: 25大多和TCP/IP协议未启用有关:
- 在SQL Server Configuration Manager里,展开「SQL Server网络配置」→「Protocols for SQLEXPRESS」
- 右键点击「TCP/IP」,选择「启用」
- 右键「TCP/IP」→「属性」,切换到「IP地址」标签:
- 拉到最下面的「IPAll」,确认「TCP端口」是
1433(默认端口);如果是动态端口,记得启动SQL Server Browser服务(在服务管理器里找)
- 拉到最下面的「IPAll」,确认「TCP端口」是
4. 使用正确的连接字符串
确认完配置后,用以下正确的连接字符串之一:
- 命名实例(SQLEXPRESS)场景:
或者用var conn = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated Security=SSPI;Database=master;");.代替localhost更简洁:var conn = new SqlConnection("Server=.\\SQLEXPRESS;Integrated Security=SSPI;Database=master;"); - 默认实例场景:
var conn = new SqlConnection("Server=.;Integrated Security=SSPI;Database=master;");
5. 用SSMS先验证连接
先脱离代码,用SQL Server Management Studio(SSMS)测试:
- 打开SSMS,服务器名称输入
localhost\SQLEXPRESS(或对应实例名),身份验证选「Windows身份验证」 - 如果能连上,说明服务器配置没问题,回到代码里检查拼写(比如双反斜杠是否正确,你之前的写法是对的,但再确认下)
- 如果SSMS也连不上,那肯定是服务器配置的问题,回到前面的步骤逐一排查
另外,Windows防火墙可能会阻止连接,可以临时关闭防火墙测试,要是能连上,记得在防火墙里添加SQL Server的端口例外(默认1433),或者允许SQL Server程序通过防火墙。
内容的提问来源于stack exchange,提问作者positive perspective
相关产品推荐
相关产品推荐

