2009-03-13 27 views
8

Thông qua dịch vụ web, máy tính từ xa sẽ gửi một tập hợp các hàng để chèn vào máy chủ sql trung tâm của chúng tôi.Cách nhanh nhất để chèn hàng loạt vào máy chủ sql

Cách tốt nhất (hiệu suất khôn ngoan) để chèn các hàng này là gì? Có thể có từ 50-500 hàng để chèn mỗi lần.

Tôi biết tôi có thể thực hiện chèn hàng loạt hoặc định dạng dữ liệu dưới dạng XML chèn nó theo cách đó, nhưng tôi chưa bao giờ thực hiện việc này trong cài đặt doanh nghiệp trước đây.

Cập nhật sử dụng dịch vụ web wcf (hoặc có thể không chắc chắn) và tiêu chuẩn SQL Server 2008.

+1

Nói phiên bản của máy chủ SQL thực sự tạo sự khác biệt. – AnthonyWJones

Trả lời

3

Đây là loại dịch vụ web nào?

Nếu đó là Net, thường là cách tốt nhất là để tải các đầu vào vào một DataTable, sau đó bắn nó lên đến máy chủ SQL bằng cách sử dụng lớp SqlBulkCopy

5

Trừ khi bạn đang chạy trên một máy tính 10 tuổi , 50-500 hàng không phải là rất nhiều; bạn thực sự có thể gửi qua các câu lệnh SQL và đưa chúng trực tiếp vào cơ sở dữ liệu và có được hiệu suất tuyệt vời. Giả sử bạn tin tưởng các dịch vụ gửi dữ liệu cho bạn, tất nhiên :-)

Nếu hiệu suất thực sự là vấn đề gửi qua tệp bcp là cách nhanh nhất để làm kẹt dữ liệu trong cơ sở dữ liệu. Có vẻ như câu hỏi của bạn là bạn đã biết cách làm điều này.

+0

Tôi đã có một máy tính 10 năm tuổi chạy SQL server 2000, nó sẽ không số lượng lớn tại một chèn hàng 500. ;) – AnthonyWJones

+0

Có bộ nhớ chính lớn hơn 32MB không? –

2

50-500 hàng không phải là vấn đề! Không cần phải thực hiện điều chỉnh hiệu suất! Làm các câu lệnh SQL chuẩn (chuẩn bị) trong ứng dụng của bạn.

Đừng giết nó với sự phức tạp và quá tải.

Khi bạn nên chèn hơn 250.000 hàng, bạn nên suy nghĩ về chia tỷ lệ!

Không bật các ràng buộc, bạn có thể giết DB.

4

Chỉ 50-500 bản ghi không cấu thành "chèn hàng loạt". Cơ chế chèn số lượng lớn được thiết kế cho việc nhập dữ liệu thực sự khổng lồ để được theo dõi ngay lập tức với một bản sao lưu.

Trong dịch vụ web, tôi chỉ cần chuyển XML vào máy chủ SQL. Các chi tiết cụ thể sẽ phụ thuộc vào phiên bản.

+0

sql server 2008. Nhưng nếu tôi có hàng ngàn khách hàng tải lên dữ liệu. – bigint

+0

Hàng nghìn khách hàng? Làm thế nào có thể các bài viết như vậy mỗi ngày?Có lẽ một cách khác để xem xét nó là có bao nhiêu hồ sơ trong khoảng thời gian hoạt động của ứng dụng trong một ngày để bạn mong đợi được chèn vào tổng số? – AnthonyWJones

2

Để echo tất cả các câu trả lời khác, 500 hàng không có vấn đề gì đối với máy chủ SQL. Nếu bạn cần phải chèn một số lượng lớn các hồ sơ, cách nhanh nhất là với một proc built-in được lưu trữ gọi là BulkInsert,

BulkInsert

mà (I Believe) là một điểm mấu chốt để một tiện ích SQL Server thiết kế cụ thể để thực hiện việc này được gọi là bcp.exe

bcp

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