通过主机专用networking连接到VM上的SQL Server实例

我已经安装了Windows Web Server 2008 R2的虚拟开发机器,并且安装了SQL Server 2008 R2 Express 。 我没有安装任何SQL工具,因为我在主机上有它们。

虚拟机正在VMWare Workstation 8上运行。

VM有2个网卡

  • 所以其他人(testing人员)可以在开发中访问Web应用程序
  • 只有主机,这样我可以在我的主机上更快地与本机进行通信

我没有运行SQL浏览器,并使用machine \ instance,port name直接连接到它。 即使SQL不可发现,也可以通过这种方式连接到它。

我已经在防火墙上打开了SQL引擎的networking端口。

事实

我可以使用桥接IP地址访问我的SQL,但不能访问主机IP地址。 我已经检查了SQL Express的协议并启用了TCP / IP,并检查了显示5个IP的IP地址标签:

  • 2用于桥接networking(v6和v4)
  • 2本地主机(v6和v4)
  • 一个v6 IP地址(fe80 :: 100:7f:fffe%12)与桥接或仅主机networking无关。

这不知何故解释了为什么我不能使用主机专用networking访问我的SQL。 即使我更改这些设置,并将桥接IP更改为仅主机,我仍然无法访问我的SQL。

似乎只有主机的networking是不可见的SQL。 虽然它工作。

另一个事实是,如果我从我的主机ping我的虚拟机,我在桥接networking上得到响应,但不是在主机上。

我怀疑这必须与虚拟机的主机专用networking设置有某种关系。 或者可能不是。 因此,这个问题。 现在的问题是如何在我的虚拟机上安装SQL服务器,以便我可以通过主机和本地主机访问它(因为Web应用程序在同一台计算机上运行)? 但我不希望SQL服务器通过桥接networking访问,所以没有人能够访问它。

parsing度

好吧,我设法通过configuration虚拟networking和configurationSQL Server来解决这个问题。

虚拟networkingconfiguration

我的主机只configuration设置为自动,但使用VMWare这个networking没有任何网关应用到它,所以我添加了一个默认网关是相同的DNS(在我的情况下这是192.168.100.254)。

这使得Windowsnetworking可以将networking识别为不公开而非私有的。 这意味着某些安全级别以不同的方式应用于此。

我现在可以以任何一种方式(从主机到VM guest虚拟机,反之亦然)ping任一台计算机。 这两个ping都有一个回应,他们以前没有将networking标记为公开。

SQL Serverconfiguration

为SQL Express实例configuration协议并configuration了TCP / IP设置,并在第一个选项卡(协议)上将全部收听设置为 ,这意味着我必须在第二个tba(IP地址)上configuration单个IP, IP(v4和v6),并更改了v4 IP地址,因此它反映了虚拟主机专用networking的IP地址:

  • IP地址设置为仅主机networking地址
  • 将“ 启用 设置为“ 是”

然后清除所有这三个IP地址TCPdynamic端口 ,并将静态的一个TCP端口设置为我想要使用的1433

瞧,它的工作

现在我回到主机,并尝试使用桥接IP地址首先连接SSMS到我的虚拟机。 它失败。 然后作为第二次尝试我使用主机只有IP地址,并在我能够连接到我的SQL Server实例。 成功

这完全locking了我的SQL Server实例到本地机器和我的开发主机。