Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当SQL Server连接字符串中未指定端口号时会发生什么情况?_Sql Server - Fatal编程技术网

Sql server 当SQL Server连接字符串中未指定端口号时会发生什么情况?

Sql server 当SQL Server连接字符串中未指定端口号时会发生什么情况?,sql-server,Sql Server,我在本地计算机上有两个SQL Server实例。它们都监听不同的端口。我安装的第一个实例在默认端口1433上运行。我已将另一个设置为侦听端口1434 我的应用程序正在使用一些旧的共享代码来生成连接字符串。所以直到现在我才真正知道那里发生了什么。由于一个新的需求,我发现自己需要检查用于连接SQL Server的连接字符串 我发现,为连接到每个SQL实例而构建的连接字符串不包括网络库,也不包括作为数据源一部分的端口号。数据源刚刚设置为/。我确实在MS文档中发现,如果不包括网络库,那么它将被视为(本地

我在本地计算机上有两个SQL Server实例。它们都监听不同的端口。我安装的第一个实例在默认端口1433上运行。我已将另一个设置为侦听端口1434

我的应用程序正在使用一些旧的共享代码来生成连接字符串。所以直到现在我才真正知道那里发生了什么。由于一个新的需求,我发现自己需要检查用于连接SQL Server的连接字符串

我发现,为连接到每个SQL实例而构建的连接字符串不包括网络库,也不包括作为数据源一部分的端口号。数据源刚刚设置为
/
。我确实在MS文档中发现,如果不包括网络库,那么它将被视为
(本地)
,但它并没有真正解释如何处理
(本地)

所以我的问题是,为什么这种格式的连接字符串能够连接到在非默认端口上运行的SQL Server实例?仅当实例位于本地计算机或本地网络上时,此功能才起作用吗?如果服务器是远程的,我是否可以在没有端口的情况下放置
/

我只是需要弄清楚这是如何工作的,什么时候需要端口号,什么时候可选,因为我正试图让我的连接UI对我们的用户来说尽可能简单

我在本地计算机上有两个SQL Server实例。它们都监听不同的端口。我安装的第一个实例在默认端口1433上运行。我已将另一个设置为侦听端口1434

出于好奇,为什么不将它们设置为命名实例,并在默认的1433上运行呢

至于它的工作原理,如果您在“开始”菜单中搜索SQL配置,您会发现类似的屏幕

Sql Server支持多种不同的连接方式。TCP/IP是单向的(即IP地址和端口),但如果您在本地计算机上,它也支持共享内存连接。也就是说,如果SQL Server可执行文件和management studio/客户端也在同一台计算机上

我猜,当您指定local时,它默认为共享内存,因此不需要指定端口


您可以通过在上述配置中临时禁用共享内存来测试这一点,并查看您的
(local)\InstanceName
是否停止工作。

有一种称为“SQL Server浏览器服务”的东西:

它旨在为客户端提供有关sql server实例、端口的信息。它实际上监听UDP端口1434。
关闭此服务后,您仍可以连接到实例,但需要指定TCP/IP端口。

如果我将TCP/IP端口设置为1433并重新启动这两个服务。第二次服务无法启动。我的印象是,您只能有一个实例侦听任何特定端口。当我通过SQL Management Studio连接时,此服务似乎没有效果。在启用和禁用连接协议时,我看到了更多的效果。但是,无论浏览器是否正在运行,我要么连接,要么收到相同的错误。当我有更多的时间时,我会尝试我的应用程序,看看会发生什么。我已经从其他方面解决了这个问题,所以这不是首要任务。