首页 > 解决方案 > UWP 应用程序无法与远程实例 SQL Server 通信

问题描述

我目前正在为现有数据库实施 UWP 程序。我以这篇文章为基础。 https://docs.microsoft.com/en-us/windows/uwp/data-access/sql-server-databases

运行时出现异常:

System.Data.SqlClient.SqlException" в System.Data.SqlClient.dll

异常:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:25 - 连接字符串无效)

这对我来说似乎很奇怪,因为具有相同连接字符串的 WPF 应用程序可以正常工作。接下来,我决定在我的电脑上安装一个数据库实例,并将部分数据导出到本地数据库。令我惊讶的是,从以下位置替换连接字符串后:

Data Source=sqlserver\sqlexpress

Data Source=.\sqlexpress

UWP 程序从我计算机上的数据库中读取此内容。

我还阅读了这篇文章以确保远程数据库配置正确。https://www.lansweeper.com/knowledgebase/a-network-related-or-instance-specific-error-occurred/

正如我所说,WPF 程序可以完美地使用这个数据库。有什么方法可以检查为什么 UWP 不想与数据库通信?

为了明确远程服务器原则上是否可用,我应用了 TNC 命令的输出:

tnc sqlserver -p 1433 -I detailed


ComputerName            : sqlserver
RemoteAddress           : 192.168.10.11
RemotePort              : 1433
NameResolutionResults   : 192.168.10.11
MatchingIPsecRules      :
NetworkIsolationContext : Private Network
InterfaceAlias          : Ethernet
SourceAddress           : 192.168.10.20
NetRoute (NextHop)      : 0.0.0.0
TcpTestSucceeded        : True

连接字符串如下所示:

private string connectionString = @"Data Source=sqlserver\sqlexpress;Initial Catalog=TestCatalog;User ID=*;Password=*";

在 VS 中使用相同的连接字符串。VS 显示表格的内容没有问题。我还可以在 VS 编辑器中删除或添加新行。

我说的是远程数据库。在 VS 服务器资源管理器中,我有一个连接到远程数据库的数据连接。我可以在 VS 中安全地编辑远程数据库数据(添加、删除和更新)。我看到了连接字符串,最初将其用作 UWP 应用程序中的连接字符串。 在此处输入图像描述

标签: c#sql-serveruwp

解决方案


您已经在此处查看了此 Microsoft 链接。长话短说,您是否遵循以下建议?

无法连接到您的数据库? 在大多数情况下,需要更改 SQL Server 配置的某些方面。如果您能够从其他类型的桌面应用程序(例如 Windows 窗体或 WPF 应用程序)连接到您的数据库,请确保您已为 SQL Server 启用 TCP/IP。您可以在计算机管理控制台中执行此操作。

检查您是否正确遵循了解决方案的其余部分。您可能需要从窗口防火墙启用 tcp 端口。

转到防火墙 -> 入站规则 -> 在规则中添加 TCP:1433。

此外,由于错误与连接字符串有关,因此请尝试仅使用服务器名称/ ip/ 或主机名,而不使用服务器实例。

您还可以添加端口号,看看这是否适合您。添加时,sql server 会忽略实例名称(因为不同的实例需要不同的端口才能工作,所以它可以作为唯一标识符工作)。

编辑:如何创建有效的连接字符串:

在此处查看此答案:如何从数据库中获取连接字符串


推荐阅读