У меня есть база данных SAP размером 2Tb + с 8 файлами данных, первые файлы выросли, чтобы заполнить доступное дисковое пространство на нашем HP EVA5000, и теперь рост происходит за счет новых файлов. Мы обновили SQL с SQL server 2000 до 2005, и Checkdb работает иначе, и теперь не работает из-за отсутствия места для создания моментального снимка. Мы добавили 50 ГБ для каждого файла в качестве временной меры, пока мы готовим новую подсистему ввода-вывода. Вопрос: как мы можем отслеживать использование снимков? Что будет, если Checkdb запустится теперь, когда на нем больше места, а затем заполнится? и можете ли вы отменить CheckDb, если увидите, что на нем закончится место?
О, я только что прочитал это вчера вечером в книге «Внутренние компоненты SQL Server 2008» (спасибо Полу Рэндалу). Если на нем заканчивается место, снимок удаляется. Я имею в виду, что в SQL 2005+ внутренний движок фактически создает моментальный снимок за кулисами и запускает checkdb для этого. Вы не можете получить доступ к этому снимку, поскольку он невидим для вас, но он по-прежнему занимает место в файловой системе, в которой находятся файлы. Если у него недостаточно места для создания этого снимка системы, он выдаст ошибку и откатит этот снимок.
Что вы можете сделать, так это вручную создать снимок базы данных на другом томе, на котором достаточно места, и запустить для него checkdb. Ваши результаты должны оставаться действительными, поскольку снимок представляет собой просто набор различий в изменениях страницы по сравнению с базовыми данными. Я уверен, что Пол мог бы ответить на этот вопрос более красноречиво, но это основная его суть.
Также да, вы можете отменить текущий запрос checkdb.
Взгляните на эту статью в блоге Пола, которая отвечает на ваши вопросы: