SQL Server Profiler проверяет вход в систему при создании объекта SqlConnection. Какова роль пула? - PullRequest
0 голосов
/ 02 июня 2019

Название вроде как, у меня есть два простых кода:

using (var conn = new SqlConnection(connectionString))
{
    using (var command = new SqlCommand(query, conn))
    {
        await conn.OpenAsync();
        return await command.ExecuteNonQueryAsync();
    }
}

и

using (var command = new SqlCommand(query, connection))
{
    return await command.ExecuteNonQueryAsync();
}

Где во втором примере соединение создается и открывается один раз в конструкторе.Итак, первый - это практика, продвигаемая всеми (например, здесь и здесь ), но я вижу, что второй пример выполняется примерно на 50% быстрее.

Is isПравильно ли сохранять открытое соединение до тех пор, пока оно мне нужно (например, в каждом классе DAL), или я должен каждый раз открывать и закрывать его?Если поддержание открытого соединения является хорошей практикой, почему оно не продвигается?И, наконец, какова роль пула соединений?Разве это не должно поддерживать соединение открытым и живым для следующего использования?Потому что, когда я запускаю средство профилирования SQL, оно показывает, что каждый connection.Open() вызывает логин аудита на стороне SQL.

Также см. здесь , который говорит прямо противоположное тому, что я вижу в профилировщике.,Он говорит, что connection.Open() не должен приводить к операции spid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...