Truy vấn không đồng nhất của người Viking là gì?


14

Tôi nhận được thông báo lỗi sau về truy vấn SQL tôi đang chạy trong một chương trình. Máy chủ SQL 2005 T-SQL.

Các truy vấn không đồng nhất yêu cầu ANSI_NULLSANSI_WARNINGScác tùy chọn được đặt cho kết nối. Điều này đảm bảo ngữ nghĩa truy vấn nhất quán. Kích hoạt các tùy chọn này và sau đó phát hành lại truy vấn của bạn. (mức độ nghiêm trọng 16)

Sửa nó rất dễ, thiết lập ANSI_NULLSANSI_WARNINGS ON, nhưng tôi muốn biết thế nào là một truy vấn không đồng nhất. Một tìm kiếm Google đưa ra hàng tá kết quả cho tôi biết ANSI_NULLSANSI_WARNINGSkhông có gì giải thích thuật ngữ này có nghĩa gì. Truy vấn là:

UPDATE SRV.DB.DBO.TABLE SET Column=
            (SELECT Column 
            FROM SRV1.DB.DBO.TABLE)

Tôi nghĩ rằng điều này là do kết nối với nhiều công cụ cơ sở dữ liệu trong một truy vấn, vì tôi chưa bao giờ gặp phải lỗi này.
Có phải "không đồng nhất" chỉ đề cập đến việc truy vấn hai công cụ cơ sở dữ liệu khác nhau trong ngữ cảnh này?

Câu trả lời:


8

Có phải "không đồng nhất" chỉ đề cập đến việc truy vấn hai công cụ cơ sở dữ liệu khác nhau trong ngữ cảnh này?

Về cơ bản, có. Một truy vấn "không đồng nhất" được thực hiện trên "máy chủ được liên kết không đồng nhất".Tất cả các truy vấn đến máy chủ được liên kết này sẽ không đồng nhất.

Và "không đồng nhất" là một tập hợp con của các truy vấn phân tán

  • Dữ liệu phân tán được lưu trữ trong nhiều phiên bản của SQL Server.
  • Dữ liệu không đồng nhất được lưu trữ trong các nguồn dữ liệu quan hệ và không liên quan khác nhau được truy cập bằng cách sử dụng nhà cung cấp OLE DB.

Nhưng "không đồng nhất" bật lên mọi lúc:

Xem các máy chủ liên kết trên MSDN

Khả năng đưa ra các truy vấn, cập nhật, lệnh và giao dịch phân tán trên các nguồn dữ liệu không đồng nhất trên toàn doanh nghiệp.

sp_addlinkedserver

Một máy chủ được liên kết cho phép truy cập vào các truy vấn không đồng nhất , phân tán đối với các nguồn dữ liệu OLE DB.

Và một ví dụ MSDN về truy vấn Active Directory trong "Tham gia dữ liệu không đồng nhất"

Và MSDN một lần nữa "Sao chép cơ sở dữ liệu không đồng nhất"


6

Theo sự hiểu biết tốt nhất của tôi, vâng.

Một vấn đề mà tôi thấy với truy vấn của bạn là bạn không có cách nào để biết hàng nào sẽ quay trở lại từ bảng được liên kết của bạn. Đây chỉ là mã giả hoặc truy vấn của bạn được viết theo cách này?


Đó là mã giả, có một cột duy nhất tôi đang tìm nạp từ 40 cơ sở dữ liệu và lưu vào bảng "báo cáo trạng thái" chỉ các giá trị đó.
Ben Brocka

1
Ồ được thôi. Chỉ muốn đảm bảo rằng bạn biết rằng giá trị được đặt vào cột đó trên Srv.db.dbo.table có thể khác nhau tùy thuộc vào phiên bản SQL Server nào bạn đang chạy mã. Cụ thể từ SQL 2005 đến SQL 2008 bằng cách sử dụng mã được đăng, bạn sẽ nhận được một giá trị khác.
mrdenny

Bây giờ bạn đã khiến tôi quan tâm, vấn đề tiềm ẩn là gì, chỉ là tôi không biết tôi đang nhận được hàng nào? Bảng chỉ có một hàng duy nhất trong trường hợp này, đó là lý do tại sao không có WHERE trong truy vấn con.
Ben Brocka

Nếu có nhiều hàng trong bảng, với SQL 2005 bạn sẽ có hàng đầu tiên. Với SQL 2008, bảng mới sẽ có hàng thứ hai. (Tôi có thể có điều đó ngược lại.)
mrdenny

Tôi rất thích một bài viết từ MS giải thích chính xác "truy vấn không đồng nhất" thực sự là gì nhưng có vẻ như một thứ như vậy không tồn tại nên tôi đánh dấu chính xác điều này.
Ben Brocka

1

Không đồng nhất chỉ có nghĩa là khác nhau. Vì vậy, một truy vấn không đồng nhất nằm trong một cơ sở dữ liệu và đang truy vấn cơ sở dữ liệu KHÁC BIỆT. Vì các cơ sở dữ liệu là khác nhau, nó mang đến khả năng các cài đặt khác nhau có thể gây ra kết quả khác với dự định.

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.