Я хочу взяти резервну копію певних таблиць, доступних у моїй базі даних, у .bak
файлі, і все це слід зробити за допомогою сценарію T-SQL.
Я хочу взяти резервну копію певних таблиць, доступних у моїй базі даних, у .bak
файлі, і все це слід зробити за допомогою сценарію T-SQL.
Відповіді:
Типи резервного копіювання залежать від моделі відновлення SQL Server. Кожна модель відновлення дозволяє створювати резервну копію цілої або часткової бази даних SQL Server або окремих файлів або файлових груп бази даних. Резервне копіювання на рівні таблиці неможливо створити, такого варіанту немає. Але для цього є вирішення
Можливе резервне копіювання таблиці SQL Server у SQL Server. Існують різні альтернативні способи резервного копіювання таблиці в sql SQL Server
Тут я пояснюю лише перший відпочинок, який ви могли знати
Спосіб 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
ВИХІД
Примітка -
Крім того , ви можете запустити BCP через командний рядок і ввести наступну команду в командному рядку, обидві операції виконують одну і ту ж дію, але мені подобається вищезазначений метод, оскільки це тип збереження при відкритті командного рядка та типу.
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
Спосіб 1:
Якщо вас цікавлять лише дані в таблицях, які використовуються локально в одній базі даних та сервері, ви можете використовувати нижче запит, щоб зробити резервну копію вибраних таблиць:
SELECT * INTO newtable1
FROM originalTable1
--- Для таблиці 2
SELECT * INTO newtable2
FROM originalTable2
і так далі ... для n кількості таблиць
Цей вислів БУДЕ СТВОРИТЬ таблиці, звані newtable1, newtable1, .. таким чином, вам не потрібно попередньо створювати його.
Примітка * Цей метод забезпечує резервне копіювання досить швидко, але головним недоліком буде те, що він не переносить ключі, індекси та обмеження таблиці, а резервна копія зберігається в базі даних, а не десь зовні до файлу
Спосіб 2:
Якщо ви хочете створити резервну копію таблиці на інший сервер для вирішення проблем відновлення після аварій або запобігання втрат даних, тоді ви можете скопіювати таблицю за допомогою параметра Створити сценарії з Завдання.
По-перше, клацніть правою кнопкою миші на базі даних, яка містить таблиці, які ви хочете створити для резервного копіювання, і виберіть Завдання -> Створити сценарії
У списку виберіть базу даних, таблиці яких потрібно створити резервну копію
Наступний екран, який з'явиться, - Параметри сценарію.
Прокрутіть вниз по параметрах сценарію, поки не з’явиться Параметри таблиці / Перегляду. Ми хочемо, щоб це було правдивим: Перевірте обмеження, дані сценарію, сторонні ключі, первинні клавіші, тригери та унікальні ключі. (Або ви можете вибрати все, що вам потрібно, звичайно). Виберіть Далі, і нам представлений екран "Вибір типів об'єктів"
Виберіть «Таблиці» та натисніть кнопку «Далі». Нарешті, виберіть таблицю або таблиці, які хочете створити резервну копію, і натисніть наступну
Спосіб 3:
Ви також можете використовувати утиліту bcp для резервного копіювання таблиць.
Ви не можете створити резервну копію конкретних таблиць у .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 з відповіді 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. Ви просто запускаєте команду резервної бази даних після того, як ви заповнили таблиці в новій базі даних.
Використовуючи функцію масового експорту SSMS, тут згадується найкращий та найпростіший метод
Майстер імпорту та експорту SQL Server : майстер імпорту та експорту SQL Server надає графічний інтерфейс користувача для пакета служб інтеграції служб SQL Server (SSIS). Після створення пакету можна автоматизувати роботу за графіком. Його можна додатково налаштувати та змінити за допомогою інструментів даних SQL Server (SSDT)
Для початку відкрийте майстра імпорту та експорту, клацніть правою кнопкою миші базу даних та виберіть підменю Завдання -> Команда експорту даних.
Інший метод полягає у використанні 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 мати дозвіл. Див. Коментар у парочку).
І якщо ви хочете, можете додати умову до таблиці (фільтр повинен починатися з І на даний момент)
Резервне копіювання єдиної таблиці з її даними з бази даних у SQL Server 2008:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]