SSMS мгновенно подключается к базе данных, а SqlClient в C # занимает минуту? - PullRequest
0 голосов
/ 11 ноября 2019

В консольном приложении .Net Core 3.0 (System.Data.SqlClient) мне пришлось добавить Connect Timeout для предотвращения исключения тайм-аута.

using var conn = new SqlConnection($"Server={server};Database={db};Trusted_Connection=True;MultipleActiveResultSets=true;Connect Timeout=60");
conn.Open(); // Waiting....

Однако оно мгновенно подключается в Sql Server Management Studio (на одном компьютере)? В чем может быть причина медлительности?

1 Ответ

1 голос
/ 12 ноября 2019
nslookup myserver 

выходы

Server: a-ns02.mydomain.net
Address: 168.40.0.1

Name: myserver.ad.mydomain.net
Addresses: 10.120.x.x
           10.140.y.y 

Похоже, это прослушиватель Multi-Subnet AG, верно? Если это так, попробуйте добавить MultiSubnetFailover=true в строку подключения.

Это больше не происходит в .NET Framework, поскольку TransparentNetworkIPResolution был реализован в .NET Framework 4.6.1. А SSMS использует версию SqlClient .NET Framework.

Но это улучшение еще не в .NET Core (отслеживание проблема ). Пока это не исправлено, вам придется явно установить MultiSubnetFailover = true, чтобы избежать этих таймаутов. (Или отключите RegisterAllProviderIP на точке доступа клиента в кластере, если по какой-либо причине вы не можете изменить строку подключения).

...