SQL Server,允许远程连接到此服务器选项。这有什么作用?

Eri*_*gum 3 sql-server

有人能告诉我这个选项实际上做了什么,如果我在一个既定的生产环境中突然取消选中它会产生什么影响?

远程服务器连接 允许远程连接到此服务器

Ian*_*oyd 6

此复选框是设置远程访问配置选项的 GUI 方式,

EXEC sp_configure 'remote access', 0; -- UI checkbox unchecked
EXEC sp_configure 'remote access', 1; -- UI checkbox checked
Run Code Online (Sandbox Code Playgroud)

该功能在 SSMS UI 中标记不正确:

  • 不正确:允许远程连接这台服务器
  • 正确:允许远程连接 该服务器

并且文档描述错误:

允许远程连接到此服务器

控制从运行 SQL Server 实例的远程服务器执行存储过程。选中此复选框与将sp_configure 远程访问选项设置为 1 的效果相同。清除它可防止远程服务器执行存储过程。

它应该是:

允许远程连接 从该服务器

控制运行 SQL Server 实例的远程服务器到存储过程的执行。选中此复选框它和设置相同的效果sp_configure的远程访问为1。清除它可以防止存储过程执行选项 远程服务器。

来自 BOL 2000 的文档

SQL Server 2000 是最后一次记录此功能。出于后代和调试目的在此处转载:

配置远程服务器

远程服务器配置允许连接到 Microsoft® SQL Server™ 的一个实例的客户端在另一个 SQL Server 实例上执行存储过程,而无需建立另一个连接。客户端连接的服务器接受客户端请求并代表客户端将请求发送到远程服务器。远程服务器处理请求并将任何结果返回给原始服务器,原始服务器又将这些结果传递给客户端。

如果要设置服务器配置以便在另一台服务器上执行存储过程并且没有现有的远程服务器配置,请使用链接服务器而不是远程服务器。存储过程和分布式查询都允许针对链接服务器;但是,仅允许存储过程用于远程服务器。

在此处输入图片说明 注意 提供对远程服务器的支持只是为了向后兼容。必须对 SQL Server 的远程实例执行存储过程的新应用程序应改用链接服务器。

禁用该选项可防止传出连接

如果您尝试在远程链接服务器(即sp_addlinkedserver)上执行存储过程:

EXECUTE [Hyperion].[SharePoint].[dbo].[GetUnreadDocuments]
Run Code Online (Sandbox Code Playgroud)

它会运行良好。

如果然后remote access本地服务器上禁用:

  • EXEC sp_configure 'remote access', 0;, 或者
  • 取消“允许远程连接 该服务器”

相同的链接存储过程将失败:

EXECUTE [Hyperion].[SharePoint].[dbo].[GetUnreadDocuments]
Run Code Online (Sandbox Code Playgroud)

消息 7201,级别 17,状态 4,过程 GetUnreadDocuments,第 1 行
无法在远程服务器“Hyperion”上执行过程,因为 SQL Server 未配置为远程访问。请您的系统管理员重新配置 SQL Server 以允许远程访问。

精简版

  • Remote access控制对远程存储过程的传出访问。

并且文档错误地指出使用sp_addlinkedserver可以避免问题:

此功能将在 Microsoft SQL Server 的下一版本中删除。请勿在新的开发工作中使用此功能,并尽快修改当前使用此功能的应用程序。请改用 sp_addlinkedserver。

那是假的。

也可以看看