Резервне копіювання на рівні таблиці


Відповіді:


89

Ви не можете використовувати BACKUP DATABASEкоманду для резервного копіювання однієї таблиці, якщо, звичайно, таблиця, про яку йде мова, не призначена для її власної FILEGROUP.

Що ви можете зробити, як ви запропонували, - експортувати дані таблиці у файл CSV. Тепер, щоб отримати визначення вашої таблиці, ви можете "виписати" CREATE TABLEсценарій.

Ви можете зробити це в SQL Server Management Studio, виконавши:

клацніть правою кнопкою миші База даних> Завдання> Створити сценарій

Потім можна вибрати таблицю, яку потрібно виписати, а також включити будь-які пов’язані об’єкти, такі як обмеження та індекси.

для того, щоб ужитися DATAлише з schema, вам слід вибрати Advancedна вкладці параметри встановлених сценаріїв, а в GENERALрозділі встановити Types of data to scriptвибірSchema and Data

Сподіваюся, це допоможе, але не соромтеся зв’язуватися зі мною безпосередньо, якщо вам потрібна подальша допомога.


«Майстер публікації баз даних» автоматизує описані мною кроки.
Джон Сансом

25
Джон, не забудь згадати, що для того, щоб отримати ДАНІ разом із лише схемою, ти повинен вибрати Advancedна вкладці параметри встановлених сценаріїв, а в розділі ЗАГАЛЬНО встановити Types of data to scriptвибір Schema and Data. Це було не очевидно вперше, коли я це зробив.
Alex C,

Порада Алекса дуже важлива. Крім того, чи існує спосіб написання цього сценарію замість перегляду меню в SQL Server?
sooprise

1
Ви зможете досягти цього за допомогою комбінації PowerShell та SMO. Див. Цю статтю від Phil Factor як керівництво: simple-talk.com/sql/database-administration/…
Джон Сансом

@AlexC Дякую! Врятував мені головний біль :)
Саймон Уайтхед

55

Я використовую утиліту масового копіювання для створення резервних копій на рівні таблиці

експортувати:

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.


1
Просто на голову. Якщо ви просто хочете скопіювати таблицю, використовуючи ім'я замість запиту вибору, змініть сценарій на використання OUT замість QUERYOUT.
Валамас

45

Ось кроки, які вам потрібні. Крок 5 важливий, якщо ви хочете отримати дані. Крок 2 - це де ви можете вибрати окремі таблиці.

Версія стека EDIT не зовсім читабельна ... ось зображення в повному розмірі http://i.imgur.com/y6ZCL.jpg

Ось кроки з відповіді Джона Сансома


Яку SSMS ви використовували @Alex C? У моєму SSMS2005 мій майстер відрізняється від вашого.
KirdApe

Вибачте, минули роки, як я відповів на це. Я припускаю, що я, мабуть, використовував 2008 рік. Я щойно перевірив свого майстра, і вам більше не доведеться КЛІКНУВАТИ, але натомість весь список із кадру 5 (вище) відображається як одна зі сторінок майстра. Крім того, опція СТРУКТУРА та ДАНІ була розділена на параметри TRUE / FALSE для кожного окремо. Повідомте мене, якщо я можу ще чимсь допомогти.
Alex C

19

Ви можете запустити наведений нижче запит, щоб зробити резервну копію існуючої таблиці, яка створить нову таблицю з існуючою структурою старої таблиці разом із даними.

select * into newtablename from oldtablename

Щоб скопіювати лише структуру таблиці, використовуйте запит нижче.

select * into newtablename from oldtablename where 1 = 2

7

Це схоже на рішення qntmfred , але за допомогою прямого дампа таблиці. Цей варіант трохи швидший (див. BCP docs ):

експортувати:

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

1
Чи включає це обмеження?
user3071284

4

Якщо ви шукаєте щось на зразок MySQL DUMP, то хороші новини: SQL Server 2008 Management Studio додав цю можливість.

У SSMS просто клацніть правою кнопкою миші на відповідній БД і виберіть Завдання> Створити сценарії . Потім на 2-й сторінці майстра параметрів обов’язково виберіть, чи хочете ви також скриптувати дані , і він згенерує DUMPдля вас кількість файлів.


3

Створіть нову файлову групу, поставте на неї цю таблицю та зробіть резервну копію лише цієї файлової групи.


Чи включає це обмеження?
user3071284

2

Ви можете використовувати безкоштовний Майстер публікації баз даних від Microsoft для створення текстових файлів за допомогою сценаріїв SQL (СТВОРИТИ ТАБЛИЦЮ та ВСТАВИТИ В).

Ви можете створити такий файл для однієї таблиці, і ви можете "відновити" повну таблицю, включаючи дані, просто запустивши скрипт SQL.


+1 Для всіх людей, які звикли до сценаріїв SQL, це варіант, який ви шукаєте. Зніміть прапорець біля пункту «Сценарій усіх об’єктів у вибраній базі даних», щоб вибрати окремі таблиці. Знімки екрана: products.secureserver.net/products/hosting/…
lepe

2

Не знаю, чи відповідатиме це проблемі, описаній тут. Мені довелося зробити додаткову резервну копію таблиці! (Копіювати слід лише нові вставлені дані). Раніше я розробляв пакет DTS, де.

  1. Я отримую нові записи (на основі стовпця "статус") і передаю дані до місця призначення. (Через "Завдання перетворення даних")

  2. Потім я просто оновив стовпець "статус". (Через 'Виконати завдання SQL')

Мені довелося правильно виправити "робочий процес".


2

Використовуйте майстер імпорту та експорту SQL Server.

  1. sms
  2. Відкрийте движок бази даних
  3. Alt. клацніть базу даних, що містить таблицю для експорту
  4. Виберіть "Завдання"
  5. Виберіть "Експортувати дані ..."
  6. Слідуйте майстру

1

Кожна модель відновлення дозволяє створювати резервні копії цілої або часткової бази даних SQL Server або окремих файлів або файлових груп бази даних. Неможливо створити резервні копії на рівні таблиці .

Від: Огляд резервної копії (SQL Server)


0

Можливо, у вас є два варіанти, оскільки SQL Server не підтримує резервне копіювання таблиць. І те, і інше почнеться зі створення сценаріїв створення таблиці. Тоді ви можете використовувати опцію Таблиця сценаріїв - ВСТАВИТИ, яка генерує багато операторів вставки, або ви можете скористатися службами інтеграції (DTS з 2000) або подібними для експорту даних як CSV чи подібні.


0

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


0

Якщо ви прагнете мати можливість відновити таблицю після того, як хтось помилково видалив з неї рядки, можливо, ви можете переглянути фотографії баз даних. Ви можете досить легко відновити таблицю (або підмножину рядків) зі знімка. Див. Http://msdn.microsoft.com/en-us/library/ms175158.aspx


0

Безкоштовний додаток під назвою SqlTableZip виконає роботу. В основному, ви пишете будь-який запит (який, звичайно, також може бути [вибрати * з таблиці]), і програма створює стислий файл із усіма даними, які можна відновити пізніше.

Посилання: http://www.doccolabs.com/products_sqltablezip.html


0

Handy Backup автоматично робить дамп файлів з MS SQL Server, включаючи MSSQL 2005/2008. Ці дампи - це двійкові файли на рівні таблиці, що містять точні копії певного вмісту бази даних.

Щоб зробити простий дамп за допомогою Handy Backup, дотримуйтесь наступних інструкцій:

  1. Встановіть Handy Backup і створіть нове завдання резервного копіювання.
  2. Виберіть “MSSQL” на кроці 2 як джерело даних. У новому вікні позначте базу даних для резервного копіювання.
  3. Виберіть серед різних напрямків, де ви будете зберігати свої резервні копії.
  4. На кроці 4 виберіть опцію резервного копіювання “Повне”. Встановіть позначку часу, якщо вона вам потрібна.
  5. Пропустіть крок 5, якщо вам не потрібно стиснути або зашифрувати отриманий файл дампа.
  6. На кроці 6 встановіть розклад для завдання для періодичного створення дампів (інакше запустіть завдання вручну).
  7. Знову пропустіть Крок 7 і назвіть своє завдання на Крок 8. Ви закінчили завдання!

Тепер запустіть нове завдання, натиснувши піктограму перед її назвою, або дочекайтеся запланованого часу. Handy Backup автоматично створить дамп для вашої бази даних. Потім відкрийте резервне місце призначення. Ви знайдете папку (або кілька папок) із вашими резервними копіями MS SQL. Будь-яка така папка буде містити файл дампа рівня таблиці, що складається з деяких двійкових таблиць та налаштувань, стиснених в єдиний ZIP.

Інші бази даних

Handy Backup може зберігати дампи для MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes та будь-якої загальної бази даних SQL, що має драйвер ODBC. Деякі з цих баз даних вимагають додаткових кроків для встановлення зв’язків між СУБД та Handy Backup.

Описані вище інструменти часто скидають бази даних SQL як послідовність команд SQL на рівні таблиці, роблячи ці файли готовими до будь-яких необхідних ручних змін.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.