Повлияет ли это на производительность при использовании Trusted_Connection=true и аутентификации SQL Server?

#c# #.net #asp.net #sql-server-2005 #ado.net

#c# #.net #asp.net #sql-server-2005 #ado.net

Вопрос:

Если в строке подключения указан Trusted_Connection=true режим аутентификации SQL Server, повлияет ли это на производительность моего веб-приложения?

Ответ №1:

Не уверен на 100%, что вы имеете в виду:

 Trusted_Connection=True;
  

Использует учетные данные Windows и на 100% эквивалентно:

 Integrated Security=SSPI;
  

или

 Integrated Security=true;
  

Если вы не хотите использовать интегрированную безопасность / доверенное соединение, вам необходимо явно указать идентификатор пользователя и пароль в строке подключения (и исключить любую ссылку на Trusted_Connection или Integrated Security )

 server=yourservername;database=yourdatabase;user id=YourUser;pwd=TopSecret
  

Только в этом случае используется режим аутентификации SQL Server.

Если присутствует какой-либо из этих двух параметров ( Trusted_Connection=true или Integrated Security=true/SSPI ), то для аутентификации на SQL Server используются учетные данные Windows текущего пользователя, и любой user iD= параметр будет проигнорирован и не будет использоваться.

Для справки см. сайт Строк подключения к SQL Server 2005 с множеством примеров и пояснений.

Предпочтительным и рекомендуемым способом выполнения операций является использование аутентификации Windows, но это может привести к небольшой задержке, поскольку SQL Server должен будет проверять подлинность ваших учетных данных в Active Directory (обычно). Я понятия не имею, насколько велика может быть эта небольшая задержка, и я не нашел никаких ссылок на это.


Подводя итог:

Если вы укажете либо Trusted_Connection=True; , либо Integrated Security=SSPI; , либо Integrated Security=true; в строке подключения

==> ТОГДА (и только тогда) происходит проверка подлинности Windows. Любые user id= настройки в строке подключения будут проигнорированы.


Если вы НЕ укажете ни один из этих параметров,

==> тогда у вас НЕ выполняется проверка подлинности Windows (будет использоваться режим проверки подлинности SQL)


Комментарии:

1. Вы имеете в виду, что если я использую аутентификацию SQL Server, отличную от аутентификации Windows, я не могу использовать Trusted_Connection=true?

2. Извините, я имею в виду, что если я хочу использовать Trusted_connection = true, то я должен использовать режим аутентификации Windows? Могу ли я использовать режим аутентификации SQL Server с Trusted_connection = true?

3. Марк, я хочу подтвердить тебе, что 1. если я использую режим аутентификации SQL Server, то я не могу использовать Trusted_connection = true, 2. если я использую режим аутентификации Windows, то я могу выбрать, использовать Trusted_connection = true или нет?

4. 1.) ДА, 2.) НЕТ — trusted_connection= true означает проверку подлинности Windows, а для проверки подлинности Windows требуется Trusted_Connection=true. Если вы укажете «trusted_connection=True» ==> у вас установлена аутентификация Windows; если вы ее не укажете, у вас не установлена аутентификация Windows

5. Вы имеете в виду, что если я использую аутентификацию Windows, я должен использовать trusted_connection= True? У меня возникла эта путаница, потому что я использую аутентификацию Windows в одном из своих проектов и одновременно не указываю trusted_connection = True. 🙂

Ответ №2:

При использовании доверенных подключений имя пользователя и пароль игнорируются, поскольку SQL Server использует аутентификацию Windows.

Комментарии:

1. Вы имеете в виду, что если я использую аутентификацию SQL Server, отличную от аутентификации Windows, я не могу использовать Trusted_Connection=true?

2. Если вы используете доверенное соединение, Sql Server не заботится об идентификаторе пользователя и пароле, указанных в строке подключения. Sql Server использует учетные данные текущего процесса. Если вы хотите использовать аутентификацию Sql Server, вы должны удалить доверенное соединение из строки подключения

3. Спасибо! Если я не нахожусь в среде на основе active directory, возможно ли использовать Trusted_connection = true?

4. Вы не можете использовать доверенное соединение с аутентификацией Sql Server. Они являются взаимоисключающими.

5. Нет. Нет различий между AD, локальной учетной записью пользователя или домашней группой.

Ответ №3:

Вероятно, это приведет к некоторым потерям производительности при создании соединения, но поскольку соединения объединены в пул, они создаются только один раз, а затем используются повторно, поэтому для вашего приложения это не будет иметь никакого значения. Но, как всегда: измерьте это.


Обновить:

Существует два режима аутентификации:

  1. Режим проверки подлинности Windows (соответствующий доверенному соединению). Клиенты должны быть членами домена.
  2. Режим аутентификации SQL Server. Клиенты отправляют имя пользователя / пароль при каждом подключении

Комментарии:

1. Вы имеете в виду, что при первом установлении соединения с SQL Server будут дополнительные затраты на производительность? И почему? (мое предыдущее понимание заключается в том, что доверенное соединение повысит производительность, поскольку оно «надежное» — может сэкономить время, обойдя некоторые затраты на аутентификацию). Поправьте меня, если я ошибаюсь.

2. Да, но для того, чтобы стать trusted , необходимо выполнить несколько обменов между клиентом и сервером. Установление квитирования SSPI будет происходить медленнее, чем однократная отправка имени пользователя / пароля туда и обратно.

3. Кроме того, запрос Active Directory требует дополнительных затрат.

4. Trusted_Connection=True; означает аутентификацию Windows.

5. А аутентификация Windows означает Active Directory.

Ответ №4:

Если ваше веб-приложение настроено на выдачу себя за клиента, то использование доверенного соединения потенциально окажет негативное влияние на производительность. Это связано с тем, что каждый клиент должен использовать другой пул соединений (с учетными данными клиента).

Большинство веб-приложений не используют олицетворение / делегирование и, следовательно, не имеют этой проблемы.

Смотрите эту статью MSDN для получения дополнительной информации.