Tôi đang sử dụng Microsoft SQL Server 2014 - 12.0.4100.1 Enterprise Edition (64-bit) trên Windows NT 6.3 (Build 9600 :)
Tôi có một bảng 491 GB với 3,6 tỷ hàng không có khóa chính. Khóa chính tôi muốn thêm sẽ chỉ bao gồm một bigint
cột chứa các giá trị duy nhất. Cơ sở dữ liệu có 477 GB dung lượng trống, nhưng dường như điều đó là không đủ.
Cố gắng thêm nó không thành công với lỗi sau:
Không thể phân bổ không gian cho đối tượng 'dbo.SORT lưu trữ chạy tạm thời: 424251614560256' trong cơ sở dữ liệu '[Redacted]' 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.
Tên cơ sở dữ liệu trong lỗi là DB mà tôi đang cố thêm PK, không phải 'tempdb', đây là những gì tôi thường thấy trong loại lỗi này.
Lệnh tôi đang sử dụng:
ALTER TABLE REDACTED ADD CONSTRAINT [PK_REDACTED] PRIMARY KEY CLUSTERED
(
[RedactedId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Lúc đầu, lệnh bị lỗi sau 8-9 phút, sau đó DBA của tôi đã thêm một tệp dữ liệu khác vào DB trên một ổ đĩa có khoảng 150 GB dung lượng trống. Chạy nó lần thứ hai không thành công sau 24 phút. Đó là sự tiến bộ, nhưng tôi không biết cần bao nhiêu dung lượng trống, hoặc thực sự sẽ mất bao lâu để thêm chỉ số này. Hiện tại có 477 GB miễn phí trong cơ sở dữ liệu này, nhưng dường như vẫn chưa đủ để chạy loại này.
Có cách nào để tính toán cần bao nhiêu dung lượng để chạy lệnh này trên 3,6 tỷ bigint
giá trị không? Hoặc có một số mẹo khác sẽ giúp lệnh này thành công? Con số lớn đó có nghĩa là gì trong lỗi?
delete...output into
theo lô, với các hoạt động nhật ký kiểm tra / sao lưu thỉnh thoảng để ngăn nhật ký trở thành vấn đề không gian đĩa của bạn . Số chỉ là một id do hệ thống tạo ra.