Published on

December 30, 2020

Эффективное восстановление таблиц в SQL Server

Когда-либо вам приходилось обновлять подмножество таблиц в вашей базе данных SQL Server, но вы обнаружили, что восстановление всей базы данных из резервной копии неэффективно? В этой статье мы рассмотрим более эффективный метод восстановления отдельных таблиц с использованием файлов BACPAC.

Что такое файл BACPAC?

Файл BACPAC – это двоичный файл, который содержит схему и данные базы данных SQL Server. Он позволяет экспортировать и импортировать подмножество таблиц, что делает его идеальным для обновления конкретных таблиц в большой базе данных.

Экспорт таблиц с помощью SqlPackage.exe

Чтобы экспортировать подмножество таблиц с помощью SqlPackage.exe, вы можете использовать следующую команду:

.\sqlpackage.exe /Action:Export /ssn:ИмяСервера /sdn:ИмяБазыДанных /tf:"C:\Путь\К\Экспорту.bacpac" /p:TableData=Схема.ИмяТаблицы

Эта команда экспортирует указанную таблицу из исходной базы данных в файл BACPAC.

Импорт таблиц с помощью SqlPackage.exe

Чтобы импортировать таблицы из файла BACPAC в новую базу данных, вы можете использовать следующую команду:

.\sqlpackage.exe /Action:Import /tsn:ИмяСервера /tdn:НовоеИмяБазыДанных /sf:"C:\Путь\К\Экспорту.bacpac"

Эта команда создает новую базу данных с той же схемой, что и исходная база данных, но включает только подмножество таблиц, указанных в файле BACPAC.

Автоматизация процесса экспорта и импорта

Чтобы автоматизировать процесс экспорта и импорта, вы можете создать задание агента SQL Server с тремя шагами:

  1. Экспортировать таблицы из исходной базы данных.
  2. Удалить целевую базу данных, если она существует.
  3. Импортировать BACPAC в новую базу данных.

Каждый шаг можно выполнить с помощью комбинации команд PowerShell и T-SQL. Например:

cd "C:\Program Files\Microsoft SQL Server\140\DAC\bin"
.\sqlpackage.exe /Action:Export /ssn:ИмяСервера /sdn:ИмяБазыДанных /tf:"C:\Путь\К\Экспорту.bacpac" /of /p:TableData=Схема.ИмяТаблицы
DROP DATABASE IF EXISTS [НовоеИмяБазыДанных]
cd "C:\Program Files\Microsoft SQL Server\140\DAC\bin"
.\sqlpackage.exe /Action:Import /tsn:ИмяСервера /tdn:НовоеИмяБазыДанных /sf:"C:\Путь\К\Экспорту.bacpac"

Создав задание агента SQL Server с этими шагами, вы можете запланировать выполнение задания с определенной периодичностью, чтобы ваше подмножество таблиц всегда было актуальным.

Заключение

Восстановление отдельных таблиц из резервной копии в SQL Server может быть неэффективным, особенно при работе с большими базами данных. Однако, используя файлы BACPAC и исполняемый файл SqlPackage.exe, вы можете легко экспортировать и импортировать подмножество таблиц, экономя время и ресурсы. Автоматизация этого процесса с помощью задания агента SQL Server дополнительно упрощает процесс восстановления таблиц. Не забывайте всегда делать резервные копии ваших баз данных перед выполнением любой миграции данных.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.