Перенести базу MS SQL с неработающего компьютера : MS SQL
Есть компьютер, на котором умерла Window’s
На нём стояла программа контроля рабочего времени (старая версия [ Biotime ] примерно 2006-2007 годов выпуска).
Винда сдохла, копий нет.
Использовалась база на MSDE — Microsoft SQL Server Desktop Engine.
Диск — живой.
Если переставлять операционку — можно ли как-то перекинуть данные из старой базы?
Была-бы копия, сделанная средствами SQL — понимаю, что не вопрос (и ведь уже не помню, а почему перестал делать эти копии. Хотя раньше в аналогичной ситуации мне они (копии) помогли).
А вот в такой ситуации — не понимаю, куда бежать.
Тупо подсовывал файлы на новый компьютер — не работает.
Техподдержка ничего про нашу версию уже сказать не может (обращался пару лет назад).
В общем — если кто-то что-то подскажет — буду рад.
KirillHome |
Посмотреть профиль |
Где был? |
Найти ещё сообщения от KirillHome |
Извини, но что значит «умерла Windows»? Почему ты думаешь, что она умерла, а база — нет? Мне просто кажется, что на последний вздох можно ее оживить, а уж потом вытаскивать базу. Либо с базой ты попрощался. 🙁
Винда последние три (. ) месяца жила на «последнем издыхании».
Что в безопасном режиме, что в обычном — часть служб стартовала, но, видимо, не все.
Возможность хоть что-то запустить (проводник, диспетчер задач) успеха не имели.
Диск подсоединялся к другому компьютеру для проверки — всё работает, сбойных участков нет.
Всё это время в базу писалось и из базы читалось (клиентские программы, установленные на других компьютерах — давали возможность посмотреть отчёты из BioTime, в том числе актуальные).
Сегодня позвонили, сказали — датчики контроля рабочего времени не работают (собственно, кроме работы по связи этих датчиков с базой — ничего на этом компьютере и нет).
После перезагрузки компьютера — они не ожили.
Перенос системных баз данных в SQL Server
Системными БД в SQL являются master , msdb , model , tempdb и малоизвестная служебная БД mssqlsystemresource .
Бывает нужно перенести системные БД SQL в другую папку или на другой диск. Мне вот довелось. Делается это в 2 приема.
Сначала SQL Server нужно будет сначала перенсети master и mssqlsystemresource, а затем оставшиеся msdb, model, tempdb.
В моем примере буду переность базы из
C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData
в
C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData NewFolder
Запускаем SQL Server Configuration Manager
SQL Server (MSSQLSERVER) -> Properties
Вкладка Advanced, Startup Parameters
Изменяем пути
-dC:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATANewFoldermaster.mdf;-eC:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOGERRORLOG;-lC:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATANewFoldermastlog.ldf
Останавливаем службу SQL
Запускаем SQL в могнопольном режиме и работаем только с базой master
Для этого в cmd набираем команду
net start MSSQLSERVER /c /m /T3608
запускаем sqlcmd -A
набираем 3 строки для изменеия пути к mssqlsystemresource.mdf
1> ALTER DATABASE mssqlsystemresource
2> MODIFY FILE (name = ‘data’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldermssqlsystemresource.mdf’)
На выходе ответ об успешном применении
The file «data» has been modified in the system catalog. The new path will be used the next time the database is started.
набираем 3 строки для изменеия пути к mssqlsystemresource.ldf
1> ALTER DATABASE mssqlsystemresource
2> MODIFY FILE (name = ‘log’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldermssqlsystemresource.ldf’)
На выходе ответ об успешном применении
The file «log» has been modified in the system catalog. The new path will be used the next time the database is started.
Выходим из sqlcmd командой QUIT
Останавливаем службу SQL
Переносим файлы .mdf и .ldf от баз mssqlsystemresource и master в новое место
Стартуем SQL как обычно
Далее переносим базы msdb, model, tempdb
в MS SQL Server Management Studio выполняем запросы:
ALTER DATABASE msdb
MODIFY FILE (name = ‘MSDBDATA’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFolderMSDBDATA.mdf’)
ALTER DATABASE msdb
MODIFY FILE (name = ‘MSDBLOG’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFolderMSDBLOG.ldf’)
ALTER DATABASE model
MODIFY FILE (name = ‘modeldev’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldermodel.mdf’)
ALTER DATABASE model
MODIFY FILE (name = ‘modellog’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldermodellog.ldf’)
ALTER DATABASE tempdb
MODIFY FILE (name = ‘tempdev’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldertempdb.mdf’)
ALTER DATABASE tempdb
MODIFY FILE (name = ‘templog’, filename = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataNewFoldertemplog.ldf’)
Останавливаем SQL
Переносим файлы .mdf и .ldf в новое место
Стартуем SQL
Всё.
Перенос mdf ldf в sql server на другой компьютер
На практике MSSQL DBA бывают случаи, когда необходимо прикрепить базу SQL и журнала транзакций нет.
ЛИБО лог очень вырос и никакой shrink не помогает уменьшить его размер (модель восстановления simple)
В этом случае, после закрытия всех транзакций, можно сделать Detach базы
После чего переместить-переименовать файл журнала транзакций, и attach-нуть базу следующим скриптом
Если всё хорошо — получим сообщение вида
File activation failure. The physical file name «D:pathdb_log.ldf» may be incorrect.
New log file ‘D:pathdb_log.LDF’ was created.
SQL создаст пустой журнал транзакций на старом месте.
После чего старый лог можно удалить.
Второй способ:Метод / шаг: прикрепить файлы mdf и ldf напрямую
1.Щелкните правой кнопкой мыши «База данных» и выберите «Присоединить», чтобы открыть интерфейс подключения.
2.В интерфейсе «Присоединить базу данных» просто добавьте файл mdf и нажмите «ОК».
Создание базы данных
Базу данных можно создать двумя путями. С помощью интерфейса или SQL запроса.
Для создания запроса нам нужно нажать кнопку «Создать запрос» или «New Querry»
В новом окне пишем:
Где «Magazine» — имя вашей базы. Можно использовать кириллические символы и пробел, но это не рекомендуется. Если в названии стоит пробел, то название стоит выделить в кавычки, например:
Если мы создаем базу, например, для 1С или для задач, где будут использоваться разные кодировки, то кодировка по умолчанию подойдет (latin1_general_cp1_ci_as). 1С все хранит в юникод формате.
Если же мы создаем базу под конкретную задачу, где будут использоваться только кирилические символы мы можем захотеть создать базу с кодировкой, что немного повысит производительность и сохранит место: