如何使此 SQL Server ODBC 连接工作?

如何使此 SQL Server ODBC 连接工作?

注意:我显然将服务器名称和 IP 更改为虚构的。

事情是这样的。我有一台服务器,我称之为MYSERVER,它运行的是 Microsoft SQL Server Express 2005。就在这个服务器上,我设置了一个指向它自己的 ODBC 连接,它已经运行正常了。我使用 SQL Server 身份验证(而不是 Windows 身份验证)登录,它的设置如下:

良好 ODBC 连接的图像

就像我说的,这个方法有效。但接下来,我有另一台计算机,它位于完全不同的域/不在内联网上,需要访问托管在 MYSERVER 上的同一 SQL Server。由于它位于不同的域中,因此它无法识别名称“MYSERVER”;我必须将其指向 MYSERVER 的 IP 地址,我们将其称为 123.456.789.012。但 ODBC 连接似乎在那里不起作用。我尝试像这样设置它:

不良 ODBC 连接的图像

这不起作用。当我输入用户名和密码并按下一步时,它会停滞 10 到 20 秒,然后最终返回以下错误:

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

如果我尝试同样的事情,但将“服务器”从 更改123.456.789.012\SQLEXPRESS为普通的旧服务器123.456.789.012,我会收到不同的错误:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

现在我知道你在想什么了。你可能会想,“呃,你可能没有打开 1433 端口的防火墙,笨蛋。”但我打开了,而且我尽可能地验证了这一点成功地跑步:

telnet 123.456.789.012 1433

...从命令行获取我想要的一切。所以我不确定该怎么做。我知道 SQL Server 存在、工作正常,并且有 ODBC 连接正确设置;我只是不确定我的连接设置中到底出了什么问题,导致出现这些错误。根据我列出的后一个错误,似乎它可以连接到服务器,但就是找不到实例(因为我当时没有指定实例)。那么这是否意味着我只需要使用一些不同的语法来指定 IP 和实例名称?我该怎么办?提前致谢。

答案1

SQL Server 2005 的命名管道和 TCIP 协议默认是禁用的。您是否在“SQL Server 配置管理器”下启用了它们?您可以在 SQL Server 网络配置和 SQL Native 客户端 xx 配置下找到这些协议。

服务器本身上的连接通过“共享内存”协议工作。

答案2

您是否已启用SQL Server 浏览器服务按照如何配置 SQL Server 2005 以允许远程连接?:

如果您使用实例名称运行 SQL Server 2005,并且未在连接字符串中使用特定的 TCP/IP 端口号,则必须启用 SQL Server Browser 服务以允许远程连接。例如,SQL Server 2005 Express 安装时默认实例名称为 Computer Name\SQLEXPRESS。

答案3

此主题修复了使用 Access 连接到 MSSQL 2008 服务器时出现的相同错误消息。MSSQL 2005 及更早版本只需在连接字符串中使用计算机名称即可正常工作,但当实例升级到 2008 时,我必须将 Access 中的连接字符串更改为完整格式:

servername\instancename,portnumber

答案4

如果服务器名称完全符合要求,它会识别它吗?如果它是 MYSERVER.domain.com?当从其他域连接时,我们必须对 SQL Server 执行此操作。如果您在测试数据源时可以让 ODBC 系统 DSN 进行连接,那么您就取得了进展。如果它在 ODBC 设置中无法连接,您必须先修复它。

相关内容