【问题标题】:SqlConnection Error for EXE stored on network drive存储在网络驱动器上的 EXE 的 SqlConnection 错误
【发布时间】:2018-02-15 15:40:29
【问题描述】:

.Net Console EXE 的执行总是失败并出现以下错误,只有当 EXE 放置在网络驱动器上时才会发生这种情况,从本地系统它可以正常工作而没有任何连接错误。

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程 连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)。

我们将不胜感激。

【问题讨论】:

  • 尝试在 SQL Server 中启用远程连接。打开 SQL Server Management Studio -> 右键单击​​服务器 -> 属性 -> 连接 -> 确保选中允许远程连接到此服务器
  • @I.Manev 此设置存在。
  • 这个怎么样:SQL Server 配置管理器 -> SQL Server 网络配置 -> MSSQLServer 的协议 -> 应该启用 TCP/IP
  • @I.Manev 也存在,管理工作室或从本地驱动器执行 EXE 没有问题,但是当计划任务执行相同的 exe 时,它​​会因 SqlConenction 错误而失败。
  • 您确定连接字符串正确且防火墙没有阻止连接吗?如果您不确定,请为您正在使用的端口创建新规则 Windows 防火墙高级安全 -> 入站规则 -> 新规则。

标签: c# ado.net sqlconnection


【解决方案1】:

发现“路径层次结构中的顶级目录缺少权限”的问题。 在为顶级目录提供适当的权限后,EXE 能够连接 SqlServer。 似乎在没有此类权限的情况下,安全策略会限制应用程序访问网络资源。

【讨论】:

    【解决方案2】:

    好的,关键是您说“当计划任务执行相同的 exe 时,它​​会因 SqlConenction 错误而失败”。如果您在 Windows 计划程序下运行此任务,请确保 Windows 计划作业正在使用正确的凭据运行。默认情况下,它们在无权连接到 SQL Server 的 Windows 服务下运行。使用特定的帐户名和密码设置 Windows 计划任务。

    【讨论】:

    • 调度进程在专用服务账户(广告账户)下运行,并且有足够的权限,如果将exe放在本地文件系统上没有问题。但 exe 应驻留在网络存储中。
    • 这是 .net Framework 3.5 SP1 及更高版本,还是更低版本?在 3.5 SP1 之前,您无法在没有 CASPOL 的网络共享上执行 .net 程序集。 (stackoverflow.com/questions/148879/…) .net 4.0 似乎也干扰了这种能力。澄清一下 - 如果您在 C 上交互式地(在您的帐户下)执行程序:它可以工作,但如果在网络共享上则不行?从哪里读取连接字符串?如果在配置文件中,它位于哪里?
    • Exe是控制台App,使用.Net 4.6框架创建,运行时为4.0。
    • @Hi10 - 好的,这是我问题的第一部分;但要澄清一下 - 如果您在 C 上以交互方式(在您的帐户下)执行程序:它可以工作,但如果在网络共享上则不行?从哪里读取连接字符串?如果在配置文件中,它位于哪里?
    • 是的,在本地驱动器上运行 exe 没有问题,它正在从其配置中读取连接,exe 和配置都在同一个文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2013-07-10
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多