使用SQL Server Management Studio远程连接到Azure虚拟机上托pipe的SQL Server Express实例

初始尝试

我有一个Windows Server 2012的Azure虚拟机,我刚安装了SQL Server 2012 Express数据库引擎组件。 然后,我按照这里的说明与SQL Server Management Studio进行远程连接。

  1. 为虚拟机创build一个TCP端点
  2. 在Windows防火墙中打开TCP端口
  3. configurationSQL Server侦听TCP协议
  4. configurationSQL Server以进行混合模式身份validation
  5. 创buildSQL Server身份validationlogin
  6. 确定虚拟机的DNS名称
  7. 从另一台计算机连接到数据库引擎

第七步后,我收到以下错误:

与SQL Serverbuild立连接时发生networking相关或实例特定的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:命名pipe道提供程序,错误:40 – 无法打开连接到SQL Server)(Microsoft SQL Server,错误:53)

在远程连接之前还需要configuration什么?

故障排除

我一直在这里按照故障排除说明。 下面的每个blockquote是一个描述该链接的步骤。

确认SQL Server数据库引擎的实例已安装并正在运行。

完成。 我们安装了SQL Server Express,并且它作为名为SQLEXPRESS的命名实例运行。

如果您试图连接到一个命名实例,请确保SQL Server Browser服务正在运行。

完成。 我们按照这里的步骤打开SQL Server Browser服务。

获取计算机的IP地址。

完成。 我们稍后将使用这些来testing连通性,也许会为SQLEXPRESS设置一个静态端口。

10.241.62.155

FE80 :: 45:8c29:e19f:f78b 15%

获取SQL Server使用的TCP端口号。

完成。 SQL Server Management Studio服务器日志显示服务器正在侦听端口49169。

启用协议

完成。 我们已经在configurationpipe理器中启用了TCP / IP,但为了以防万一,我们重新启动了SQL Server服务。

testingTCP / IP连接

完成。 我们使用tcping.exe来testing连接性(cmd ping与Azure不能很快地工作)。我们能够连接到端口80。

  • tcping.exe buddha.cloudapp.net>成功
  • tcping.exe buddha.cloudapp.net 80>成功

testing本地连接

完成。 我们在命令提示符下使用了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,但这只是众多dynamic端口之一,我们想要设置静态端口1435。

  • 使用WF.msc为端口1435创build一个入站TCP规则。
  • 使用Azurepipe理门户为端口1435创buildTCP端点。

故障排除说明还说:

如果要连接到TCP端口1433以外的命名实例或端口,则还必须打开SQL Server Browser服务的UDP端口1434

由于我们正在连接SQLEXPRESS(一个命名实例),因此我们需要为UDP打开端口1434。

  • 使用WF.msc为端口1434创build一个入站UCP规则。
  • 使用Azurepipe理门户为端口1434创buildUDP端点

关于连接命名实例的进一步研究揭示了dynamic端口问题。 我们使用端口1435(静态)而不是端口49169(许多有效选项之一)的原因。

SQL Server Express实例,SQL Server Compact实例和数据库引擎的命名实例使用dynamic端口。 要configuration这些实例以使用特定的端口,请参阅configuration服务器以在特定的TCP端口上进行侦听(SQL Serverconfigurationpipe理器)。 在这里 。

完成。 我们进入SQLconfigurationpipe理器> SQL Servernetworkingconfiguration> SQLEXPRESS> TCP / IP协议,我们做了以下工作。

协议选项卡>全部收听> NO。

IP地址选项卡>为每个列出的地址

  • 启用>是
  • TCPdynamic端口>空白(删除零)
  • TCP端口> 1435(或您的select)

重新启动SQLEXPRESS服务后,我们再次查看SQL Server Management Studio日志,发现服务器正在侦听端口1435! 万岁!

testing连接

完成。 我们在本地(非Azure)计算机上打开SQL Server Management Studio并连接。

  • buddha.cloudapp.net,1435或buddha.cloudapp.net \ SQLEXPRESS
  • SA
  • 密码

成功。

以下是我们find答案的三个网页。 最困难的部分是为SQLEXPRESS设置静态端口。

在Windows Azure上configurationSQL Server虚拟机 。 这些初步指示提供了25%的答案。

如何解决连接到SQL Server数据库引擎 。 仔细阅读这个答案提供了另外50%的答案。

如何configurationSQL服务器以监听不同IP地址上的不同端口? 。 这可以为命名实例(例如SQLEXPRESS)设置静态端口。最终我们花了25%的答案。

从Names Pipes Provider得到错误的事实告诉我们,当您尝试build立连接时,您没有使用TCP / IP协议。 尝试添加“tcp”前缀并指定端口号:

tcp:name.cloudapp.net,1433 

我也在类似的事情上挣扎。 我的猜测是你的实际问题是连接到另一台机器上运行的SQL Express实例。 这样做的步骤可以总结如下:

  1. 确保SQL Expressconfiguration了SQL身份validation以及Windows身份validation(默认)。 您可以通过SQL Server Management Studio(SSMS)服务器属性/安全性来执行此操作
  2. 在SSMS中,创build一个名为“sqlUser”的新login名,例如用合适的密码“sql”表示。 确保为SQL身份validation设置了新的login名,而不是Windows身份validation。 SSMS服务器安全/login/属性/常规。 另外确保“强制密码策略”未被选中
  3. 在“属性/服务器angular色”下,确保此新用户具有“系统pipe理员”angular色
  4. 在SQL Serverconfigurationpipe理器SSCM(在Windows \ SysWOW64中searchSQLServerManagerxx.msc文件,如果找不到SSCM),请在SQL Servernetworkingconfiguration/协议SQLExpress下确保TCP / IP已启用。 如果需要,可以禁用命名pipe道
  5. 右键单击协议TCP / IP,然后在IPAddresses选项卡上,确保每个IP地址都设置为Enabled,并且TCP端口1433(这是SQL Server的默认端口)
  6. 在Windows防火墙(WF.msc)中创build两个新的入站规则 – 一个用于SQL Server,另一个用于SQL浏览器服务。 对于SQL Server,您需要打开TCP端口1433(如果您使用的是SQL Server的默认端口) ,对于SQL浏览器服务非常重要,则需要打开UDP端口1434 。 在防火墙中适当地命名这两个规则
  7. 停止并使用SSCM或Services.mscpipe理单元重新启动SQL Server服务
  8. 在Services.mscpipe理单元中确保SQL浏览器服务启动types为自动,然后启动此服务

此时,您应该可以使用SQL身份validation,用户“sqlUser”密码“sql”远程连接到上面configuration的SQL Express实例。 最后一个提示和简单的方法来检查这是为了创build一个带有.UDL扩展名的空文本文件,在您的桌面上说“Test.UDL”。 双击编辑该文件将调用Microsoft Data Link Properties对话框,通过该对话框可以快速testing远程SQL连接