我的本地计算机上有两个SQL Server实例。他们都听不同的端口。我安装的第一个实例在默认端口上运行:1433。我已将另一个实例设置为侦听端口1434.
我的应用程序正在使用我们在这里生成连接字符串的旧共享代码。所以直到现在我还不知道那里发生了什么。由于新的要求,我发现自己需要检查我用来连接SQL Server的连接字符串。
我发现连接字符串是为了连接到每个SQL实例而构建的,不包括网络库,它们也不包括端口号作为数据源的一部分。数据源刚刚设置为<Server Name>/<Instance Name>
。我确实在MS文档中发现,如果未包含网络库,则将其视为(local)
,但它并未真正解释如何处理(local)
。
所以我的问题是为什么这种格式的连接字符串能够连接到在非默认端口上运行的SQL Server实例?如果实例位于本地计算机或本地网络上,这仅适用吗?如果服务器是远程的,我可以在没有端口的情况下放置<ip>/<sql instance>
吗?
我只需要清楚一下这是如何工作的,以及何时需要端口号以及什么时候是可选的,因为我试图让我的用户连接UI尽可能简单。
答案 0 :(得分:2)
有一种叫做“SQL Server Browser Service”的东西:
http://technet.microsoft.com/en-us/library/ms181087(v=sql.105).aspx
旨在为客户端提供有关sql server实例,端口的信息。它实际上侦听UDP端口1434。 关闭此服务后,您仍然可以连接到实例,但需要指定TCP / IP端口。
答案 1 :(得分:0)
我的本地计算机上有两个SQL Server实例。他们都听不同的端口。我安装的第一个实例在默认端口上运行:1433。我已将另一个实例设置为侦听端口1434.
出于好奇,为什么不将它们设置为命名实例,两者都运行在默认值1433上?
至于它的工作原理,如果你在开始菜单中搜索SQL配置,你会找到一个与此类似的屏幕。
Sql Server支持多种不同的连接方式。 TCP / IP是一种方式(即IP地址和端口),但如果您在本地计算机上,它还支持共享内存连接。也就是说,如果你是SQL Server可执行文件,而管理工作室/客户端也在同一台机器上。
我想说当你指定local时它默认为共享内存,因此你不需要指定端口。
您可以通过暂时禁用上述配置中的共享内存来测试此问题,并查看您的(local)\InstanceName
是否停止运行。