2012-06-01 30 views
6

Nữ và gents -Lý do KHÔNG sử dụng Máy chủ Liên kết trong SQL Server?

Tôi đang làm việc với người đã đề xuất sử dụng máy chủ được liên kết với (Informix) trong SQL Server. Họ đã tìm thấy (vì lý do không rõ) rằng họ có may mắn hơn với các công cụ khách hàng kết nối với SQL, và SQL Server ủy quyền các thống kê SQL đến Informix sau đó chỉ các công cụ máy khách trực tiếp tại Informix. Suy nghĩ của tôi, tất nhiên là "Giải quyết vấn đề kết nối của khách hàng> Informix, không sử dụng hack" - nhưng đó là ngoài điểm và có thể không được thương lượng bởi bạn thực sự.

Điều đó đang được nói, những nguy hiểm của phương pháp này về hiệu suất là gì?

  • TẤT CẢ các truy vấn sẽ đạt một db duy nhất trên Informix và chúng tôi sẽ không cần làm bất kỳ JOIN không đồng nhất giữa bảng SQL gốc và Informix. SQL Máy chủ nghĩa đen hoạt động như không có gì hơn là một máy chủ proxy/dữ liệu.
  • Hầu hết các truy vấn được thực hiện cũng sẽ thực hiện một số tiền hợp lý của nhóm và tổng hợp, vì vậy (với may mắn) chúng tôi sẽ không di chuyển tấn và tấn hàng giữa các hộp.

Câu hỏi của tôi:

bất cứ ai có thể xác định kịch bản mà một "GROUP BY" Câu hỏi bắn vào SQL Server sẽ gây ra các cá nhân, hàng hột để được trả lại cho SQL Server và tổng hợp vs trên Informix ? Đó là ngày tận thế xa như tôi đang quan tâm.

Có các tác động hiệu suất khác (xấu) khi sử dụng máy chủ được liên kết trong loại tình huống này mà tôi cần biết (và sử dụng như cách đơn giản hóa giải pháp và chuyển khách hàng> Informix)?

Cảm ơn!

Trả lời

8

Nếu bạn sử dụng máy chủ liên kết trên một truy vấn trực tiếp từ SQL Server về hình thức:

SELECT Col1, col2, col3, SUM(col4) 
FROM LinkedServer.Database.schema.Table 
GROUP BY Col1, col2, col3 

Sau đó, nó sẽ thực hiện các quy tụ trên SQL Server. Nhưng nếu bạn sử dụng OPENQUERY hoặc OPENROWSET, thì nó sẽ thực hiện truy vấn trên máy chủ được liên kết và sau đó truy xuất dữ liệu đến SQL Server:

SELECT * 
FROM OPENQUERY(LinkedServer, ' 
SELECT Col1, col2, col3, SUM(col4) 
FROM Database.schema.Table 
GROUP BY Col1, col2, col3') 
+0

Oh boy! Để tôi nói thẳng. Trong trường hợp 1, * tất cả * hàng đáp ứng dòng tiêu chí mệnh đề WHERE cho SQL Server từ Informix được tổng hợp. Trong Kịch bản 2, tất cả đều xảy ra trên Informix và chỉ có bộ dữ liệu "trả lời" quay lại. Đó có thể là viên đạn tôi cần! –

+0

@RussellChristopher - Vâng, đó là những gì tôi đang nói (mặc dù tôi không thực sự chắc chắn nếu nó thực hiện 'WHERE' trên Informix hoặc SQL Server). Trong mọi trường hợp, bạn vẫn cần máy chủ được liên kết của mình, nhưng cách bạn sử dụng nó tạo ra sự khác biệt lớn – Lamak

+0

Sử dụng OPENQUERY tạo nên sự khác biệt lớn, cổ vũ. Tôi cũng có sự bất hạnh khi phải liên kết đến một máy chủ Informix cổ đại (v7.23C1). – akiller

Các vấn đề liên quan