初步尝试
我有一个带有 Windows Server 2012 的 Azure VM,我刚刚在其上安装了 SQL Server 2012 Express 数据库引擎组件。然后,我按照此处的说明远程连接 SQL Server Management Studio。
- 为虚拟机创建 TCP 端点
- 在 Windows 防火墙中打开 TCP 端口
- 配置 SQL Server 以侦听 TCP 协议
- 为混合模式身份验证配置 SQL Server
- 创建 SQL Server 身份验证登录
- 确定虚拟机的 DNS 名称
- 从另一台计算机连接到数据库引擎
在第七步之后,我收到以下错误:
与 SQL Server 建立连接时发生网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)(Microsoft SQL Server,错误:53)
在远程连接之前我还需要配置什么?
故障排除
我一直在按照此处的故障排除说明进行操作。下面的每个块引用都是描述该链接的一个步骤。
确认 SQL Server 数据库引擎的实例已安装并正在运行。
完毕。我们安装了 SQL Server Express,它作为一个名为 SQLEXPRESS 的命名实例运行。
如果您尝试连接到命名实例,请确保 SQL Server Browser 服务正在运行。
完毕。我们按照此处的步骤打开 SQL Server Browser 服务。
获取计算机的 IP 地址。
完毕。稍后我们将使用这些来测试连接性,并可能为 SQLEXPRESS 设置静态端口。
10.241.62.155
fe80::45c:8c29:e19f:f78b%15
获取 SQL Server 使用的 TCP 端口号。
完毕。SQL Server Management Studio服务器日志显示服务器正在侦听端口 49169。
启用协议
完毕。我们已经在配置管理器中启用了 TCP/IP,但我们重新启动了 SQL Server 服务以防万一。
测试 TCP/IP 连接
完毕。我们使用tcping.exe测试连接性(cmd ping 在 Azure 中无法快速运行。)我们能够连接到端口 80。
- tcping.exe buddha.cloudapp.net > 成功
- tcping.exe buddha.cloudapp.net 80 > 成功
测试本地连接
完毕。我们在命令提示符下使用了sqlcmd.exe,并且能够通过 TCP 使用用户名和密码进行本地连接。
- sqlcmd -S Buddha\SQLEXPRESS(通过共享内存协议成功)
- sqlcmd -S tcp:Buddha\SQLEXPRESS(通过 TCP 成功)
- sqlcmd -S tcp:Buddha\SQLEXPRESS -U sa -P(使用用户名通过 TCP 成功)
- sqlcmd -S tcp:10.241.62.155\SQLEXPRESS -U sa -P(内部IP成功)
在防火墙中打开端口
我们打开了 SQLEXPRESS 侦听的端口。服务器日志(上图)显示 SQLEXPRESS 正在侦听端口 49169,但这只是众多动态端口之一,我们想设置静态端口 1435。
- 使用 WF.msc 为端口 1435 创建入站 TCP 规则。
- 使用 Azure 管理门户为端口 1435 创建 TCP 终结点。
故障排除说明还说:
如果要连接到命名实例或 TCP 端口 1433 以外的端口,则还必须为 SQL Server Browser 服务打开UDP 端口 1434。
由于我们正在连接 SQLEXPRESS(命名实例),因此我们需要为 UDP 打开端口 1434。
- 使用 WF.msc 为端口 1434 创建入站UCP规则。
- 使用 Azure 管理门户为端口 1434创建UDP终结点
关于连接到命名实例的进一步研究揭示了动态端口问题。我们使用端口 1435(静态)而不是端口 49169(许多有效选项之一)的原因。
SQL Server Express、SQL Server Compact 的实例和数据库引擎的命名实例使用动态端口。若要将这些实例配置为使用特定端口,请参阅配置服务器以侦听特定 TCP 端口(SQL Server 配置管理器)。在这里 。
完毕。我们转到 SQL 配置管理器 > SQL Server 网络配置 > SQLEXPRESS 的协议 > TCP/IP,我们执行了以下操作。
协议选项卡 > 全部听 > 否。
IP 地址选项卡 > 对于每个列出的地址
- 启用 > 是
- TCP 动态端口 > 空白(删除零)
- TCP 端口 > 1435(或您的选择)
重启SQLEXPRESS服务后,我们再次查看SQL Server Management Studio日志,发现Server is Listening on port 1435!!!万岁!
测试连接
完毕。我们在本地(非 Azure)计算机上打开了 SQL Server Management Studio 并进行了连接。
- buddha.cloudapp.net,1435 或 buddha.cloudapp.net\SQLEXPRESS
- 萨
- 密码
成功。