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

Откуда:
Сообщений: 1004
Добрый люди просветите как можно скопировать страницу с одной базы в другую?
То есть нужно как-то вытянуть бинарное представление страницы через DBCC PAGE и вставить его в другую базу.
Или есть другие варианты? RESTORE PAGE не вариант сразу если база в SIMPLE.

Чисто академический интерес, поэтому буду рад фитбеку. Но реальный случай недавно был. Побилось пару байтов на странице системной таблицы. Потом недолго думая ее совсем загубили с помощью REPAIR_ALLOW_DATA_LOSS.
6 апр 18, 17:46    [21319651]     Ответить | Цитировать Сообщить модератору
 Re: DBCC WRITEPAGE  [new]
msLex
Member

Откуда:
Сообщений: 8091
AlanDenton
Добрый люди просветите как можно скопировать страницу с одной базы в другую?
То есть нужно как-то вытянуть бинарное представление страницы через DBCC PAGE и вставить его в другую базу.
Или есть другие варианты? RESTORE PAGE не вариант сразу если база в SIMPLE.

Чисто академический интерес, поэтому буду рад фитбеку. Но реальный случай недавно был. Побилось пару байтов на странице системной таблицы. Потом недолго думая ее совсем загубили с помощью REPAIR_ALLOW_DATA_LOSS.

hex-редактором любым, только со смещением не промахнись
6 апр 18, 17:57    [21319697]     Ответить | Цитировать Сообщить модератору
 Re: DBCC WRITEPAGE  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
msLex
hex-редактором любым, только со смещением не промахнись

Есть где-то хороший мануал по этому поводу?
6 апр 18, 18:01    [21319714]     Ответить | Цитировать Сообщить модератору
 Re: DBCC WRITEPAGE  [new]
msLex
Member

Откуда:
Сообщений: 8091
AlanDenton
msLex
hex-редактором любым, только со смещением не промахнись

Есть где-то хороший мануал по этому поводу?



Если вам нужно просто скопировать as is страницу из одной базы у другую, то ничего хитрого тут нет.
Достаточно знать начальное смещение.

Другое дело, что в заголовке страницы куча инфы, которая, скорее всего, различается в база (да хотя бы LSN), и простое копирование почти наверняка приведет к проблемам.

Вы можете через dbcc writepage (или напрямую в файле данных) поменять какие-то байты на странице, но для этого нужно очень хорошо понимать где и что на этой странице есть и где и что нужно менять.

С учетом того, что есть:
- разные версии скуля
- сжатие на уровне страниц/строк
- шифрование данных
- большого количества метаинформации, зависящей от кучи факторов (про LSN я уже писал)

я настоятельно не рекомендовал бы использовать этот метод для восстановления базы. Скорее всего, вы что-то не учете и сделаете только хуже.


PS
Описание работы dbcc writepage с примерам есть тут. Там же есть ссылки на онлайн курсы по "выправлению кривых баз"
6 апр 18, 19:08    [21319854]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить