我尝试了在互联网上找到的每一个变体。一切。而且每次我都得到同样的例外:
System.Data.SqlClient.SqlException:'与SQL Server建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:TCP提供者,错误:25 - 连接字符串无效)'
有这个奇怪的内部异常:
SocketException:操作成功完成
当我直接指定端口时,我最终得到了这个奇妙的例外:
尝试以其访问权限禁止的方式访问套接字
无论如何,它都不起作用。此外,我想在测试时打开MS SQL Management Studio(这是唯一可以阻止端口的进程)。
那么为什么它不起作用? Management Studio可以毫无问题地与IP\InstanceName
连接。为什么System.Data.Sql.SqlConnection
类无法这样做?
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "tcp:***.***.***.***\\SQLEXPRESS";
builder.InitialCatalog = "MyDB";
builder.Password = "MyPass";
builder.UserID = "ID";
builder.IntegratedSecurity = false;
_connection = new SqlConnection(builder.ToString());
仅供参考:我使用的是ConnectionStringBuilder,所以应该没有任何问题。服务器名称,实例名称,SQL用户和密码有效,我明确设置了Integrated Security = False
。
答案 0 :(得分:3)
问题是(这并不是很清楚)UWP需要一个能力才能运行该代码。我在某处读到了你需要的企业身份验证。由于我的程序和服务器位于封闭的专用网络中,因此启用了专用网络(客户端和服务器)。
您需要的是 Internet(客户端和服务器)。可悲的是,异常并没有暗示这一点,而且UWP上的SqlClient要求它工作的事实几乎没有提到或者没有足够的压力,所以你不会忽视它。
此.Net Standard issue中找到的解决方案。
答案 1 :(得分:0)
首先尝试使用SQL Server Management Studio连接到此数据库。 如果您收到相同的错误,则表示服务器没有(或不仅仅)使用您的连接字符串存在问题。 以下是一些可能性:
1-从此部分删除'tcp:':builder.DataSource =“tcp: 。 。 。 强> \ SQLEXPRESS“;
2-在服务器上停止SQL Server服务(SQL Server或SQL Server浏览器)。 激活go服务并启动已停止的服务。
3-可能是服务器不接受远程连接: 在这种情况下,在服务器上打开SQL Server配置管理器
并激活tcp ip。
在此操作之后,您应该重新启动SQL Server服务。
告诉我它是否适合你。