C # SQLConnection.Open () зависает, без исключения - PullRequest
0 голосов
/ 14 октября 2019

Я использую C # в Visual Studio 2019, с Xamarin.Forms и SQl в SSMS 2018 и имею следующий код (где [] используется для замены ненужной информации)

try
{
  using(SqlConnection connection = new SqlConnection())
  {
     connection.ConnectionString = "Server=[ServerName]; Database=[DatabaseName]; User Id= [UserID]; Password=[Password]";

     connection.Open();

     SqlCommand command = new SqlCommand("SELECT * from [TableName]", connection);

     [Does stuff here]
  }
}
catch (Exception ex)
{
  System.Diagnostics.Debug.WriteLine(ex)
}

Когда я запускаюэто, это висит неопределенно в connection.Open(). Режим отладки продолжает работать и, похоже, переходит от Connection.Open(), но никогда не достигает следующей строки.

Я пытался сделать это с разными версиями ConnectionString, используя разные базы данных и с Trusted_Connection=true вместо указанияимя пользователя и пароль, но они не имеют никакого значения. Добавление Connection Timeout = 5 к connectionString не имеет никакого эффекта.

Я полагаю, что это, вероятно, проблема с моими настройками в SQL, но, поскольку я новичок с этим, я не знаю, с чего начать и подобные сообщения на форумах. проверил, получил ответы в соответствии с Connection Timeout ( Connection.open для зависаний на неопределенный срок, исключение не выдается ) или не получил ответа.

Любой совет будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Можете ли вы попробовать строку изменения кода, как показано ниже -

connection.ConnectionString = "Источник данных = [Имя_сервера]; Начальный каталог = [Имя_базы_данных]; Интегрированная безопасность = SSPI;"

0 голосов
/ 14 октября 2019

Можете ли вы войти в SSMS с учетными данными, указанными в строке подключения?

В противном случае мне повезло убедиться, что соединение еще не открыто или разорвано:

if (connection.State == ConnectionState.Closed || connection.State == ConnectionState.Broken)
{
    connection.Open();
}
...