2011-09-12 35 views
5

Tôi có 25 cơ sở dữ liệu cca mà tôi cần phải hợp nhất thành 1 cơ sở dữ liệu. Đầu tiên tôi đã cố gắng để xây dựng một gói SSIS đó sẽ sao chép tất cả dữ liệu từ mỗi bảng vào một nơi, nhưng sau đó tôi đã nhận lỗi:SSIS - lỗi bộ nhớ ngoài

Information: The buffer manager failed a memory allocation call for 10485760 bytes, but was unable to swap out any buffers to relieve memory pressure. 1892 buffers were considered and 1892 were locked. Either not enough memory is available to the pipeline because not enough are installed, other processes were using it, or too many buffers are locked.

Sau đó, tôi nhận ra đây không phải là ý tưởng tốt và tôi cần phải chèn chỉ kỷ lục mới và cập nhật những cái hiện có. Sau đó tôi đã thử tùy chọn này:

  • Nhận danh sách tất cả các kết nối. chuỗi
  • foreach db, sao chép hồ sơ mới và cập nhật những cái hiện có (những người mà cần phải được cập nhật phiên bản từ nguồn tới bảng tạm thời, xóa chúng khỏi đích và sao chép từ tạm thời để bảng điểm)

enter image description here

Sau đây là cách nhiệm vụ luồng dữ liệu trông giống như

enter image description here

Trong một số trường hợp dữ liệu chảy procceses hơn triệu hàng. NHƯNG, tôi vẫn nhận được cùng một lỗi - hết bộ nhớ.

Trong task manager tình hình là như sau:

enter image description here enter image description here

tôi phải lưu ý rằng có 28 cơ sở dữ liệu được lặp lại trên cùng một máy chủ này và khi gói này không chạy máy chủ sql vẫn còn sử dụng hơn 1gb bộ nhớ. Tôi đã đọc nó bình thường, nhưng bây giờ tôi không chắc chắn ...

Tôi đã cài đặt hotfix cho SQL Server tôi đã tìm thấy trong bài viết này: http://support.microsoft.com/kb/977190 Nhưng nó không giúp ... Tôi đang làm điều gì đó sai hay đây chỉ là cách mọi thứ hoạt động và tôi giả sử để tìm một giải pháp workaround?

Cảm ơn,
Ile

+0

bạn đã bôi đen gì? một quá trình "bí mật"? –

Trả lời

1

Tôi tìm thấy một giải pháp và vấn đề là trong SQL Server - nó được tiêu thụ quá nhiều bộ nhớ. Theo mặc định, bộ nhớ máy chủ tối đa được đặt thành 2147483647 (đây là giá trị mặc định). Kể từ khi máy chủ của tôi có RAM 4gb, tôi giới hạn con số này đến 1100 mb. Kể từ đó, không có vấn đề về bộ nhớ, nhưng vẫn còn, công việc của tôi rất chậm. Vấn đề là sử dụng Lookup. Theo mặc định, tra cứu chọn tất cả mọi thứ từ bảng tra cứu - tôi đã thay đổi cột này và chỉ chọn những gì tôi cần để tra cứu - nó đã buộc quá trình này nhiều lần.

Bây giờ toàn bộ quá trình hợp nhất mất khoảng 1: 15h.

3

Bạn có thể gặp các vấn đề bộ nhớ nếu chuyển đổi Lookup của bạn được đặt đầy đủ bộ nhớ cache. Từ những gì tôi đã thấy, Merge Join thực hiện tốt hơn so với chuyển đổi Lookup nếu số lượng hàng vượt quá 10 triệu.

Hãy xem phần sau đây, nơi tôi đã giải thích sự khác biệt giữa Hợp nhất Tham gia và tra cứu chuyển đổi.

What are the differences between Merge Join and Lookup transformations in SSIS?

+0

Tôi không thấy cách sử dụng Hợp nhất Tham gia để cập nhật các hàng ...Tôi cũng sẽ thử phương pháp đó nhưng tôi thiếu phần cập nhật ... Cảm ơn! –

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