早上好,
我正在尝试使用“外部数据”选项从装有 ACCESS 2016 的远程计算机连接到 SQL 服务器。两者都在同一个网络上。
值得注意的是,我是以域验证用户的身份进行连接的。
我使用以下方式创建一个新连接:“新建”>(数据源)“SQL Server”,在选择 SQL 服务器时,我以 DNS 格式“SERVER\AWORKS”提供我的 SQL 服务器的 DNS 名称,然后选择已验证用户的凭据。
知道服务器有这个实例,其中包含我们想要连接的 Northwind 数据库和相关表。
一旦我单击“下一步”,就会出现以下错误。
我查看了微软文档,结果发现
解决方案:服务器上的防火墙阻止了传入连接。请检查服务器操作系统的防火墙设置。启动代码 0”。
因此,我查看了从具有访问权限的远程计算机建立连接所需的防火墙设置这里最终发现重要的端口如下。
“数据库引擎使用的端口默认情况下,SQL Server 和相关数据库引擎服务使用的典型端口是:TCP 1433、4022、135、1434、UDP 1434。”
如下所示,我的 SQL Server 上已启用所有这些功能。当然,它们是在“域”级别启用的。
尽管端口开放,身份验证仍然不起作用。
但是我注意到,如果我在域级别禁用防火墙,如下所示,
该连接与“Server \ AWORKS”一起工作,我可以从“Northwind”以及相关表中读取数据,如下所示。
表格
因此我认为这是由于防火墙造成的。
但我仍然不知道是什么让“域”防火墙阻止连接
我想避免将 SQL 服务器的域防火墙暴露于任何风险。
有任何想法吗?
答案1
您的 Windows 防火墙已针对域配置文件关闭。请确保您正在使用域配置文件。使用 PowerShell 命令进行检查
Get-NetConnectionProfile
,查看属性NetworkCategory
,如果不匹配,请更改您的连接配置文件或防火墙设置。确保您知道实例正在侦听哪个端口。请参阅此内容手动的了解详情。我个人的偏好:设置
Listen All: Yes
并只设置一个 TCP 端口IPAll
(空的 TCP 动态端口)启用您的服务器浏览器如果不是。如果您不想在连接字符串中提供端口,则需要使用命名实例。
检查您的客户端是否可以连接到此侦听器。使用 PowerShell 命令
Test-NetConnection -Computername Server -Port [instance port/browser port]
查看第一个链接以获取有关端口号的信息。检查SQL Server 事件探查器
Show all events
通过设置、扩展Errors and Warnings
和启用来检查错误,User Error Message
让它运行并再次尝试连接。阅读红色条目并进行相应调整。
从您的问题来看,您使用的身份验证方法并不完全清楚。在此列表的最后一步,您应该能够看到您的方法是否存在问题。