Как сделать резервную копию (дамп) на уровне таблиц в MS SQL Server 2005/2008?
Ответы:
Вы не можете использовать BACKUP DATABASE
команду для резервного копирования одной таблицы, если, конечно, рассматриваемая таблица не выделена для нее собственной FILEGROUP
.
Как вы предложили, вы можете экспортировать данные таблицы в файл CSV. Теперь, чтобы получить определение вашей таблицы, вы можете "написать сценарий" CREATE TABLE
скрипта.
Это можно сделать в среде SQL Server Management Studio:
щелкнув правой кнопкой мыши База данных> Задачи> Создать сценарий
Затем вы можете выбрать таблицу, которую хотите создать в сценарии, а также включить любые связанные объекты, такие как ограничения и индексы.
для того , чтобы получить DATA
вместе с только schema
, вы должны выбрать Advanced
на вкладке набора опций сценариев, а в GENERAL
разделе установить Types of data to script
выберитеSchema and Data
Надеюсь, это поможет, но не стесняйтесь обращаться ко мне напрямую, если вам потребуется дополнительная помощь.
Advanced
на вкладке настроек сценария, а в разделе ОБЩИЕ установить 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 не совсем читается ... вот полноразмерное изображение http://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
для вас файл.
Создайте новую файловую группу, поместите в нее эту таблицу и сделайте резервную копию только этой файловой группы.
Вы можете использовать бесплатный мастер публикации базы данных от Microsoft для создания текстовых файлов с помощью сценариев SQL (CREATE TABLE и INSERT INTO).
Вы можете создать такой файл для отдельной таблицы и «восстановить» всю таблицу, включая данные, просто запустив сценарий SQL.
Не знаю, будет ли это соответствовать описанной здесь задаче. Мне пришлось сделать инкрементную резервную копию таблицы! (Копировать следует только новые вставленные данные). Я раньше разрабатывал пакет DTS, где.
Я получаю новые записи (на основе столбца «статус») и передаю данные в пункт назначения. (Через «Задачу преобразования данных»)
Затем я просто обновил столбец «статус». (Через «Выполнить задачу SQL»)
Пришлось исправить «рабочий процесс» как следует.
Каждая модель восстановления позволяет выполнять резервное копирование всей или части базы данных SQL Server или отдельных файлов или файловых групп базы данных. Резервные копии на уровне таблиц не могут быть созданы .
У вас, вероятно, есть два варианта, поскольку SQL Server не поддерживает резервное копирование таблиц. Оба начнутся со сценария создания таблицы. Затем вы можете использовать параметр Script Table - INSERT, который будет генерировать множество операторов вставки, или вы можете использовать службы интеграции (DTS с 2000) или аналогичные для экспорта данных в формате CSV или аналогичном.
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
Если вы хотите восстановить таблицу после того, как кто-то по ошибке удалил из нее строки, возможно, вам стоит взглянуть на снимки базы данных. Вы можете довольно легко восстановить таблицу (или подмножество строк) из снимка. См. Http://msdn.microsoft.com/en-us/library/ms175158.aspx
Бесплатное приложение SqlTableZip выполнит эту работу. По сути, вы пишете любой запрос (который, конечно, также может быть [select * from table]), и приложение создает сжатый файл со всеми данными, которые можно восстановить позже.
Handy Backup автоматически создает файлы дампа из MS SQL Server, включая MSSQL 2005/2008. Эти дампы представляют собой двоичные файлы уровня таблицы, содержащие точные копии конкретного содержимого базы данных.
Чтобы сделать простой дамп с помощью Handy Backup, следуйте следующей инструкции:
Теперь запустите новую задачу, щелкнув значок перед ее названием, или дождитесь запланированного времени. Handy Backup автоматически создаст дамп вашей базы данных. Затем откройте место назначения резервной копии. Вы найдете папку (или пару папок) с вашими резервными копиями MS SQL. Любая такая папка будет содержать файл дампа уровня таблицы, состоящий из некоторых двоичных таблиц и настроек, сжатых в один ZIP-архив.
Handy Backup может сохранять дампы для MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes и любой общей базы данных SQL, имеющей драйвер ODBC. Некоторые из этих баз данных требуют дополнительных действий для установления соединения между СУБД и Handy Backup.
Инструменты, описанные выше, часто выгружают базы данных SQL в виде последовательности команд SQL на уровне таблицы, делая эти файлы готовыми для любых необходимых изменений вручную.