Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Программно сгенерировать скрипт для всех обьектов в базе

#c_sharp #sql_server


В MS SQL есть инструмент генерации скриптов базы (правый клик на базе, затем Tasks
-> Generate Scripts -> all tables + в настройках advanced заменить Types of data to
script с Schema only на Data only).

Я пользуюсь этим инструментом, чтобы сделать резервную копию базы с продакшн сервера:
это appharbor, я не могу сделать бекап локально и забрать файл с сервера.

А можно ли запускать этот инструмент автоматически, программным способом, например
из c#? Хочу перейти к регулярным резервным копиям по расписанию, а не делать изредка
по настроению копии "на всякий случай".

На сервере стоит SQL Server 2008 R2.
    


Ответы

Ответ 1



Генерация скрипта - не самый удобный вариант для экспорта базы вместе с данными. Есть утилита sqlpackage, которая позволяет экспортировать/импортировать базу в формате bacpac. Это стандартный способ для импорта/экспорта баз для Azure SQL, где нет прямого доступа к серверу: sqlpackage.exe /Action:Export /ssn:tcp:.database.windows.net,1433 /sdn: /su: /sp: /tf: /p:Storage=File Соответствующие пункты в контекстном меню в SMSS - Import / Export Data Tier Application. Для импорта используется bulk insert, что в разы быстрее простой построчной вставки.

Ответ 2



Для этого надо воспользоваться SQL Server Management Objects Пример кода на C# для генерации скриптов можно посмотреть по ссылке Сам использую скрипт на Powershell - ссылка на готовый скрипт В вашем случае придется добавить в примеры параметр для включения данных в экспорт ScriptingOptions.ScriptData = True подробнее о параметре

Комментариев нет:

Отправить комментарий