Вопрос

Название говорит само за себя.Есть ли способ напрямую выполнить такой импорт?

Это было полезно?

Решение

Файлы .BAK с SQL-сервера имеют формат Microsoft Tape Format (MTF), ссылка: http://www.fpns.net/willy/msbackup.htm

Файл bak, вероятно, будет содержать файлы LDF и MDF, которые SQL-сервер использует для хранения базы данных.

Для их извлечения вам понадобится использовать SQL-сервер.SQL Server Express бесплатен и справится с этой задачей.

Итак, установите выпуск SQL Server Express и откройте SQL Server Powershell.Там выполнить sqlcmd -S <COMPUTERNAME>\SQLExpress (при входе в систему как администратор)

затем введите следующую команду.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak';
GO

Здесь будет отображено содержимое резервной копии — вам нужны первые поля, которые сообщают вам логические имена — одно будет фактической базой данных, а другое — файлом журнала.

RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak'
WITH 
   MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf', 
   MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf';
GO

На этом этапе вы извлекли базу данных, затем установите «Администратор веб-данных Sql» от Microsoft. вместе с этот инструмент экспорта и у вас будет сценарий SQL, содержащий базу данных.

Другие советы

Мне не удалось найти способ сделать это напрямую.

Вместо этого я импортировал файл bak в SQL Server 2008 Express, а затем использовал Набор инструментов для миграции MySQL.

Работало как шарм!

У MySql есть приложение для импорта базы данных из Microsoft sql.Шаги:

  1. Открыть рабочую среду MySql
  2. Нажмите «Миграция базы данных» (если он не отображается, вам необходимо установить его из обновления MySql).
  3. Следуйте списку задач миграции с помощью простого мастера.
  1. Откройте SQL Server Management Studio на своем локальном компьютере.
  2. Щелкните правой кнопкой мыши папку «Базы данных».Во всплывающем меню выберите «Новая база данных».
  3. Введите имя базы данных и нажмите «ОК».
  4. Щелкните правой кнопкой мыши значок новой базы данных.Во всплывающем меню выберите Задачи -> Восстановление -> База данных.
  5. Выберите параметр «С устройства», а затем нажмите кнопку «Обзор».
  6. Нажмите «Добавить» и перейдите к соответствующему файлу.Нажмите «ОК».
  7. В окне «Восстановить базу данных» установите флажок рядом с вашим BAK-файлом.
  8. Перейдите на страницу параметров.Установите флажок «Перезаписать существующую базу данных».Нажмите «ОК».
  9. Проверьте содержимое вашей базы данных, которая теперь активна на вашем локальном компьютере.

Хотя мой опыт работы с MySQL ограничен, я не думаю, что вам удастся это сделать.Однако у вас должна быть возможность перенести все ваши данные, восстановив базу данных на сервере MSSQL, а затем создав пакет SSIS или DTS для отправки ваших таблиц и данных на сервер MySQL.

надеюсь это поможет

Я в этом очень сомневаюсь.Возможно, вы захотите использовать DTS/SSIS, как говорит Леви.Возможно, вы захотите запустить процесс без фактического импорта данных.Просто сделайте достаточно, чтобы собрать воедино базовые структуры таблиц.Затем вам захочется изменить полученную структуру таблицы, потому что любая структура, которая будет создана, в лучшем случае будет неустойчивой.

Возможно, вам также придется пойти еще дальше и создать промежуточную область, которая сначала принимает все данные в строковой форме (varchar).Затем вы можете создать сценарий, выполняющий проверку и преобразование для передачи данных в «настоящую» базу данных, поскольку две базы данных не всегда хорошо работают вместе, особенно при работе с датами.

Метод, который я использовал, включал часть метода Ричарда Харрисона:

Итак, установите SQL Server 2008 Express Edition,

Это требует загрузки установщика веб -платформы "wpilauncher_n.exe", как только вы установите этот нажмите на выбор базы данных (вам также необходимо загрузить Frameworks и runtime)

После установки зайдите в командную строку Windows и:

Используйте sqlcmd -s sqlexpress (в то время как вошел в систему в качестве администратора)

затем введите следующую команду.

Восстановите FileListonly из Disk = 'c: temp mydbname-2009-09-29-v10.bak';Перейдите, это перечислит содержимое резервного копирования - то, что вам нужно, - это первые поля, которые сообщают вам о логических именах - одно будет фактической базой данных, а другой - файл журнала.

Восстановите базу данных MyDbName из disk = 'c: temp mydbname-2009-09-29-v10.bak' с перемещением 'mydbname' в C: temp mydbname_data.mdf ', перемещать' mydbname_log 'на' c: temp mydbname_data.ldf ';ИДТИ

Я запустил установщик веб-платформы и на вкладке «Что нового» установил SQL Server Management Studio и просмотрел базу данных, чтобы убедиться, что данные там есть...

В этот момент я попробовал инструмент, включенный в MSSQL «Мастер импорта и экспорта SQL», но результат дампа csv включал только имена столбцов...

Поэтому вместо этого я просто экспортировал результаты запросов типа «выбрать * из пользователей» из SQL Server Management Studio.

Базы данных SQL Server являются собственностью Microsoft.Я могу придумать два варианта:

  1. Создайте дамп базы данных в формате CSV, XML или аналогичном формате, который затем загрузите в MySQL.

  2. Настройте соединение ODBC с MySQL, а затем с помощью DTS перенесите данные.Как предположил Чарльз Грэм, вам, возможно, придется построить таблицы, прежде чем делать это.Но это так же просто, как вырезать и вставить из окон SQL Enterprise Manager в соответствующее окно MySQL.

Для тех, кто пытается использовать решение Ричарда, приведенное выше, вот некоторая дополнительная информация, которая может помочь разобраться с распространенными ошибками:

1) При запуске только списка файлов восстановления вы можете получить ошибку операционной системы 5 (Доступ запрещен).В этом случае откройте диспетчер конфигурации SQL Server и измените имя входа для SQLEXPRESS на пользователя с локальными правами записи.

2) @"Здесь будет указано содержимое резервной копии - вам нужны первые поля, в которых будут указаны логические имена" - если в вашем файле указано более двух заголовков, вам также необходимо будет указать, что делать с этими файлами в команда ВОССТАНОВИТЬ БАЗУ ДАННЫХ.Если вы не укажете, что делать с файлами за пределами базы данных и журнала, система, очевидно, попытается использовать атрибуты, перечисленные в файле .bak.Восстановление файла из чужой среды приведет к появлению сообщения «Путь имеет недопустимые атрибуты».Это должен быть каталог» (поскольку рассматриваемый путь не существует на вашем компьютере).Простое использование оператора MOVE решает эту проблему.

В моем случае был третий файл типа FTData.Команда MOVE, которую я добавил:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';

в моем случае мне фактически пришлось создать новый каталог для третьего файла.Сначала я попытался отправить его в ту же папку, что и файл .mdf, но при выполнении восстановления в третьем файле FTData возникла ошибка «не удалось правильно инициализировать».

Файл .bak из SQL Server специфичен для этого диалекта базы данных и несовместим с MySQL.

Попробуйте использовать этлальхимия для переноса базы данных SQL Server в MySQL.Это инструмент с открытым исходным кодом, который я создал для облегчения миграции между различными СУБД.

Быстрая установка и примеры представлены здесь. страница на гитхабе, а более подробное объяснение происхождения проекта можно найти здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top