как восстановить базу данных, состоящую из нескольких исходных файлов данных?

 

### восстановление базы данных формата ms sql server из нескольких источников

база данных формата ms sql server включает один или несколько файлов. существует несколько типов файлов: основной файл данных (с расширением mdf), дополнительный файл данных (с расширением ndf) и лог транзакций (с расширением ldf). если вы хотите восстановить данные с помощью **recovery toolbox for sql server**, вам нужно указать путь ко всем дополнительным файлам данных, равно как и к основному файлу. это может быть сделано с помощью диалога open file(открыть файл). если ваша база данных включает только основной файл данных и лог(и) транзакций, то нужно выбрать только основной файл данных (см рис.1).

если поврежденная база данных включает основной файл данных, дополнительный (или дополнительные) файлы данных и лог(и) транзакций, вам следует выбрать основной файл данных формата .mdf и все дополнительные файлы данных формата .ndf) (см рис.2).



при работе программы появляется сообщение о недостатке физической памяти (physical memory).

 

для восстановления баз данных ms sql server с большим размером требуется значительное кол-во оперативной памяти. разработчиками программы рекомендуется восстанавливать большие базы данных на компьютерах с достаточным количеством свободной физической памяти (physical memory). размер физической памяти (physical memory), используемой программой, должен быть не меньше размера, восстанавливаемого файла деленного на 500, плюс 20-100 мб дополнительной памяти для работы программы. т.е. если вы пытаетесь восстановить .mdf файл размером 100 гб, то на компьютере должно как минимум **(100 гб / 500) + 120 мб = 320мб** свободной физической памяти (physical memory).



при предварительном просмотре в программе recovery toolbox for ms sql server я вижу восстановленные данные, процедуры, представления (view) и прочее, но после выполнения сохраненных скриптов эти данные не отображаются в базе данных microsoft sql server.

 

для исправления этой проблемы необходимо:

1. сохранить данные в виде скриптов
2. запустить файл **install.bat** со всеми необходимыми параметрами в командной строке
3. проверить по ответным файлам (**????.sql.txt*), какие из скриптов не были успешно выполнены
4. загрузить скрипты выполненные с ошибками в query analyzer от microsoft sql server и попытаться выполнить их там. после получения сообщения об ошибке необходимо выявить, какая команда вызывает эту ошибку. если эта команда записывает данные, не имеющие ни какой ценности, то ее можно просто удалить из файла. в противном случае необходимо выслать разработчикам скрипт, выполняемый с ошибками, и скриншот с ошибкой из query analyzer. кроме того возможно впоследствии необходимо будет отправить исходный *.mdf файл разработчикам для исследования проблемы.


при восстановлении данных с помощью программы recovery toolbox for sql server появляются избыточные или некорректные значения в полях primary key.

 

* если значение поля primary key некорректно, например имеет отрицательное значение или на несколько порядков превышает все остальные значения, то следовательно исходные данные были очень сильно повреждены и полное восстановление данных невозможно
* если в полях, являющихся primary key, появляются дублирующие значения, то значить программа восстановила страницы с данными, которые должны были быть помечены в базе данных (файлы mdf, ndf) для удаления. но реально признака того, что страница с данными должна быть удалена нет. и как следствие программа восстанавливает все данные со всех страниц. это приводит к избыточности восстановленных данных и разработчики программы **recovery toolbox for sql server** не смогли подобрать критерии для отсева лишних записей. окончательное решение о том, какие из избыточных записей в восстановленной базе данных должны быть удалены в этой ситуации ложится на администраторов баз данных и/или разработчиков приложений.


программа recovery toolbox for sql server нуждается в утилите isqlw.exe для импорта сохраненных скриптов в базу данных. но у меня ее нет, т.к. я пользуюсь sql express 2005 (sql express 2000). как мне импортировать восстановленные данные в базу данных?

 

утилита **isqlw.exe** является частью (компонентой) пакета ms sql server. вы всегда можете скачать последнюю версию ms sql server с сайта microsoft и установить необходимые вам компоненты на компьютер. демонстрационная версия ms sql server, скачанная с сайта microsoft, позволяет вам использовать компоненты в течение периода, указанного eula.

если вы не можете найти соответствующие утилиты на сайте microsoft.com, то вы можете скачать и установить **query analyzer** с нашего сайта. ссылка для скачивания: https://recoverytoolbox.com/download/isqlwinstall.exe.



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

 

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



при импорте скриптов в sql server 2000 возникла ошибка конверсии данных в формат datetime.

 

если при выполнении скриптов появилась вот такая ошибка:

server: msg 242, level 16, state 3, line 1

*[microsoft][odbc sql server driver][sql server]* преобразование типа данных char в тип данных datetime выдало значения времени и даты вне корректного диапазона.

заявленное действие было прекращено.

###### ответ:

это значит, что необходимо изменить языковые настройки сервера. для этого необходимо сделать следующее:

1. запускаем **enterprise manager**.
2. выбираем и подключаемся к нужному нам серверу.
3. открываем его свойства нажатием правой кнопки мыши и выбираем пункт **properties**.
4. далее выбираем закладку **server settings**.
5. в графе **default language for user** выбираем **english**, нажимаем кнопку **ok**.
6. останавливаем sql server. для этого в контекстном меню выбираем **stop**, на всплывающий вопрос **are you sure you wish to stop sql server service**… отвечаем **yes**.
7. запускаем sql server. для этого в контекстном меню выбираем **start**.
8. теперь можно выполнить скрипт, сохраненный на диске с помощью программы **recovery toolbox for sql server**. или можно запустить саму программу в режиме исполнения скриптов в базе данных.
9. теперь нужно вернуть все настройки назад. для этого в **enterprise manager** открываем свойства интересующего нас сервера.
10. в графе **default language for user** выбираем исходный язык по умолчанию, нажимаем кнопку **ok**.
11. останавливаем sql server. для этого в контекстном меню выбираем **stop**, на всплывающий вопрос **are you sure you wish to stop sql server service**… отвечаем **yes**.
12. запускаем sql server. для этого в контекстном меню выбираем **start**.


при импорте скриптов в sql server 2005 возникла ошибка конверсии данных в формат datetime.

 

если при выполнении скриптов появилась вот такая ошибка:

server: msg 242, level 16, state 3, line 1

*[microsoft][odbc sql server driver][sql server]* преобразование типа данных char в тип данных datetime выдало значения времени и даты вне корректного диапазона.

заявленное действие было прекращено.

###### ответ:

это значит, что необходимо изменить языковые настройки сервера. для этого необходимо сделать следующее:

1. запускаем **management studio**.
2. выбираем нужный нам сервер.
3. заходим **security/logins**.
4. выбираем пользователя, который будет загружать базу данных, открываем его свойства.
5. в графе **default language for user** выбираем **english**, нажимаем кнопку **ok**.
6. теперь можно выполнить скрипт, сохраненный на диске с помощью программы **recovery toolbox for sql server**. или можно запустить саму программу в режиме исполнения скриптов в базе данных.
7. теперь нужно вернуть все настройки назад. для этого в **management studio** открываем свойства интересующего нас пользователя.
8. в графе **default language for user** выбираем исходный язык, нажимаем кнопку **ok**.


как подключить mdf, ldf файлы к серверу?

 

1. запустите
2. кликните **присоединить**
**sql server management studio**4. в обозревателе объектов кликните правой кнопкой мыши в области баз данных
5. кликните **присоединить**
6. кликните кнопку **добавить**
7. выберите mdf файл и нажмите кнопку **ок**
8. кликните кнопку **ок**
9. подождите пока операция завершится.