SQL Server 可以从本地系统连接,但不能从网络中的远程系统连接。当我尝试从 Management Studio 连接到 SQL Server 时,Visual Studio 的错误代码为 40,而 Management Studio 的错误代码为 1326。
- 防火墙不是问题
- 从 SQL Server 启用 TCP/IP 连接
- 有 2 个 PC 终端可以连接到 SQL Server,但第 3 个不能,并且使用相同的连接字符串,因此连接字符串是正确的
这是 SQL Server 2000
任何帮助都将不胜感激
答案1
尝试从 ODBC 连接(控制面板、管理员、odbc、新用户连接)。尝试创建一个连接并在向导结束时对其进行测试。如果它有效,那么问题就与您的 OLEDB 连接字符串等有关。
否则,可能是
- DNS 问题(执行 ping 操作时,确保返回正确的 IP 地址)
- 服务器权限问题(查看是否可以将驱动器映射到 SQL Server,然后再次尝试连接)
- SQL 权限问题(检查 SQL 安全面板,确保用户对其默认数据库具有 db_reader 权限(最低))
- 错误的 SQL 别名(在 ODBC 向导中的连接信息下,确保服务器名称仅列出一次。如果它出现多次,您可以安装 SQL 客户端配置工具并删除所有额外的 SQL Server 别名,这可能会将 [服务器名称] 默认重定向到不同的计算机或无效协议)。
答案2
尝试从第三个终端 ping 服务器,查看它们之间是否已建立连接
答案3
错误 40 有很多原因。请看点击此处了解更多信息。
答案4
错误 40 和 1326 都表明存在命名管道错误,而不是 TCP 错误。由于您提到您的服务器已启用 TCP,但未提及命名管道,因此我建议您将命名管道排除在外。如果您未明确禁用命名管道,客户端将始终首先尝试此协议,并遇到各种错误,因为命名管道需要文件共享层的 SMB 连接和域身份验证前甚至到达 SQL Server。您有两种途径:
- 在客户端上完全禁用命名管道。请参见配置客户端网络协议。
- 在连接字符串中强制使用 tcp,使用
tcp:servername
连接字符串中服务器名称部分的语法,请参阅如何在连接字符串中使用服务器名称参数指定客户端网络库。