2015-06-23 27 views
5

Dự án của tôi hiện có cơ sở dữ liệu chứa nhiều bảng, cột quan trọng nhất trong đó có một cột nhị phân với các mục rất lớn (đại diện cho các đối tượng C# được tuần tự hóa). Có một số lượng lớn các mục trong cơ sở dữ liệu sản xuất và khi gỡ lỗi, thường cần phải kéo các mục này vào cơ sở dữ liệu phát triển cục bộ (như việc gỡ lỗi từ xa dường như không hoạt động, đó là vấn đề riêng).Visual Studio So sánh dữ liệu với ít cột

Nếu tôi cố gắng so sánh các cơ sở dữ liệu cục bộ và sản xuất trên bảng này với tất cả các cột, việc so sánh có thể mất đến một giờ, hoặc cuối cùng hết thời gian, nhưng điều này đã hoạt động trong quá khứ và cho phép tôi tải xuống các mục nhập và gỡ lỗi chúng thành công. Nếu tôi so sánh trên tất cả các cột trong bảng nhưng cột dữ liệu nhị phân, so sánh gần như tức thì, nhưng cột đó không được chuyển sang cơ sở dữ liệu sản xuất.

Câu hỏi của tôi là: có cách nào để chạy so sánh dữ liệu giữa hai bảng không, ngoại trừ một cột cụ thể cho chính so sánh (các trường khác cung cấp đủ thông tin để phân biệt mà không có nó) nhưng bao gồm nó khi cập nhật cơ sở dữ liệu đích?

Trả lời

-1

Bạn có thể sử dụng hàm băm trên các trường varbinary lớn và so sánh các trường đó. HASHBYTES với MD5 là một phương pháp tốt để so sánh vì nó thiên về không tạo ra giá trị băm giống nhau cho hai đầu vào khác nhau. Vấn đề là, HASHBYTES chỉ hoạt động trên các trường lên tới 8000 byte. Có một số công việc xung quanh mặc dù bằng cách tạo ra một chức năng. Một vài đăng ở đây:

SQL Server 2008 and HashBytes

Bạn sẽ có tùy chọn lưu trữ các giá trị băm trong bảng của bạn tại thời điểm chèn hoặc cập nhật bằng cách sử dụng một cánh đồng tính vẫn kiên trì. Hoặc bạn chỉ có thể tạo ra các giá trị băm trong khi thực hiện truy vấn so sánh của bạn.

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