Đĩa hệ thống hết dung lượng khi chạy các truy vấn SQL nặng trên SQL Server 2012


14

Tôi còn khá mới với SQL Server 2012, tôi sẽ rất biết ơn nếu ai đó có thể giúp đỡ. Tôi đã khôi phục một bản sao của một cơ sở dữ liệu khổng lồ cho SQL Server 2012 và tôi đã cố chạy một số truy vấn đơn giản đối với nó.

Tôi đang cố chạy một truy vấn CHỌN đối với bảng 136898115dòng cơ sở dữ liệu . SELECTTruy vấn này chỉ có một WHEREmệnh đề đơn giản . Mỗi lần tôi chạy truy vấn này, nó không thành công do đĩa hệ thống (phân vùng nơi Windows được cài đặt - C:\) hết dung lượng (phân vùng này chỉ có 6GB dung lượng trống) và tôi không hiểu tại sao. Tôi đã xác định tempdb của mình nằm trên một ổ đĩa khác, có hơn 14 terabyte dung lượng trống. Tất nhiên cơ sở dữ liệu của tôi cũng nằm trên một ổ đĩa khác.

Điều gì làm cho phân vùng hệ thống của tôi hết không gian? Có phải là tập tin trang?


2
Tôi sắp hết dung lượng từ hệ thống, tôi đang chạy SSMS, nhưng cùng một máy. tôi đang sử dụng SSMS trên máy chủ SQL thực tế.
royv

2
Nói chung, không nên chạy bất kỳ ứng dụng nào khác trên hộp Windows của SQL Server ( không phải SSMS) hoặc để đảm bảo cài đặt bộ nhớ tối đa đủ thấp để cho phép đủ RAM trống. Xem câu trả lời của tôi ở đây: dba.stackexchange.com/a/19776/2718
Jon Seigel

Câu trả lời:


12

Theo mặc định, kết quả truy vấn SSMS vào ổ C :. Chuyển đến Công cụ \ Tùy chọn. Xem tệp đính kèm. Thay đổi điều này sang âm lượng khác với nhiều bộ nhớ hơn và bạn sẽ ổn.

nhập mô tả hình ảnh ở đây


1
Nếu bạn chọn Kết quả thành Tệp, đó là nơi hộp thoại Lưu dưới dạng mở theo mặc định. Tôi không nghĩ SSMS lưu tập kết quả vào đĩa theo mặc định, nhưng tôi có thể sai.
Jon Seigel

1
Các kết quả bạn nhận được trong cửa sổ truy vấn của bạn được lưu trong bộ nhớ cache của tôi. Kiểm tra ổ đĩa của bạn, chạy một truy vấn lớn trong SSMS và kiểm tra lại. Bạn sẽ thấy mất dung lượng, trên ổ C: nếu bạn không chỉ định khác.
Eric Higgins

1
đúng. nó không liên quan đến tập tin trang của tôi. tôi đã chuyển tập tin trang của mình sang một ổ đĩa khác và ổ đĩa C: của tôi đã hết dung lượng.
royv

11

Được rồi, tôi đã hiểu ra: Eric và tôi đều đúng!

  • Đường dẫn trong hộp thoại như tôi đã nói, chỉ là đường dẫn mặc định để lưu kết quả truy vấn.
  • Kết quả truy vấn được lưu vào đĩa (tôi đã sai), nhưng trong thư mục tạm thời hồ sơ cục bộ ( C:\Users\<UserName>\AppData\Local\Temptrong trường hợp của tôi ở đây). Tôi đã kiểm tra và dường như không có cách nào rõ ràng để tắt bộ đệm này.

Vì vậy, các điều khoản là:

  • Tránh chạy SSMS trực tiếp trên hộp SQL
  • Đừng SELECT *từ một bảng lớn trong SSMS trừ khi tập kết quả có thể vừa trong thư mục hồ sơ
  • Đảm bảo cài đặt bộ nhớ tối đa của SQL Server được cấu hình đúng (có thể có hoặc không có đóng góp cho vấn đề này liên quan đến tăng trưởng tệp trang)

7

Tôi vừa chịu một vấn đề tương tự. Sau khi đọc các câu trả lời ở trên, tôi tìm thấy như sau.

Công cụ | Tùy chọn không phải là câu trả lời. Của tôi đã được đặt thành ổ Y: Tôi đã xem khi truy vấn của tôi chạy và dung lượng trên ổ C: đã giảm từ 2.9GB xuống 5.04MB (trước khi tôi giết truy vấn).

Vì vậy, tôi nghĩ rằng đó có thể là kết quả lưu trữ (vì chúng rất lớn với mỗi hàng được trả về chứa một đoạn lớn XML) vào thư mục Temp, đó là những gì Jon nói tuy nhiên anh không chắc bạn sẽ thay đổi điều đó như thế nào.

Những gì tôi đã làm để thay đổi nơi các tệp tạm thời được viết là để mở Biến môi trường của tôi và chỉnh sửa biến Người dùng TEMP và TMP (cả hai đều được đặt thành C: \ Temp) để ghi vào Z: \ Temp.

Tôi có thể xác nhận rằng sau thay đổi này, tôi đã xem truy vấn tạo một tệp rất lớn trong thư mục Z: \ Temp của tôi.


Thông tin tuyệt vời khi có một quá trình bạn phải trải qua để nâng cấp không gian HD của vm và có nhiều bộ nhớ mạng. Mặc dù vậy, tôi hơi tò mò, nếu bạn gặp vấn đề về mạng làm tắc nghẽn tốc độ truyền tệp, có thể di chuyển ra ngoài hiệu suất truy vấn chậm c: \ của bạn không?
GibralterTop

Đó là 3 năm trước và tôi không thể nhớ chính xác hoàn cảnh lúc đó là gì. Bây giờ tôi có một máy tính xách tay với dung lượng RAM và khả năng xử lý khủng khiếp, đó là một câu chuyện khác. Tôi khá chắc chắn rằng ổ đĩa Z: chỉ là một ổ đĩa "cục bộ" khác trên máy ảo của tôi. Không chắc chắn tại sao họ không gắn nhãn D: hoặc E: nhưng phần đó nằm ngoài tầm kiểm soát của tôi. Vì vậy, đối với tôi thực sự không có vấn đề gì về mạng.
Nick Ryan
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.