Я хотел бы автоматизировать генерацию скриптов в SQL Server Management Studio 2008.
Прямо сейчас я делаю следующее:
- Щелкните правой кнопкой мыши мою базу данных, Задачи, «Создать сценарии ...»
- вручную выберите все параметры экспорта, которые мне нужны, и нажмите «Выбрать все» на вкладке «Выбрать объект».
- Выберите папку для экспорта
- В конце концов нажмите кнопку "Готово"
Есть ли способ автоматизировать эту задачу?
Изменить: я хочу создавать сценарии создания , а не сценарии изменения.
Ответы:
В Visual Studio 2008 SP1 Team Suite Бранн упоминает версию 1.4 мастера публикации баз данных. Он установлен с sql server 2008 (может быть, только профессиональным?) В \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4. Вызов VS из проводника сервера просто вызывает это. Вы можете достичь той же функциональности через командную строку, например:
Я не знаю, имеет ли v1.4 те же проблемы, что и v1.1 (пользователи преобразуются в роли, ограничения не создаются в правильном порядке), но это не решение для меня, потому что он не скрипт объекты в разные файлы, такие как параметр Задачи-> Создать сценарии в SSMS. В настоящее время я использую модифицированную версию Scriptio (использует MS SMO API), чтобы действовать как улучшенная замена для мастера публикации базы данных (sqlpubwiz.exe). В настоящее время его нельзя использовать в сценариях из командной строки, я могу добавить этот вклад в будущем.
Изначально Scriptio был размещен в блоге Билла Грациано, но впоследствии был выпущен Биллом в CodePlex и обновлен другими. Прочтите обсуждение, чтобы узнать, как скомпилировать для использования с SQL Server 2008.
http://scriptio.codeplex.com/
РЕДАКТИРОВАТЬ: С тех пор я начал использовать продукт RedGate SQL Compare для этого. Это очень хорошая замена тому, чем должен был быть мастер публикации sql. Вы выбираете базу данных, резервную копию или моментальный снимок в качестве источника и папку в качестве места вывода, и все это красиво выгружается в структуру папок. Это тот же формат, что и другой их продукт, SQL Source Control.
источник
SqlPubwiz имеет очень ограниченные возможности по сравнению с генерацией скрипта в SSMS. Напротив, параметры, доступные в SMO, почти точно соответствуют параметрам в SSMS, что позволяет предположить, что это, вероятно, один и тот же код. (Надеюсь, MS не писала его дважды!) В MSDN есть несколько примеров, подобных этому, которые показывают таблицы сценариев как отдельные объекты. Однако, если вы хотите, чтобы все было правильно написано с помощью «полной» схемы, которая включает объекты DRI (декларативная ссылочная целостность), такие как внешние ключи, тогда отдельные таблицы сценариев не работают с зависимостями правильно. Я обнаружил, что необходимо собрать все URN и передать их скриптеру в виде массива. Этот код, измененный из примера,
источник
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
из сборки C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll. Это то, что использует SSMS. (В качестве альтернативы вы можете посмотреть на классMicrosoft.SqlServer.Management.UI.GenerateScript
из сборки C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dll.)Я написал утилиту командной строки с открытым исходным кодом под названием SchemaZen, которая делает это. Это намного быстрее, чем создание сценариев из студии управления, и его вывод более удобен для контроля версий. Он поддерживает создание сценариев как для схемы, так и для данных.
Чтобы сгенерировать скрипты, выполните:
Затем для воссоздания базы данных из скриптов выполните:
источник
Вы можете использовать SQL Server Management Object (SMO) для автоматизации задач управления SQL Server 2005, включая создание скриптов: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
источник
Если вы разработчик, определенно выбирайте SMO. Вот ссылка на класс Scripter, который является вашей отправной точкой:
Класс сценария
источник
Я не вижу Powershell с SQLPSX, упомянутого ни в одном из этих ответов ... Я лично не играл с ним, но он выглядит красиво простым в использовании и идеально подходит для этого типа задач автоматизации с такими задачами, как:
(ссылка: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Страница проекта: http://sqlpsx.codeplex.com/
Основное преимущество этого подхода состоит в том, что он сочетает в себе конфигурируемость / настраиваемость прямого использования SMO с удобством и удобством использования простого существующего инструмента, такого как Мастер публикации баз данных.
источник
В «Инструменты»> «Параметры»> «Дизайнеры»> «Дизайнеры таблиц и баз данных» есть опция «Автоматически создавать сценарии изменений», которая будет генерировать один для каждого изменения, которое вы вносите во время сохранения.
источник
Вы можете сделать это с помощью кода T-SQL, используя таблицы INFORMATION_SCHEMA.
Существуют также сторонние инструменты - мне нравится Apex SQL Script именно для того, о чем вы говорите. Я запускаю его полностью из командной строки.
источник
Попробуйте новые инструменты командной строки SQL Server для создания сценариев T-SQL и отслеживания динамических управленческих представлений.
Работал у меня как шарм. Это новый инструмент на основе Python от Microsoft, который запускается из командной строки. Все работает как описано на странице Microsoft (см. Ссылку ниже) У меня работало с SQL 2012 server.
Вы устанавливаете его с помощью pip:
Обзор параметров команды как обычно с h для справки:
Подсказка: если вы входите в SQL-сервер через аутентификацию Windows, просто оставьте имя пользователя и пароль.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- Просмотры/
источник
Если вам нужно решение Microsoft, вы можете попробовать: Мастер публикации базы данных Microsoft SQL Server 1.1.
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Он создает пакетный процесс, который вы можете запускать в любое время, когда вам нужно перестроить скрипты.
источник
Я использую DB Comparer - его бесплатную и беспроблемную скрипт для всей БД, которую можно сравнить с другой БД, а также создать сценарий Diff. Отлично подходит для сценариев изменения от разработки к производству. http://www.dbcomparer.com/
источник
Также есть этот простой инструмент командной строки, который я создаю для своих нужд.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Он может экспортировать всю базу данных и пытается экспортировать зашифрованные объекты. Все хранится в папках и отдельных файлах sql для удобного сравнения файлов.
Код также доступен на github.
источник
Из Visual Studio 2008 SP1 TeamSuite:
На вкладке Server Explorer / Data Connections есть инструмент публикации для поставщика, который выполняет то же самое, что и «Мастер публикации базы данных Microsoft SQL Server», но совместим с MS Sql Server 2008.
источник
Я использую VS 2012 (для баз данных на MSSQL Server 2008), база данных сравнения имеет возможность сохранить ее, сравнение и параметры. По сути, это ваши настройки для доставки. После этого вы можете обновить или сгенерировать скрипт.
Мне просто немного неудобно загружать его из файла позже (перетаскивание из проводника Windows), поскольку я не вижу файл в проводнике решений.
источник