2015-06-29 34 views
6

Khi thực hiện So sánh dữ liệu bằng cách sử dụng Công cụ dữ liệu SQL Server thông qua VS 2013 pro, tôi có một kịch bản mà một số bảng có vẻ bị bỏ lỡ.So sánh dữ liệu SQL - Một số bảng thiếu

Điều tôi muốn nói là có dữ liệu trong TableA trên máy chủ nguồn nhưng không có dữ liệu trong bảng tương đương trên máy chủ đích.

Tuy nhiên, cửa sổ kết quả thậm chí không hiển thị hàng cho TableA.

Ngoài ra nếu tôi cố gắng lọc kết quả trong bước tiếp theo trước khi nhấn "Hoàn tất", TableA không xuất hiện dưới dạng tùy chọn để lọc theo. Nó gần như là nếu bảng không tồn tại trên máy chủ đích. Tôi đã xác minh đó là thực hiện bằng cách:

  • Kết nối thông qua SSMS và xem danh sách các bảng
  • Chạy SELECT * FROM information_schema.tables

Trong cả hai trường hợp tôi có thể thấy bảng được liệt kê.

Có ai khác nhìn thấy điều này không? Tôi đang thiếu gì?

+0

Chỉ có thể so sánh dữ liệu nếu bạn biết phải so sánh bản ghi nào từ bảng. Trình so sánh sử dụng PK để biết bản ghi nào cần so sánh. Nếu bảng của bạn không có PK (hoặc ít nhất là một chỉ mục duy nhất), nó bị thiếu trong danh sách bảng – jean

+0

Cảm ơn Jean, đó là vấn đề. Tôi đang làm việc với một DB được cung cấp bởi người khác và đã không phát hiện ra rằng không có PK trên bảng này (có thực sự là một vài người khác với cùng một vấn đề quá). Thêm bình luận của bạn làm câu trả lời và tôi sẽ chấp nhận nó. –

Trả lời

13

Dữ liệu có thể được so sánh chỉ khi bạn biết bản ghi nào từ bảng phải được so sánh. Comparer sử dụng PK để biết bản ghi nào để so sánh. Nếu bảng của bạn không có PK (hoặc ít nhất là một chỉ mục duy nhất), nó bị thiếu trong danh sách bảng.

Bạn có thể giải quyết bằng cách tự tạo PK (chỉ để so sánh)

+0

Tôi có cùng vấn đề nhưng bảng có PK? Nó có một PRIMARY KEY CLUSTERED – KillerSnail

+0

Cả hai bảng phải nhận được một số loại cột/chỉ mục "duy nhất", Thông thường (ý tưởng) một PK là duy nhất. Chỉ số CLUSTERED có lẽ là duy nhất – jean

+5

Microsoft nên đưa ra một số chỉ báo/thông báo rằng một số bảng nhất định cần có khóa chính để so sánh. Người dùng cần thêm phản hồi trên màn hình đầu ra, bởi vì điều này không rõ ràng khi chúng tôi chạy so sánh. Cảm ơn câu trả lời này! –

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