2012-04-20 15 views
6

Tôi có tệp của tệp .sql dài khoảng 22.000 dòng. Nó được tạo ra bởi một cái gì đó khác, nhưng về cơ bản chỉ chứa một tuyên bố cập nhật cho mỗi dòng.Tệp SQL dài chạy SQL Server hết bộ nhớ (22.000 dòng)

Tôi gặp lỗi này khi chạy tệp trong SQL Server Management Studio.

Không có đủ bộ nhớ hệ thống trong hồ bơi tài nguyên 'nội' để chạy truy vấn này

Tôi nghĩ rằng tôi chỉ cần chia nhỏ tập tin truy vấn này, nhưng tôi không chắc chắn cách tốt nhất để đi về nó. Tôi có thể cắt tập tin thành 2000 khối dòng hoặc một cái gì đó tôi giả sử.

Điều này có vẻ như là một vấn đề đơn giản, và tôi sẽ làm điều này thường xuyên đủ Tôi muốn đưa ra một giải pháp tốt. Bất kỳ ý tưởng?

+2

22000 cập nhật các âm thanh như nội dung nào đó không được thực hiện ngay. Không có cách nào để làm cho một hoạt động dựa trên tập hợp hơn? –

+0

Cũng được tạo ra từ một bảng tính excel mà một công cụ rất chuyên biệt tạo ra.Bảng tính có các dòng X cần cập nhật các hàng tương ứng trong cơ sở dữ liệu, nhưng đây là một công cụ rất cũ và chỉ xuất ra Excel. – BurntToast

+4

Cuộc sống của bạn hút. :) Excel là lệnh cấm của bất kỳ DBA nào. –

Trả lời

5

Bạn có thể muốn xem xét việc chạy tập lệnh của mình qua SQLCMD thay vì duyệt qua giao diện GUI SSMS.

3

Có thể bạn đang đạt đến giới hạn về kích thước lô, vì vậy SQL Server đang gặp sự cố khi phân tích cú pháp lô. Nếu bạn có thể chạy trong khoảng ~ 5000 khối dòng (đánh dấu, Thực thi) thì điều đó sẽ xác nhận lý thuyết của tôi.

Một khi bạn biết kích thước hàng loạt đúng xuống, bạn có thể:

  1. báo cáo Chèn GO ở giữa, để buộc một lô mới
  2. Split tới nhiều file

Một vỏ nhỏ scripting cũng đủ cho một trong hai. Số UnxUtils của split, headtail sẽ hữu ích.

2

Tôi đã có vấn đề tương tự và chạy dưới lệnh trong dấu nhắc lệnh từ blog lưu tôi.

sqlcmd -S YOURSQLSERVER\INSTANCENAME -i "C:\Your Script.sql" 
0

Bạn có thể cấp phát bộ nhớ hơn để máy chủ của bạn, với giải pháp này:

  1. Trong Object Explorer, kích chuột phải vào một máy chủ và chọn Properties.
  2. Nhấp vào nút Bộ nhớ.
  3. Trong Tùy chọn bộ nhớ máy chủ, nhập số tiền bạn muốn cho Bộ nhớ máy chủ tối thiểu và bộ nhớ máy chủ tối đa.

mặc định tối đa là 2147483647, tôi đổi thành 9147483647 và sự cố của tôi đã được giải quyết.

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