Як я можу зробити резервну копію певних таблиць у SQL Server 2008 за допомогою T-SQL Script


Відповіді:


11

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

Можливе резервне копіювання таблиці SQL Server у SQL Server. Існують різні альтернативні способи резервного копіювання таблиці в sql SQL Server

  1. BCP (BULK COPY PROGRAM)
  2. Створити скрипт таблиці з даними
  3. Зробіть копію таблиці за допомогою SELECT INTO
  4. Збережіть дані таблиці безпосередньо у файлі Flat
  5. Експорт даних за допомогою SSIS до будь-якого пункту призначення

Тут я пояснюю лише перший відпочинок, який ви могли знати

Спосіб 1 - Резервне копіювання sql таблиці за допомогою BCP (BULK COPY PROGRAM)

Щоб створити резервну копію таблиці SQL під назвою "Person.Contact", яка знаходиться в SQL Server AdventureWorks, нам потрібно виконати наступний скрипт, який

-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' --  Table Name which you want    to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) --  Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd

ВИХІД

введіть тут опис зображення

Примітка -

  1. Ви повинні мати масові права імпорту / експорту
  2. Вище Script -n позначає нативні типи даних SQL, які є ключовими під час відновлення
  3. -T позначає, що ви підключаєтесь до SQL Server за допомогою автентифікації Windows, якщо ви хочете підключитися за допомогою використання автентифікації SQL Server -U -P
  4. Це також скаже, ви швидкодію передачі даних, в моєму випадку це було 212468,08 рядків в секунду.
  5. Як тільки ці команди завершаться, це створить файл під назвою "AdventureWorks.Person.Contact_20120222" - це вказана папка призначення

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

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

введіть тут опис зображення


9

Спосіб 1:

Якщо вас цікавлять лише дані в таблицях, які використовуються локально в одній базі даних та сервері, ви можете використовувати нижче запит, щоб зробити резервну копію вибраних таблиць:

SELECT * INTO newtable1
FROM originalTable1

--- Для таблиці 2

SELECT * INTO newtable2
FROM originalTable2

і так далі ... для n кількості таблиць

Цей вислів БУДЕ СТВОРИТЬ таблиці, звані newtable1, newtable1, .. таким чином, вам не потрібно попередньо створювати його.

Примітка * Цей метод забезпечує резервне копіювання досить швидко, але головним недоліком буде те, що він не переносить ключі, індекси та обмеження таблиці, а резервна копія зберігається в базі даних, а не десь зовні до файлу

Спосіб 2:

Якщо ви хочете створити резервну копію таблиці на інший сервер для вирішення проблем відновлення після аварій або запобігання втрат даних, тоді ви можете скопіювати таблицю за допомогою параметра Створити сценарії з Завдання.

  1. По-перше, клацніть правою кнопкою миші на базі даних, яка містить таблиці, які ви хочете створити для резервного копіювання, і виберіть Завдання -> Створити сценарії

  2. У списку виберіть базу даних, таблиці яких потрібно створити резервну копію

  3. Наступний екран, який з'явиться, - Параметри сценарію.

  4. Прокрутіть вниз по параметрах сценарію, поки не з’явиться Параметри таблиці / Перегляду. Ми хочемо, щоб це було правдивим: Перевірте обмеження, дані сценарію, сторонні ключі, первинні клавіші, тригери та унікальні ключі. (Або ви можете вибрати все, що вам потрібно, звичайно). Виберіть Далі, і нам представлений екран "Вибір типів об'єктів"

  5. Виберіть «Таблиці» та натисніть кнопку «Далі». Нарешті, виберіть таблицю або таблиці, які хочете створити резервну копію, і натисніть наступну

Спосіб 3:

Ви також можете використовувати утиліту bcp для резервного копіювання таблиць.


1

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

Що ви можете зробити, якщо ви хочете створити резервну копію певних таблиць (і вони завжди однакові), це перемістити їх в окрему file groupта створити резервну копію цієї групи файлів.

Див. Резервну копію файлів та груп файлів для документації.

Наприклад, якщо ви хочете створити резервну копію певних файлів або груп файлів за допомогою T-SQL, ви можете використовувати (за посиланням)

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO

і

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO

1
На жаль, вам доведеться створити резервну копію всіх груп читання / запису файлів разом, тому ви не можете вибрати лише одну.
Каміль Гощімінський

1

На основі методу 1 з відповіді KASQLDBA:

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

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

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

Цей параметр надасть вам спосіб створення файлу .BAK. Ви просто запускаєте команду резервної бази даних після того, як ви заповнили таблиці в новій базі даних.


1

Використовуючи функцію масового експорту SSMS, тут згадується найкращий та найпростіший метод

Майстер імпорту та експорту SQL Server : майстер імпорту та експорту SQL Server надає графічний інтерфейс користувача для пакета служб інтеграції служб SQL Server (SSIS). Після створення пакету можна автоматизувати роботу за графіком. Його можна додатково налаштувати та змінити за допомогою інструментів даних SQL Server (SSDT)

Для початку відкрийте майстра імпорту та експорту, клацніть правою кнопкою миші базу даних та виберіть підменю Завдання -> Команда експорту даних.

введіть тут опис зображення


Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
кевінський

@kevinsky Звичайно! Але ви, принаймні, повинні були проголосувати за це!
Sayyed

-1

Інший метод полягає у використанні script / sproc: DumpDataFromTable.sql з: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

Ви повинні передати: ім'я схеми та ім'я таблиці, а потім вихідний шлях, де буде збережено створений скрипт (папка примітки повинна бути вже створена / існувати, а sql мати дозвіл. Див. Коментар у парочку).

І якщо ви хочете, можете додати умову до таблиці (фільтр повинен починатися з І на даний момент)


ця процедура залежить від відсутнього процедури PRC_WritereadFile
SubqueryCrunch

-2

Резервне копіювання єдиної таблиці з її даними з бази даних у SQL Server 2008:

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