Резервное копирование на уровне таблицы
Как сделать резервное копирование на уровне таблицы (дамп) в MS SQL Server 2005/2008?
16 ответов
Вы не можете использовать BACKUP DATABASE
команда для резервного копирования одной таблицы, если, конечно, рассматриваемая таблица не выделена для ее собственной FILEGROUP
,
Что вы можете сделать, как вы предложили, это экспортировать данные таблицы в файл CSV. Теперь, чтобы получить определение вашей таблицы, вы можете "Сценарий" CREATE TABLE
скрипт.
Вы можете сделать это в SQL Server Management Studio следующим образом:
щелкните правой кнопкой мыши База данных> Задачи> Создать сценарий
Затем вы можете выбрать таблицу, которую хотите написать, а также включить любые связанные объекты, такие как ограничения и индексы.
для того, чтобы получить DATA
наряду только с schema
, ты должен выбрать Advanced
на вкладке параметров сценариев и в GENERAL
раздел установить Types of data to script
Выбрать Schema and Data
Надеюсь, это поможет, но вы можете связаться со мной напрямую, если вам потребуется дополнительная помощь.
Я использую утилиту массового копирования для создания резервных копий на уровне таблицы
экспортировать:
bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E
импортировать:
bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Как вы можете видеть, вы можете экспортировать на основе любого запроса, так что вы даже можете делать инкрементные резервные копии с этим. Кроме того, он поддерживает сценарии, в отличие от других методов, упомянутых здесь, которые используют SSMS.
Вот шаги, которые вам нужны. Шаг 5 важен, если вы хотите получить данные. Шаг 2, где вы можете выбрать отдельные таблицы.
Версия стекаEDIT не совсем читабельна... вот полноразмерное изображение https://i.imgur.com/y6ZCL.jpg
Вы можете выполнить приведенный ниже запрос, чтобы создать резервную копию существующей таблицы, которая создаст новую таблицу с существующей структурой старой таблицы вместе с данными.
select * into newtablename from oldtablename
Чтобы скопировать только структуру таблицы, используйте запрос ниже.
select * into newtablename from oldtablename where 1 = 2
Это похоже на решение qntmfred, но с использованием прямого дампа таблицы. Эта опция немного быстрее (см. Документы BCP):
экспортировать:
bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E
импортировать:
bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Если вы ищете что-то вроде MySQL DUMP
хорошие новости: SQL Server 2008 Management Studio добавил эту возможность.
В SSMS просто щелкните правой кнопкой мыши по рассматриваемой БД и выберите " Задачи"> "Создать сценарии". Затем на 2-й странице мастера опций, убедитесь, что вы выбрали, что вы хотите, чтобы данные были также записаны в сценарии, и он будет генерировать, что составляет DUMP
файл для вас.
Создайте новую файловую группу, поместите в нее эту таблицу и сделайте резервную копию только этой файловой группы.
Я не знаю, будет ли это соответствовать проблеме, описанной здесь. Я должен был сделать инкрементное резервное копирование таблицы! (Только новые вставленные данные должны быть скопированы). Я использовал для разработки пакета DTS, где.
Я получаю новые записи (на основе столбца "статус") и перенес данные в пункт назначения. (Через "Задача преобразования данных")
Затем я только что обновил столбец статуса. (Через "Выполнить задачу SQL")
Я должен был исправить "рабочий процесс" правильно.
Вы можете использовать бесплатный мастер публикации баз данных от Microsoft для создания текстовых файлов с помощью сценариев SQL (CREATE TABLE и INSERT INTO).
Вы можете создать такой файл для одной таблицы и "восстановить" всю таблицу, включая данные, просто запустив сценарий SQL.
Используйте мастер импорта и экспорта SQL Server.
- SSMS
- Откройте движок базы данных
- Чередующийся щелкните базу данных, содержащую таблицу для экспорта
- Выберите "Задачи"
- Выберите "Экспорт данных..."
- Следуй за волшебником
Каждая модель восстановления позволяет создавать резервные копии всей или частичной базы данных SQL Server или отдельных файлов или групп файлов базы данных. Резервные копии на уровне таблицы не могут быть созданы.
Возможно, у вас есть два варианта, поскольку SQL Server не поддерживает резервное копирование таблиц. Оба начнут со сценариев создания таблицы. Затем вы можете использовать опцию Script Table - INSERT, которая будет генерировать много операторов вставки, или вы можете использовать службы Integration (DTS с 2000) или аналогичные для экспорта данных в формате CSV или аналогичного.
Handy Backup автоматически создает файлы дампа из MS SQL Server, включая MSSQL 2005/2008. Эти дампы представляют собой двоичные файлы на уровне таблицы, содержащие точные копии конкретного содержимого базы данных.
Чтобы создать простой дамп с помощью Handy Backup, пожалуйста, следуйте следующей инструкции:
- Установите Handy Backup и создайте новую задачу резервного копирования.
- Выберите "MSSQL" на шаге 2 в качестве источника данных. В новом окне отметьте базу данных для резервного копирования.
- Выберите среди разных мест, где вы будете хранить свои резервные копии.
- На шаге 4 выберите "Полное" резервное копирование. Установите отметку времени, если вам это нужно.
- Пропустите Шаг 5, если у вас нет необходимости сжимать или шифровать полученный файл дампа.
- На шаге 6 настройте расписание для задачи, чтобы периодически создавать дампы (иначе запускайте задачу вручную).
- Опять же, пропустите Шаг 7 и назовите свою задачу на Шаге 8. Вы закончили задачу!
Теперь запустите новое задание, щелкнув значок перед его именем, или дождитесь запланированного времени. Handy Backup автоматически создаст дамп для вашей базы данных. Затем откройте место назначения резервной копии. Вы найдете папку (или пару папок) с резервными копиями MS SQL. Любая такая папка будет содержать файл дампа на уровне таблицы, состоящий из нескольких двоичных таблиц и настроек, сжатых в один ZIP.
Другие базы данных
Handy Backup может сохранять дампы для MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes и любой общей базы данных SQL, имеющей драйвер ODBC. Некоторые из этих баз данных требуют дополнительных шагов для установления соединений между СУБД и Handy Backup.
Описанные выше инструменты часто сбрасывают базы данных SQL в виде последовательности команд SQL уровня таблицы, что делает эти файлы готовыми к любым нужным вам ручным изменениям.
Если вы ищете возможность восстановить таблицу после того, как кто-то по ошибке удалил из нее строки, вы можете взглянуть на снимки базы данных. Вы можете довольно легко восстановить таблицу (или подмножество строк) из снимка. См. http://msdn.microsoft.com/en-us/library/ms175158.aspx
Бесплатное приложение с именем SqlTableZip выполнит свою работу. По сути, вы пишете любой запрос (который, конечно, также может быть [выбрать * из таблицы]), и приложение создает сжатый файл со всеми данными, которые можно восстановить позже.
BMC Recovery Manager (ранее известный как SQLBacktrack) позволяет восстанавливать отдельные объекты в базе данных (так называемые таблицы) на определенный момент времени. Это не дешево, но делает фантастическую работу: http://www.bmc.com/products/proddocview/0,2832,19052_19429_70025639_147752,00.html
http://www.bmc.com/products/proddocview/0,2832,19052_19429_67883151_147636,00.html