Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Vladimir_Mer
Member

Откуда:
Сообщений: 23
Здравствуйте
Задача выглядит так: мне нужна последняя строчка возвращаемая после CheckDB, что бы передать ее пользователю. Для этого хочу результат записать в таблицу, а потом вывести эту строчку. На что мне сервер выдает ошибку. При этом если CheckDB без REPAIR_ALLOW_DATA_LOSS, то все отрабатывает как надо!

...
insert into #db_errors
exec ('DBCC CheckDB (''TempDB'',REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, TABLERESULTS')
...

Сообщение 8920, уровень 16, состояние 2, строка 1
Невозможно провести операцию checkdb внутри пользовательской транзакции. Прервите выполнение транзакции и заново запустите инструкцию.

Сообщение 7909, уровень 20, состояние 1, строка 1
Аварийное восстановление завершилось неудачно. Требуется восстановление из резервной копии.

Возможно есть какое то другое решение вопроса. Посоветуйте что нибудь.

Заранее благодарен!
19 ноя 18, 16:04    [21738279]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Vladimir_Mer,
автор
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Specifies that DBCC CHECKDB repair the found errors. Use the REPAIR options only as a last resort. The specified database must be in single-user mode to use one of the following repair options.

ALTER DATABASE ...  SET single_USER;


Но выглядит такое желание странно да и вредно
19 ноя 18, 16:12    [21738293]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Vladimir_Mer
Member

Откуда:
Сообщений: 23
TaPaK, про переключение в одно пользовательский режим курсе. Я чтобы не захламлять кодом поставил "..."
19 ноя 18, 16:25    [21738305]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Vladimir_Mer
Member

Откуда:
Сообщений: 23
Решение найдено!

...
insert into #db_errors
exec sp_executesql N'DBCC CheckDB (''seawind'',REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, TABLERESULTS'
...
19 ноя 18, 16:26    [21738309]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Vladimir_Mer
Решение найдено!

...
insert into #db_errors
exec sp_executesql N'DBCC CheckDB (''seawind'',REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, TABLERESULTS'
...

В Анекдоты запишем
19 ноя 18, 16:29    [21738313]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Vladimir_Mer
Member

Откуда:
Сообщений: 23
А нет, поторопился с выводами.(
работает только когда БД в режиме "онлайн", а в "Аварийном" не работает...
19 ноя 18, 16:35    [21738327]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
Vladimir_Mer
а в "Аварийном" не работает...
Ошибка "не работаю"?
19 ноя 18, 23:22    [21738616]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Vladimir_Mer
Member

Откуда:
Сообщений: 23
alexeyvg,
Сообщение 8920, уровень 16, состояние 2, строка 1
Невозможно провести операцию checkdb внутри пользовательской транзакции. Прервите выполнение транзакции и заново запустите инструкцию.

Сообщение 7909, уровень 20, состояние 1, строка 1
Аварийное восстановление завершилось неудачно. Требуется восстановление из резервной копии.
20 ноя 18, 07:55    [21738697]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CheckDB с аргументом REPAIR_ALLOW_DATA_LOSS записать в таблицу.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7686
Vladimir_Mer,

Вы не с того конца зашли. Создайте приложение, которое выполнит DBCC CheckDB и покажет пользователю результат или сохранит его в файл. По-моему это можно сделать на любом скриптовом языке.
20 ноя 18, 12:46    [21738974]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить