На системному диску не вистачає місця під час запуску важких запитів SQL на SQL Server 2012


14

Я зовсім новачок у SQL Server 2012, буду вдячний, якщо хтось може допомогти. Я відновив копію величезної бази даних на SQL Server 2012 і спробував запустити проти неї кілька простих запитів.

Я намагаюся запустити SELECT запит проти таблиці 136898115рядків бази даних . Цей SELECTзапит має лише просте WHEREзастереження. Кожен раз, коли я запускаю цей запит, він виходить з ладу, оскільки на системному диску (розділі, де встановлена ​​Windows C:\) не вистачає місця (у цього розділу є лише 6 Гб вільного місця), і я не розумію, чому. Я визначив свій tempdb, щоб він був на іншому накопичувачі, який має більше 14 терабайт вільного місця. Звичайно, моя база даних також знаходиться на іншому диску.

Чому у мого системного розділу не вистачає місця? Це файл сторінки?


2
їм не вистачає місця у системі, де працює SSMS, але це та сама машина. я використовую SSMS на фактичному SQL-сервері.
royv

2
Як правило, рекомендується не запускати будь-які інші програми на вікні Windows SQL Server (а не SSMS) або переконайтесь, що максимальна настройка пам'яті є достатньо низькою, щоб забезпечити достатню кількість вільної оперативної пам’яті. Дивіться мою відповідь тут: dba.stackexchange.com/a/19776/2718
Джон Сейгель

Відповіді:


12

Кеш результатів запитів SSMS на диск C: за замовчуванням. Перейдіть до Інструмента \ Параметри. Додається. Змініть це на інший об'єм із більшою кількістю пам’яті, і вам слід буде добре.

введіть тут опис зображення


1
Якщо ви виберете «Результати у файл», саме там за замовчуванням відкривається діалогове вікно «Зберегти як». Я не думаю, що SSMS зберігає набори результатів на диску за замовчуванням, але я можу помилитися.
Джон Сейгель

1
Результати, отримані у вікні запиту, кешуються в моїй публікації. Перевірте свій привід, запустіть великий запит у SSMS та перевірте ще раз. Ви побачите втрату пам’яті на диску C: якщо ви не вказали інше.
Ерік Хіггінс

1
це правда. це не пов’язано з файлом моєї сторінки. я перемістив файл своєї сторінки на інший диск, і все ж у мого диска C: не вистачало місця.
ройв

11

Гаразд, я зрозумів це: ми з Еріком мали рацію!

  • Як я вже говорив, шлях у діалоговому вікні - це лише шлях за замовчуванням для збереження результатів запитів.
  • Результати запиту будуть кешируєтся на диск (я був неправий), але в локальному профілі тимчасової папки ( C:\Users\<UserName>\AppData\Local\Tempв моєму випадку тут). Я перевірив, і, очевидно, не існує очевидного способу вимкнути кешування.

Отже, такі вивезення:

  • Уникайте запуску SSMS безпосередньо у вікні SQL
  • Не використовуйте SELECT *з величезної таблиці в SSMS, якщо набір результатів не вміститься в папку профілю
  • Переконайтесь, що налаштування максимальної пам'яті SQL Server правильно налаштовано (це може чи не сприяло цій проблемі щодо росту файлів сторінки)

7

Я щойно зазнав того ж питання. Прочитавши відповіді вище, я виявив наступне.

Інструменти | Варіанти - це не відповідь. У мене було встановлено Y: диск, але я спостерігав, як запит пробіг та місця на C: накопичувач занурився від 2,9 ГБ до 5,04 МБ (до того, як я вбив запит).

Тому я подумав, що це, ймовірно, результати кешування (оскільки вони дуже великі, коли кожен рядок повертається з великим відрізком XML) до каталогу Temp. Це те, що Джон сказав, але він не знав, як ви це зміните.

Що я змінив там, де записані темп-файли, це відкрити мої змінні середовища та редагувати користувацькі змінні TEMP та TMP (для обох було встановлено C: \ Temp), щоб записати на Z: \ Temp.

Я можу підтвердити, що після цієї зміни я спостерігав, як запит створює дуже великий файл у моєму каталозі Z: \ Temp.


Чудова інформація, коли є процес, який вам доведеться пройти, щоб покращити простір HD для вашого vm та забезпечити достатньо мережевого сховища. Мені цікаво, хоча, якщо у вас є проблеми з мережею, швидкість передачі файлів із обмеженими можливостями, може рухатися поза вашим c: \ повільним виконанням запиту?
GibralterTop

Це було 3 роки тому, і я не можу точно згадати, які обставини були в той час. Зараз у мене є ноутбук з жалюгідною кількістю оперативної пам’яті та потужністю процесора, це вже інша історія. Я майже впевнений, що Z: диск був просто ще одним "локальним" приводом на моєму VM. Не впевнений, чому вони не позначили це D: або E: але ця частина була поза моїм контролем. Отже, для мене не було насправді проблеми з мережею.
Нік Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.