Ошибка при выполнении команды сжатия базы данных sql server

#sql-server #dbcc #shrink

#sql-сервер #dbcc #сжатие

Вопрос:

Я выполняю эти команды из консольного приложения

 DBCC SHRINKFILE (@FILE_NAME_MDF, 0) WITH NO_INFOMSGS
DBCC SHRINKFILE (@FILE_NAME_LDF, 0) WITH NO_INFOMSGS
  

и получение этой ошибки

Не удалось уменьшить базу данных XXX Не удается создать строку размером 8126, которая превышает допустимый максимальный размер строки 8060. Выполнение инструкции было завершено. System.Data.SqlClient.SQLException (0x80131904): не удается создать строку размером 812,6, которая превышает допустимый максимальный размер строки 8060.

Буду признателен за любую помощь.

Ответ №1:

Похоже, ваша проблема здесь в том, что строка в вашей базе данных находится вблизи границы максимально допустимого размера, и когда запускается DBCC SHRINKFILE, он добавляет больше данных в эту строку и выводит ее за пределы. Я бы посмотрел на ваши таблицы, чтобы увидеть, есть ли одна, превышающая ограничения по размеру, и посмотреть, не можете ли вы изменить ее для хранения некоторых данных вне строки. Например, если у вас очень большое поле nvarchar, вы могли бы изменить его на ТЕКСТ, что позволит вам сохранить эти данные на отдельной странице.