从客户端检查到 SQL Server 的连接的简单方法

Mic*_*Sim 21 sql-server scripting

出于故障排除目的,我希望能够检查客户端是否可以连接到 SQL Server 实例,而与可能无法连接到 SQL Server 的应用程序无关。

有没有一种简单的方法(也就是说,不必安装第 3 方软件)使用默认的 Windows 系统工具来做到这一点?也许使用脚本或网络应用程序?

小智 30

SQL 连通性的一个简单测试方法是创建一个空文本文件,文件扩展名为“UDL”。您可以在记事本中创建它。它可以有任何名称。我使用“TestSQL.UDL”

将其保存在 Windows PC 的桌面上并双击它。

将弹出“数据链接属性”对话框,您可以在其中输入 SQL 服务器的 IP 地址以及 SQL 用户名和密码。

单击“测试连接”按钮以查看是否可以连接。

在此处输入图片说明


db2*_*db2 17

如果服务器正在使用 TCP/IP,那么简单的方法就是 telnet 到 SQL Server 端口并查看它是否连接。默认情况下,这是端口 1433,所以这应该可以工作:

telnet servername 1433
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这可能是合适的。

如果它使用不同的端口或动态端口(与命名实例常见),那么您需要确定它当前正在侦听哪个端口。检查 SQL Server 配置管理器以查看它是特定端口还是动态端口。如果它使用动态端口,那么只要服务器上没有多个实例,这netstat -abn可能是查找它正在使用的内容的最简单方法。否则,请在 Windows 事件日志或 SQL Server 错误日志中查找指示实例正在使用哪个端口的消息。

如果 SQL Server 使用命名管道,那么我相信如果您能够访问机器上的共享,则您有足够的网络连接。这篇文章说你可以进一步尝试连接到 IPC$ 共享:

http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx

net use \\servername\IPC$
Run Code Online (Sandbox Code Playgroud)

这是为 SQL Server 2000 编写的,但我认为这方面没有太大变化,如果有的话。

  • ...这是查看客户端系统是否“可以连接到 SQL Server 实例,独立于可能无法连接到 SQL Server 的应用程序”。网络连接之外的任何事情都在处理应用程序问题。 (4认同)
  • 这不是看客户端是否可以“连接到 SQL Server 实例”。这只是测试端口是否正在侦听。 (2认同)

Tho*_*ger 9

如果您Microsoft.SqlServer.Smo在本地计算机上的 GAC 中有程序集,则可以使用 PowerShell 轻松完成此操作:

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null

$server = New-Object Microsoft.SqlServer.Management.Smo.Server("YourSqlServerName")

# do a simple operation to see if you can get data
Try {
    $server.Version | Out-Null
    Write-Host "SQL Server connection successful!!!"
}
Catch [System.Exception] {
    Write-Host "Error connecting to SQL Server..."
}
Run Code Online (Sandbox Code Playgroud)