SQL Server: Чи слід використовувати TCP або Named Pipes або використовувати стандартні?


17

Під час підключення до SQL Server 2008 R2 з клієнтської програми .NET 4 на іншому сервері в одній локальній мережі можна встановити три різні мережеві протоколи:

  1. TCP
  2. Названі труби
  3. Не встановлюйте нічого в рядку з'єднання і використовуйте за замовчуванням

Яка найкраща практика? Що вибрати?

Додаткова інформація: і TCP, і іменовані труби включені як на сервері, так і на клієнті. У додатку використовується дзеркальне відображення бази даних. Клієнт і сервер спілкуються через швидку локальну мережу.

Ми досліджуємо це, оскільки у нас є рідкісні та хибні проблеми з підключенням та тайм-аутом. (Але незалежно від цього я хотів би знати найкращу практику).

Є стаття на цю тему про MSDN, але вона є дуже загальною та невиразною. Не рекомендує і не рекомендує нічого корисного.


2
@ccook Я вважаю, що так і було. tcp:Через кілька років я також виявив, що він налаштований як частина більшості рядків зв’язку в оточенні іншої компанії. Я припускаю, що вони знайшли подібні проблеми.
usr

1
Я недостатньо впевнений, щоб опублікувати це як відповідь. Хоча дивно, що така кричуща проблема не є виправленою. Повинно бути дуже рідкісним або важким для відтворення. @ccook
usr

1
Для нас це дуже рідко і важко відтворити. На щастя, коли ми створили цей додаток, який спамує з'єднання одночасно щохвилини, він може відтворювати його раз у раз Це все ще дуже непередбачувано. Ми зараз тестуємо цю зміну - почекаємо деякий час, перш ніж виправити її. Проте, вивчивши це, я безумовно схильний використовувати tcp: за замовчуванням, якщо додаток і сервер не знаходяться на одній машині.
ccook

1
@ccook У мене була нова думка. Загальнодоступні файли Windows, як відомо, є ненадійними. Багато помилок бачать помилкові помилки та збої в з’єднанні. Діагностувати рідко, але важко / неможливо. Під час використання названих труб ви тепер залучаєте всю цю технологію до розгортання SQL Server. Це здається нерозумним на загальних підставах.
usr

1
домовились. Поки tcp: здається, вирішує цю проблему. Ми трохи чекаємо, щоб зателефонувати це підтверджено.
ccook

Відповіді:


18

Я віддаю перевагу TCP / IP над названими трубами, хоча в більшості ситуацій помітної різниці не буде. Це можна зробити, скоригувавши протоколи, що підтримуються екземпляром в SQL Server Configuration Manager, а не жорстке кодування речей у рядку підключення (це полегшує внесення змін або усунення несправностей).

По суті, маршрутизація та інші накладні витрати, пов’язані з названими трубами (якщо ваші додатки не працюють на тій же машині, що і SQL Server; у цьому випадку є лише трохи додаткових накладних витрат), роблять це менш ефективним варіантом, особливо в масштабі, у повільному мережевому середовищі (100 Мб або менше) або якщо ваші навантаження сильно спливають.

Якщо ваші програми знаходяться в тому ж вікні, що і SQL Server, ви також повинні пам’ятати про спільну пам’ять - якщо у вас є програми, які безпосередньо в коробці SQL Server спілкуються з SQL Server, це буде найбільш ефективним варіантом.

Ви можете прочитати про переваги продуктивності TCP / IP більш докладно .


Тож це в основному не має великого значення, але, як правило, краще їхати з TCP, оскільки немає причин для вибору названих труб. Чи погоджуєтесь ви з цим підсумком?
usr

1
@usr Ну, це важливо, коли ви масштабуєте, чи якщо ваша мережа смокче. Але так, загалом, я не маю реальної користі від вибору названих труб у будь-якому випадку, про який я знаю.
Аарон Бертран

7

Протокол Named Pipes корисний для програми, розробленої навколо NetBIOS або інших протоколів на базі локальної мережі.

Іменовані труби забезпечують простий доступ до віддалених процедурних дзвінків (RPC) в межах одного домену безпеки і, таким чином, є вигідним для цих додатків.

Зазвичай протокол TCP хороший на практиці, тому що вам не потрібно дбати про все це в мережі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.