连接到 SQL Server Express 时连接字符串无效

Invalid connection string when connecting to SQL Server Express

我尝试了我能在互联网上找到的每一种变体。一切。仍然每次我得到同样的异常:

System.Data.SqlClient.SqlException: 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid)'

有了这个奇怪的内部异常:

SocketException: The operation completed successfully

当我直接指定端口时,我得到了这个奇妙的异常:

An attempt was made to access a socket in a way forbidden by its access permissions

不管怎样,都不管用。此外,我希望在测试时打开 MS SQL Management Studio(这是唯一可以阻止端口的进程)。

那么为什么它不起作用? Management Studio 可以毫无问题地连接 IP\InstanceName。为什么 System.Data.Sql.SqlConnection class 做不到?

        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.

首先尝试使用 SQL Server Management Studio 连接到该数据库。 如果你得到同样的错误,这意味着服务器有问题,而不是(或不仅仅是)你的连接字符串。 这里有一些可能性:

1- 从此部分删除 'tcp:':builder.DataSource = "tcp:...\SQLEXPRESS";

2- 在服务器上,SQL 服务器服务(SQL 服务器或 SQL 服务器浏览器)已停止。 激活 go 服务并启动停止的服务。

3- 可能是服务器不接受远程连接: 在这种情况下,在服务器上打开 SQL 服务器配置管理器

并激活 tcp ip。

您应该在该操作后重新启动 SQL 服务器服务。

告诉我它是否适合你。

问题是(不是很清楚)UWP 需要一种能力才能 运行 该代码。我在某处读到您需要 Enterprise Authentication,但事实并非如此。由于我的程序和服务器位于封闭的专用网络中,因此我启用了 Private Networks (Client & Server).

您需要的是 Internet(客户端和服务器)。遗憾的是,异常并没有暗示这一点,而且 UWP 上的 SqlClient 需要它才能工作这一事实几乎没有被提及或没有得到足够的强调,所以你不会忽视它。

在此 .Net Standard issue 中找到解决方案。