如果问题听起来很蹩脚但我无法在互联网上找到答案,请提前抱歉。
SQL如何通过网络与数据库通信而不共享任何类型的物理文件?
例如,如果我们使用访问权限并且我们想要通过网络访问数据,那么我们必须共享数据库文件,以便它可以在网络中访问但是 SQL Server i从未见过在网络上共享任何SQL DB文件。
他们使用什么样的方法?
答案 0 :(得分:3)
为了理解,让我们首先简要介绍一下目前常用的两种主要协议:
两者都是TCP / IP协议套件的一部分。
TCP是客户端与SQL Server通信的主要协议。实际上,说客户端和SQL Server使用表格数据流(TDS)更为正确,但TDS实际上位于TCP之上,当我们谈论Windows和防火墙以及其他网络设备时,它们就是这样。规则和控制的协议是围绕着的。所以我们只是谈谈TCP。
与TCP不同,UDP不是面向连接的。 A"客户"可以向任何人发送UDP通信。谈判通信连接没有任何协议,协议本身没有任何协调通信顺序或类似的东西。如果需要,则必须由应用程序或应用程序使用的UDP之上构建的协议来处理。
网络通信 - 与SQL Server交谈
当设置SQL Server实例时,它侦听的TCP端口取决于它。将设置默认实例以侦听端口1433.命名实例将设置为在安装期间选择的随机端口。此外,将配置命名实例以允许其动态更改该端口。这意味着当一个命名实例启动时,如果它发现某些东西已经使用了它通常使用的端口,它就会选择一个新端口。如果您有一个命名实例,并且您有通过防火墙的连接,那么您将要使用SQL Server配置管理器来设置静态端口。这将允许网络和安全人员配置其设备以获得最大程度的保护。虽然您可以更改SQL Server默认实例的网络端口,但大多数人都没有。
网络通信 - 查找SQL Server
如果只为客户端指定了连接到SQL Server的名称,例如MySQLServer,则尝试连接到默认实例。在这种情况下,客户端将自动尝试与MySQLServer上的端口1433进行通信。如果您已将端口切换为默认实例,则需要告知客户端正确的端口,通常是在连接字符串中指定以下语法:,。例如,如果您将SQL Server移动到侦听14330,那么您将使用MySQLServer,14330而不仅仅是MySQLServer。
网络通讯 - 命名管道
命名管道是一种较旧的网络库通信机制,它通常不再使用。它不应该在防火墙上使用。但是,如果由于某种原因需要使用它连接到SQL Server,则此协议也位于TCP之上。命名管道实际上是由操作系统使用的,它在协议中有自己的机制来确定通信的路由。就网络通信而言,它会侦听TCP端口445.无论我们是在谈论SQL Server的默认或命名实例,都是如此。
您可以在此处找到完整的主题:https://www.mssqltips.com/sqlservertip/2182/network-communications-mechanisms-for-sql-server/
答案 1 :(得分:0)
就像您向自己喜爱的搜索引擎(Google,Bing等)提交搜索时一样,他们不会向您发送他们的整个数据集,这样您就可以找到您正在寻找的内容因为,它与数据库服务器。数据存储在服务器上(可能在网络上),每个人都访问那个地方。