Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

lấy lại không gian sau khi chuyển các chỉ mục vào nhóm tệp

Trước đây tôi đã nhận thấy rằng việc thu nhỏ tệp dữ liệu thành các phần nhỏ hơn có thể hiệu quả hơn việc cố gắng thu nhỏ tất cả trong một lần. Nếu bạn đang cố gắng sử dụng một chiến lược tương tự thì bạn muốn làm điều gì đó như sau:

DECLARE @targetSize AS INT = 388000;
DECLARE @desiredFinalSize AS INT = 362000;
DECLARE @increment AS INT = 300;
DECLARE @sql AS VARCHAR(200);

WHILE @targetSize > @desiredFinalSize
BEGIN
    SET @sql = 'DBCC SHRINKFILE(''MyDataFileName'', ' + CAST(@targetSize AS VARCHAR(10)) + ');'
    SELECT @sql;
    EXEC(@sql);

    SET @targetSize = @targetSize - @increment; 
END  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục đã lưu trữ, phép nối bên trái cung cấp cho tôi các hàng trùng lặp, nhưng tôi muốn hàng trên cùng (1) cho mỗi bản ghi có cùng ID

  2. Chèn dữ liệu vào một dạng xem (SQL Server)

  3. Tự động thay đổi kiểu trả về của một hàm

  4. Cách tổng hợp các tài khoản

  5. SQL Server chọn giá trị ngẫu nhiên (hoặc đầu tiên) với tổng hợp