Máy chủ SQL: Chúng ta có nên sử dụng TCP hoặc Named Faucet hoặc sử dụng mặc định?


17

Khi kết nối với SQL Server 2008 R2 từ ứng dụng khách .NET 4 trên một máy chủ khác trong cùng một mạng LAN, người ta có thể đặt ba giao thức mạng khác nhau:

  1. TCP
  2. Đặt tên ống
  3. Không đặt bất cứ thứ gì trong chuỗi kết nối và sử dụng mặc định

Thực hành tốt nhất là gì? Chọn cái gì?

Thông tin bổ sung: Cả TCP và Named Faucet đều được bật cả trên máy chủ và trên máy khách. Ứng dụng này đang sử dụng phản chiếu cơ sở dữ liệu. Máy khách và máy chủ liên lạc qua mạng LAN nhanh.

Chúng tôi đang điều tra điều này bởi vì chúng tôi có các vấn đề về kết nối và thời gian chờ hiếm gặp và giả mạo. (Nhưng bất kể điều đó tôi muốn biết thực hành tốt nhất).

Có một bài viết về chủ đề này trên MSDN nhưng nó rất chung chung và mơ hồ. Nó không khuyên hoặc đề nghị bất cứ điều gì hữu ích.


2
@ccook Tôi tin là nó đã làm. Tôi cũng tìm thấy tcp:cấu hình như một phần của hầu hết các chuỗi kết nối trong môi trường của một công ty khác sau đó. Tôi cho rằng họ tìm thấy vấn đề tương tự.
usr

1
Tôi không đủ tự tin để đăng nó như một câu trả lời. Tuy nhiên, điều kỳ lạ là một vấn đề nghiêm trọng như vậy lại không được giải quyết. Phải rất hiếm hoặc khó sinh sản. @ccook
usr

1
Nó rất không thường xuyên và khó sinh sản đối với chúng tôi. May mắn thay, khi chúng tôi tạo ra ứng dụng đó, spam kết nối đồng thời mỗi phút, nó có thể sao chép nó mọi lúc mọi nơi. Nó vẫn rất khó đoán. Chúng tôi đang thử nghiệm thay đổi ngay bây giờ - chờ một lúc trước khi gọi nó. Mặc dù đã xem xét vấn đề này, tôi chắc chắn có xu hướng sử dụng tcp: theo mặc định trừ khi ứng dụng và máy chủ nằm trên cùng một máy.
ccook

1
@ccook Mình có suy nghĩ mới. Chia sẻ tập tin Windows nổi tiếng là không đáng tin cậy. Nhiều lỗi giả và lỗi kết nối được nhiều người nhìn thấy. Nó hiếm nhưng khó / không thể chẩn đoán. Khi sử dụng các đường dẫn có tên, bây giờ bạn kéo toàn bộ công nghệ này vào triển khai Máy chủ SQL của mình. Điều đó dường như không khôn ngoan trên cơ sở chung.
usr

1
đã đồng ý. Cho đến nay tcp: dường như đang giải quyết vấn đề. Chúng tôi đang chờ một chút để gọi nó xác nhận mặc dù.
ccook

Câu trả lời:


18

Tôi thích TCP / IP hơn các ống được đặt tên, mặc dù trong hầu hết các tình huống sẽ không có sự khác biệt đáng chú ý. Bạn có thể làm điều này bằng cách điều chỉnh các giao thức được hỗ trợ bởi cá thể trong Trình quản lý cấu hình máy chủ SQL thay vì những thứ mã hóa cứng trong chuỗi kết nối của bạn (điều này giúp dễ dàng thực hiện các thay đổi hoặc khắc phục sự cố).

Về cơ bản, việc định tuyến và các chi phí khác liên quan đến các đường dẫn có tên (trừ khi các ứng dụng của bạn nằm trên cùng một máy với SQL Server, trong trường hợp đó chỉ có thêm một chút chi phí) làm cho nó trở thành tùy chọn kém hiệu quả hơn, đặc biệt là ở quy mô, trong môi trường mạng chậm hơn (100MB trở xuống) hoặc nếu khối lượng công việc của bạn tăng theo từng đợt.

Nếu các ứng dụng của bạn nằm trên cùng một hộp với SQL Server, bạn cũng nên ghi nhớ bộ nhớ chung - nếu bạn có các ứng dụng trên hộp SQL Server giao tiếp trực tiếp với SQL Server, đây sẽ là tùy chọn hiệu quả nhất.

Bạn có thể đọc về lợi thế hiệu suất của TCP / IP chi tiết hơn .


Vì vậy, về cơ bản nó không quan trọng lắm nhưng thường được dùng với TCP vì không có lý do nào để chọn các đường ống được đặt tên. Bạn có đồng ý với bản tóm tắt đó không?
usr

1
@usr Vâng, nó quan trọng khi bạn mở rộng quy mô, hoặc nếu mạng của bạn tệ. Nhưng vâng, nói chung, không có lợi ích thực sự nào khi chọn ống có tên trong mọi trường hợp, mà tôi biết.
Aaron Bertrand

7

Giao thức có tên là hữu ích cho ứng dụng được thiết kế xung quanh NetBIOS hoặc các giao thức dựa trên mạng LAN khác.

Named Faucet cung cấp quyền truy cập dễ dàng vào các cuộc gọi thủ tục từ xa (RPC) trong một miền bảo mật duy nhất và do đó có lợi cho các ứng dụng này.

Thông thường Giao thức TCP là tốt trong thực tế vì bạn không phải quan tâm đến tất cả những điều này trên mạng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.