- Remove From My Forums
-
Question
-
While i am altering a column, getting a message as below.
Can anyone please help? It’s urgent.
alter table test alter column AvgCashAndInvestments numeric(19,0) NULL
The statement has been terminated.
Msg 682, Level 22, State 153, Line 3
Internal error. Buffer provided to read column value is too small. Run DBCC CHECKDB to check for any corruption.
Answers
-
Do you have latest backup..restote order shoud be Latest full backup(no recovery)…latest Diff backup taken after ful bkp(no recovery) and then rn log backps taken after diff backup u applied .
I thinks its best solution …
.I presume this is some hardware issue..no so sure about it..
Get ur harware checked may be some Bad sectors…
Also you can try running DBCC checkdb in single_user mode ( try if it allows) and post result here
Hope this helps.keep us posted
Please mark this reply as the answer or vote as helpful, as appropriate, to make it useful for other readers
-
Proposed as answer by
Monday, June 3, 2013 9:14 AM
-
Marked as answer by
Fanny Liu
Tuesday, June 4, 2013 9:58 AM
-
Proposed as answer by
- Remove From My Forums
-
Вопрос
-
While i am altering a column, getting a message as below.
Can anyone please help? It’s urgent.
alter table test alter column AvgCashAndInvestments numeric(19,0) NULL
The statement has been terminated.
Msg 682, Level 22, State 153, Line 3
Internal error. Buffer provided to read column value is too small. Run DBCC CHECKDB to check for any corruption.
Ответы
-
Do you have latest backup..restote order shoud be Latest full backup(no recovery)…latest Diff backup taken after ful bkp(no recovery) and then rn log backps taken after diff backup u applied .
I thinks its best solution …
.I presume this is some hardware issue..no so sure about it..
Get ur harware checked may be some Bad sectors…
Also you can try running DBCC checkdb in single_user mode ( try if it allows) and post result here
Hope this helps.keep us posted
Please mark this reply as the answer or vote as helpful, as appropriate, to make it useful for other readers
-
Предложено в качестве ответа
3 июня 2013 г. 9:14
-
Помечено в качестве ответа
Fanny Liu
4 июня 2013 г. 9:58
-
Предложено в качестве ответа
SQL Server 2014 Developer — duplicate (do not use) SQL Server 2014 Enterprise — duplicate (do not use) SQL Server 2014 Standard — duplicate (do not use) Еще…Меньше
Проблемы
Предположим, что у вас есть таблица, в которой есть некластеризованный индекс columnstore в Microsoft SQL Server 2014. При добавлении столбца и удалении столбца в таблице появляются следующие сообщения об ошибках:
Сообщение 211, уровень 23, состояние 19, строка 38Possible схемы повреждена. Запустите DBCC CHECKCATALOG. В текущей команде возникла ошибка, связанная с сообщением 0, уровнем 20, состоянием 0, строка 37A серьезной ошибки. Результаты, если таковые имеются, должны быть удалены. Сообщение 682, уровень 22, состояние 153, строка 76Internal Error. Буфер, представленный для чтения значения столбца, слишком мал. Запустите DBCC CHECKDB, чтобы проверить, нет ли повреждений.
Решение
Эта проблема впервые устранена в следующих накопительных обновлениях SQL Server:
-
Накопительное обновление 2 для SQL Server 2014 с пакетом обновления 1 (SP1)
-
Накопительное обновление 9 для SQL Server 2014
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
Сжатие данных в базе данных средствами СУБД

13.12.2017
На Инфостарте есть статья https://infostart.ru/public/114634/ про то, как навесить триггеры на создание таблиц, чтобы новые таблицы в БД создавались сжатыми. Для существующих баз предлагается загрузить базу из ДТ или сделать ТиИ с реструктуризацией. Предлагаю вашему вниманию скрипт, который сделает это для существующей БД средствами SQL.
Про плюсы и минусы сжатия можно почитать в оригинальной статье //infostart.ru/public/114634/ или на msdn https://msdn.microsoft.com/ru-ru/library/cc280449(v=sql.120).aspx основным плюсом идет экономия ввода вывода и места на диске, основным минусом — существенное увеличение регламентных операций СУБД и небольшое увеличение нагрузки на процессор.
В management studio правой кнопкой мыши на базе, new query, вставляем текст, нажимаем execute (или F5):

DECLARE @Table_catalog NVARCHAR(128)
DECLARE @Table_schema NVARCHAR(128)
DECLARE @Table_name NVARCHAR(128)
DECLARE @Index_Name NVARCHAR(128)
DECLARE @cmd VARCHAR(4000)
-- включение сжатия для таблиц
DECLARE TableNameCursor CURSOR
FOR
SELECT Table_catalog, Table_schema, Table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY Table_catalog, Table_schema, Table_name
OPEN TableNameCursor
FETCH NEXT FROM TableNameCursor INTO @Table_catalog, @Table_schema, @Table_name
WHILE @@fetch_status = 0
BEGIN
PRINT @Table_catalog + '.' + @Table_schema + '.' + @Table_name
SET @cmd = 'ALTER TABLE [' + @Table_catalog + '].[' + @Table_schema + '].[' + @Table_name + '] REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)'
EXEC (@cmd)
FETCH NEXT FROM TableNameCursor INTO @Table_catalog, @Table_schema, @Table_name
END
CLOSE TableNameCursor
DEALLOCATE TableNameCursor
-- включение сжатия для индексов
DECLARE IndexCursor CURSOR
FOR
SELECT DB_NAME(), schemas.name, tables.name, indexes.name
FROM sys.schemas as schemas inner join sys.tables as tables inner join sys.indexes as indexes on tables.object_id = indexes.object_id on schemas.schema_id = tables.schema_id
ORDER BY schemas.name, tables.name, indexes.name;
OPEN IndexCursor
FETCH NEXT FROM IndexCursor INTO @Table_catalog, @Table_schema, @Table_name, @Index_Name
WHILE @@fetch_status = 0
BEGIN
PRINT @Table_catalog + '.' + @Table_schema + '.' + @Table_name + ': ' + @Index_Name
SET @cmd = 'ALTER INDEX [' + @Index_Name + '] ON [' + @Table_catalog + '].[' + @Table_schema + '].[' + @Table_name + '] REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)'
EXEC (@cmd)
FETCH NEXT FROM IndexCursor INTO @Table_catalog, @Table_schema, @Table_name, @Index_Name
END
CLOSE IndexCursor
DEALLOCATE IndexCursor
-- делаем шринк базы - возвращаем свободное место на диск
SELECT @cmd=(
SELECT 'DBCC SHRINKDATABASE('''+ DB_NAME() + ''')'
)
EXEC (@cmd)
Скрипт выводит в раздел messages ход работы

Для того, чтобы результаты сохранились после реструктуризации, следует добавить триггеры из оригинальной статьи.
Для выключения сжатия надо запустить скрипт, заменив в нем DATA_COMPRESSION = PAGE на DATA_COMPRESSION = NONE
У меня эта ошибка именно потому, что я перезапустил или остановил службу sql во время работы, это вызвало некоторое повреждение данных.
Internal error. Buffer provided to read column value is too small. Run DBCC CHECKDB to check for any corruption.
Просто беги
DBCC CHECKDBодин раз и подождите, чтобы проверить наличие повреждений и исправить их, затем, когда запрос завершит восстановление, вы можете использовать любой запрос, который вы хотите.
