Nhóm chính là SQL Server 2008 đầy đủ


15

Tôi có một bảng lớn (~ 50 triệu hàng) Tôi đang cố gắng chèn hàng loạt vào SQL Server và tôi gặp lỗi:

Không thể phân bổ không gian cho đối tượng 'myDB' trong cơ sở dữ liệu 'I 3 Stroke' vì nhóm tệp 'PRIMARY' đã đầy. Tạo không gian đĩa bằng cách xóa các tệp không cần thiết, thả các đối tượng trong nhóm fileg, thêm các tệp bổ sung vào filegroup hoặc cài đặt tự động bật cho các tệp hiện có trong filegroup.

Có một bảng khác trong cơ sở dữ liệu với khoảng 25 triệu hàng. Cơ sở dữ liệu này sẽ chỉ được sử dụng trên một máy duy nhất và nó sẽ được thiết kế để khai thác dữ liệu đã tồn tại và trong mọi trường hợp sẽ không vượt quá kích thước hiện tại.

Đối với một tình huống như thế này, cách tốt nhất để giải quyết vấn đề này là gì để SQL Server không phàn nàn? Giải pháp cho vấn đề DB này sẽ không được tiếp xúc với nhiều người dùng chứ?


2
Bạn cần thêm nhiều không gian hơn vào cơ sở dữ liệu hoặc loại bỏ các đối tượng không sử dụng. Câu hỏi của bạn là gì?
Gordon Linoff

@GordonLinoff khi cơ sở dữ liệu được tạo, filegroup được thiết kế để có sự tăng trưởng không giới hạn, nhưng tôi vẫn gặp phải vấn đề này. Tôi hy vọng sẽ tìm ra cách để ngăn chặn điều này xảy ra lần nữa.
wootscootinboogie

1
Bạn có nhiều không gian đĩa vật lý có sẵn? Nếu vậy, hãy kiểm tra nhật ký lỗi của SQL Server và xem liệu có thêm thông tin về lý do tại sao quá trình tự động không thành công.
Kevin

Bạn vui lòng xác nhận rằng có đủ dung lượng đĩa trống? Đây là nguyên nhân chính đáng duy nhất, ngoại trừ tăng trưởng tệp bị hạn chế (mà bạn nói không phải là trường hợp).
usr

1
Có thể bạn đang đạt giới hạn kích thước db của phiên bản sql express.
Bruno Martinez

Câu trả lời:


17

Thực hiện theo các bước sau:

  1. Xác định dung lượng bạn muốn thêm vào phân bổ lưu trữ cơ sở dữ liệu:
    1. Mở cửa sổ thám hiểm
    2. Nhấp chuột phải vào ổ đĩa mà tập tin cơ sở dữ liệu của bạn tồn tại
    3. Chọn thuộc tính
    4. Kiểm tra dung lượng đĩa trống là bao nhiêu và quyết định bạn muốn phân bổ bao nhiêu dung lượng cho cơ sở dữ liệu
      ( Gợi ý: Để lại ít nhất 20% dung lượng đĩa trống nếu bạn lưu trữ các tệp cơ sở dữ liệu trên cùng một đĩa với HĐH của bạn { Đề xuất phụ : Don sẽ làm điều này! Xây dựng lại / di chuyển dữ liệu của bạn sang đĩa riêng của nó, bạn đang tự vặn mình vào I / O.} và để lại ít nhất 8% cho một đĩa dữ liệu thuần túy, những con số này là ước tính của những gì tôi nghĩ là tỷ lệ phần trăm thực tế là. )
  2. Cập nhật phân bổ lưu trữ cho cơ sở dữ liệu.
    1. Mở SSMS
    2. Nhấp vào tab "Xem"
    3. Chọn "Đối tượng thám hiểm"
    4. Mở rộng thư mục "Cơ sở dữ liệu"
    5. Nhấp chuột phải vào cơ sở dữ liệu mà bạn đang cố gắng chèn số lượng lớn vào
    6. Chọn "Thuộc tính"
    7. Nhấp vào tùy chọn danh sách "Tệp" từ khu vực "Chọn trang" ở bên trái cửa sổ thuộc tính
    8. Tìm hàng "Tệp cơ sở dữ liệu" với "Tập đoàn" là "CHÍNH"
    9. Thêm bất kỳ số megabyte nào bạn muốn thêm vào phân bổ cơ sở dữ liệu vào số "Kích thước ban đầu (MB)"
    10. Nhấn "OK"
      ( Bạn cũng có thể muốn xem xét các giá trị "Tự động phát triển" của mình khi bạn ở đây. )

Bạn muốn cung cấp cho cơ sở dữ liệu của bạn nhiều phân bổ lưu trữ như bạn có thể đủ khả năng để cung cấp cho cơ sở dữ liệu. Nếu nó hết dung lượng, bạn sẽ nhận được lỗi này mà không tự động phát triển và nếu tự động phát triển, bạn sẽ đạt được hiệu suất mỗi khi nó tự động phát triển. Nếu bạn chỉ đơn giản là hết dung lượng đĩa thì đó là câu trả lời của bạn và bạn cần một đĩa lớn hơn.


1
Không phải tất cả chúng ta đều muốn DIsK lớn hơn sao? : P
Santa

12

Express Edition 2014 có giới hạn 10 GB cho mỗi cơ sở dữ liệu. Nếu tự động phát triển cơ sở dữ liệu chạm vào điểm đó, SQL Server sẽ ném thông báo lỗi (tối nghĩa?), Không đề cập đến giới hạn giấy phép. Có thể có nhiều dung lượng đĩa nhưng bạn vẫn thấy thông báo này.

Biện pháp khắc phục nếu thiết kế cho phép: sử dụng nhiều cơ sở dữ liệu theo giấy phép này.


1

Cơ sở dữ liệu thường hết dung lượng khi chúng ở chế độ khôi phục hoàn toàn. Nếu bạn không thực hiện giao dịch và sao lưu thủ công là đủ, thì bạn có thể thay đổi chế độ khôi phục thành đơn giản.

Bạn cũng có thể cần khôi phục không gian từ tệp nhật ký. . . nó có thể được làm trống nhưng vẫn sử dụng không gian.

Tuy nhiên, tốt hơn hết bạn nên đặt câu hỏi này cho các DBA, những người có thể đưa ra nhiều giải pháp hơn.


Đây không phải là một vấn đề tăng trưởng đăng nhập thất bại. Tăng trưởng dữ liệu thất bại.
usr

@usr. . . Họ có thể chiếm cùng một không gian đĩa bên dưới. Vấn đề là thiếu không gian đĩa.
Gordon Linoff

Ông nói không gian đĩa có sẵn. Tôi hỏi rõ ràng vì tôi cũng nghi ngờ.
usr

Bao nhiêu dung lượng đĩa có sẵn / miễn phí? Kích thước hiện tại của tất cả các tệp trong nhóm tệp chính là gì và cài đặt tăng trưởng của chúng là gì? Có thể gia tăng tăng trưởng lớn hơn không gian trống có sẵn.
dùng9164

1

Theo kinh nghiệm của tôi, thông báo này xảy ra khi tệp chính (.mdf) không có khoảng trống để lưu siêu dữ liệu của cơ sở dữ liệu. Tệp này bao gồm các bảng hệ thống và họ chỉ lưu dữ liệu của họ vào đó.

Tạo một số khoảng trống trong tệp và các lệnh hoạt động trở lại. Đó là tất cả, Hãy tận hưởng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.