我尝试从另一台计算机通过 WiFi 使用 SQL Server Management Studio 连接到 SQL Server,但失败了。
我有一台装有 Windows 7 和 SQL Server 2008 的计算机(我们称之为服务器计算机)。旁边还有一台新安装的装有 Windows 7 和 SQL Server Management Studio 的计算机(我们称之为客户端计算机)。
我在服务器计算机上做了什么:
- 配置防火墙,启用端口 1433
- 在 SQL Server 配置管理器中启用网络协议 (TCP/IP)
Allow remote connections to this server
在 SQL Server 管理应用程序中检查服务器属性。- 启动 SQL Server 浏览器
- 重启服务
(此时SQL Server Browser停止了,但是我认为没有必要。是吗?)
tcping
接下来,我使用名为(ex: )的工具成功地从我的客户端计算机对端口 1433 进行了 ping 测试tcping 192.168.1.4 1433
。但我仍然无法从我的客户端计算机连接到我的服务器计算机上的 SQL Server。
好的,这个问题有一些新特点:到目前为止,我已成功使用 Management Studio 连接到我的“服务器计算机”。我所做的是在 Management Studio 的连接窗口中的服务器名称字段中输入计算机名称。我之前(失败的)尝试是输入计算机名称,然后输入 SQL 服务器实例(例如:)COMPUTER_NAME\SQL2008
。我不知道为什么我只需要输入计算机名称。
现在,我的新挑战是成功将我的 VB6 应用程序连接到位于“服务器计算机”上的远程数据库。我有一个连接字符串,但连接失败。
这是我的连接字符串:
"Provider=SQLOLEDB.1;Password=mypassword;User ID=sa;Initial Catalog=TPB;Data Source=THIERRY-HP\SQL2008"
知道发生什么问题了吗?
答案1
首先,寻址特定 SQL 服务器实例的方式是:SERVERNAME\INSTANCENAME
因此,第一步是查看您是否可以解析 SERVERNAME(使用 ping 或将其更改为 IP 地址)。
第二步是查看特定实例是否存在。通常,MSSQL 服务器的第一个实例使用默认实例名称(. 或 MSSQLSERVER)。如果是这种情况,您可以在连接字符串中省略实例名称,仅保留服务器名称。
要检查您的实例名称,请打开服务器上的服务管理器并找到“SQL Server (xxx)”服务。“xxx”将是实例名称。
完成上述操作并确保使用正确的 SQL 地址后,您应该验证连接。检查两台机器是否位于同一子网中。如果不是,请确保防火墙未设置为仅允许本地子网连接(在“家庭”网络配置文件中很常见)。
然后,如果两台机器都在同一个 WIFI 网络上,请确保您的 AP 没有设置为客户端隔离。如果是这种情况,您将无法在连接到同一 AP 的两个 WIFI 设备之间进行通信。
最后,确保您有一个可用的登录名。最简单的方法是在 SQL 服务器上创建一个显式登录名,授予其对数据库和服务器的所有必要权限,并通过在命令字符串中传递凭据在本地测试它。如果它有效,请从远程计算机尝试它
答案2
SQL TCP 是否在侦听 WLAN 可以访问的 IP?您可以在 SQL 表面区域配置中对其进行配置,http://msdn.microsoft.com/en-us/library/ms161956.aspx。
答案3
只需将计算机名称放入连接字符串中。如果实例侦听端口 1433,则不需要实例名称,因为这是客户端将尝试自动连接的端口。此外,如果浏览器服务停止,您将永远无法连接到包含实例名称的实例,因为驱动程序无法连接到浏览器以获取实例的端口号。通过连接到驱动程序认为是默认实例(端口 1433 上的 SQL 实例),您可以绕过连接到浏览器服务的需要。
答案4
a) 从工作站检查您是否可以通过您使用的名称 ping 服务器。(如果不行,请暂时使用 IP 地址,直到解决名称解析问题)
b) 检查 SQL Server 上的 ERRORLOG 以查看其正在监听的 IP 端口。(搜索“listening”)
c) 然后从客户端站使用 telnet:
telnet <server name> <port number>
并确保 telnet 可以连接。如果无法连接,请追踪防火墙、wifi 集线器等,直到 telnet 正常工作。(我们刚刚有一个 wifi 设备,商业级,将每个工作站彼此隔离!)
d) 现在网络问题已解决,连接字符串的“服务器”元素将显示为:
<server name or IP>,<port>
哒哒!