【问题标题】:C# WPF SQL connection error in one project and not another一个项目而不是另一个项目中的 C# WPF SQL 连接错误
【发布时间】:2021-08-31 02:29:33
【问题描述】:

这让我很困惑。我正在尝试运行几行代码来连接到我们的 SQL Server 数据库,就像我以前做过很多次一样。在这个项目中,它只是失败了。如果我启动一个新的准系统 WPF (.net 4.8) 项目,以下代码可以完美运行。

SqlConnection cn = new SqlConnection("Data Source = SRVSQL03; Initial Catalog = PRODDATA; Persist Security Info = True; User ID = XXX; Password = XXX; TrustServerCertificate = True");
cn.Open();

var cmd = new SqlCommand("select top (1) name from Employee where active = 1 and EmployeeCode = @id", cn);
cmd.Parameters.AddWithValue("@id", int.Parse(Input));

cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
    Console.WriteLine(dr[0]);
}

cn.Open() 超时:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误:40 - 无法打开与 SQL Server 的连接)

System.Data version

清理/重建解决方案让我无处可去。我在想也许参考可能会在某处造成麻烦或一些碎片。也尝试删除并重建 obj 文件夹。

提前致谢

Reference list

【问题讨论】:

  • 问题出在连接字符串上。最好的调试方法是使用 SQL Server Management Studio,它提供比 c# 更好的错误消息。似乎服务实例错误或凭据错误。检查数据源并查看它是否适用于 SSMS。如果您使用的是用户名和密码,则将凭据设置为 SQL Server;如果您使用的是 Integrated Security = true,请将其设置为 Windows 凭据。
  • 连接字符串工作正常。显然改变了UN/PW。在我创建的虚拟解决方案中尝试了相同的字符串。甚至尝试了其他也应该工作的字符串。在并行项目中工作正常。我会说排除了可能存在的各种防火墙/SQL服务器设置问题,并将其减少到......我的解决方案本身存在冲突/损坏的部分,不是吗?
  • 您是否在相同的两台机器之间运行并正常工作?在 VS 之外运行可执行文件时代码是否有效?如果您是管理员,VS 会自动使用 AS ADMIN 运行。您必须右键单击 VS 快捷方式并选择以管理员身份运行。我怀疑当您运行不同的应用程序时,您并没有在 VS 中运行。当你失败时,你就在 VS 里面。
  • 同一台机器上的两个 VS 实例针对我们托管 SQL DB 的服务器运行。一个有效,另一个无效。我的主要自动取款机。是否包括 WinRT api(用于 pdf 查看器)正在破坏它。不知何故。如果我将解决方案分解为该子项目并尝试从那里注入我的 SQL,至少我会得到相同的错误。
  • 也许您在某处有某种代理设置?顺便说一句,您应该使用 using 块处理您的 SQL 对象

标签: c# sql-server wpf


【解决方案1】:

花了一段时间才弄清楚,但显然是从网络驱动器 (VPN) 运行代码导致了问题。可能在某处击中了内部防火墙。

直接从我的机器上运行的相同代码运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多