Làm cách nào để kiểm tra xem tôi có đạt giới hạn kích thước Express Edition không?


10

Tôi bị bối rối. AFAIK SQL Server 2005 Express có giới hạn kích thước dữ liệu cơ sở dữ liệu 4GB . Tuy nhiên tôi có kết quả như sau :sp_spaceused

kích thước thực tế của cơ sở dữ liệu là gì

  1. Làm cách nào để kiểm tra xem DB của tôi có đạt giới hạn kích thước không?
  2. Là không gian chưa được phân bổ space leftcho đến khi tôi đạt đến giới hạn?
  3. Tôi còn bao nhiêu không gian?
  4. index_sizetính trong giới hạn?

Bạn có thể kiểm tra cột backup_size của msdb.dbo.backupset.

Câu trả lời:


6

Đây là một kịch bản hay mà tôi xấu hổ xé từ đây :

use [Insert DB Name]

select
a.FILEID,
[FILE_SIZE_MB] = 
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a

Điều này là tốt vì nó sẽ cung cấp cho bạn không gian trống trong mỗi tệp DB (bạn có thể có nhiều tệp và có lẽ ai đó đã thiết lập nó để đặt một số đối tượng trong mỗi tệp) cũng như kích thước miễn phí.

Ví dụ: bạn có tệp dữ liệu 4GB có 3 GB dung lượng trống. Có thể bạn có 1 MDF không có nhiều dữ liệu nhưng một NDF có nhiều dữ liệu. Truy vấn này sẽ cho bạn biết kích thước miễn phí trong mỗi tệp và DB mà tệp đó được phân bổ. Nhớ thêm tất cả 'SPACE_USED_MB' cho mỗi DB để có tổng kích thước.

Chúc may mắn!

Chỉnh sửa: Đã xóa một lệnh không được hỗ trợ và lỗi mà tôi nghĩ rằng tôi có thể thoát khỏi việc đăng bài ở đây cho truy vấn này. :



PS nếu bạn sẽ sử dụng các chế độ xem tương thích cũ, lạc hậu, bạn có thể đơn giản hóa điều này khá nhiều bằng cách sử dụng sysaltfiles(điều này phủ nhận sự cần thiết phải đi vào từng cơ sở dữ liệu).
Aaron Bertrand

1
Cảm ơn Aaron vì các sysaltfiles, tôi chưa nhìn vào cái đó! sp_msforeachdb có rất nhiều vấn đề nhức nhối, nhưng tôi đã tìm ra bản cài đặt SQL Express nơi anh chàng chỉ muốn chạy truy vấn để xem anh ta có bao nhiêu dung lượng trống.
Ali Razeghi

Ngoại trừ khi nó bỏ qua cơ sở dữ liệu và không phát sinh lỗi ...
Aaron Bertrand

Vâng, nhưng trong trường hợp này, bạn có thực sự nghĩ rằng đó sẽ là một vấn đề trong đó người dùng cuối chỉ muốn đếm kích thước db? Tôi đoán tôi không nên đăng nó ngay cả trong trường hợp người dùng cuối sẽ hoàn toàn thấy nếu nó bỏ qua DB mà họ đang tìm kiếm để nó không củng cố hành vi xấu. Tôi sẽ chỉ loại bỏ phần đó vào thời điểm này, bạn nói đúng, chúng tôi không cần lệnh đó được dán ở bất cứ nơi nào khác.
Ali Razeghi

5

Kích thước của cơ sở dữ liệu là kích thước của tệp. Nhìn vào kích thước thực tế của tệp dữ liệu (nhật ký giao dịch không được tính). Có chỉ số đếm. Nếu bạn sắp hết dung lượng, hãy xem xét nâng cấp lên SQL 2012 Express vì điều đó làm tăng giới hạn kích thước lên 10 Gigs.


6
SQL Server 2008 R2 Express cũng có giới hạn 10 GB (chỉ để hoàn thiện)
marc_s

1

Khi sp_spaceuse hiển thị cơ sở dữ liệu có kích thước khoảng 25 GB trong tập kết quả đầu tiên của bạn, bao gồm tệp / chỉ mục dữ liệu nhật ký giao dịch. Chỉ các dữ liệu và chỉ mục thực tế mới được tính vào các giới hạn SQL Server Express, do đó bạn có khoảng 3,3 GB dữ liệu (như trong tập kết quả thứ hai của bạn) và 22 GB còn lại sẽ là nhật ký giao dịch. Nếu bạn chạy "sp_helpdb", điều này sẽ hiển thị hình ảnh thực, vì nó báo cáo việc sử dụng dữ liệu và sử dụng nhật ký giao dịch trên hai hàng riêng biệt.

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.