Когда-либо вам приходилось обновлять подмножество таблиц в вашей базе данных 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 с тремя шагами:
- Экспортировать таблицы из исходной базы данных.
- Удалить целевую базу данных, если она существует.
- Импортировать 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 дополнительно упрощает процесс восстановления таблиц. Не забывайте всегда делать резервные копии ваших баз данных перед выполнением любой миграции данных.