Microsoft SQL Server Management Studio выполняет скрипт изнутри скрипта - PullRequest
6 голосов
/ 01 ноября 2011

Я хочу иметь возможность сохранять и сохранять различные сценарии создания таблиц отдельно.

Для создания всей базы данных у меня будет основной файл .sql, который вызывает все сценарии по порядку, так что все внешние ключи в таблицах создаются в правильном порядке.

Затем я мог бы также создать скрипт для удаления всей структуры таблицы, отбросив их в обратном порядке.

Есть ли способ сделать это?

Ответы [ 3 ]

13 голосов
/ 01 ноября 2011

Использование скрытой r: команды SQLCMD:

: r <имя файла>

Анализирует дополнительные операторы Transact-SQL и команды sqlcmd из файла, указанного в, в кэш операторов.

Скажите, что ваши сценарии создания createT1.sql и createT2.sql, тогда ваш главный файл .sql будет выглядеть примерно так:

create database foo;
go

use foo;
go

:r createT1.sql
:r createT2.sql
go

Этот синтаксис работает и в SSMS, пока вы включаете режим SQLCMD, см. Редактирование сценариев SQLCMD с помощью редактора запросов . Также библиотека dbutilsqlcmd поддерживает расширение :r, если вы хотите встроить это в свое приложение.

3 голосов
/ 01 ноября 2011

Я думаю, что самым простым способом было бы иметь главный пакетный файл, и внутри этого пакетного файла вы могли бы вызывать sqlcmd для всех ваших файлов сценариев (* .sql) последовательно.

Вот хороший справочник о том, как это сделать: http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

1 голос
/ 01 ноября 2011

Поскольку вы поставили SSMS прямо в заголовке вашего вопроса, я собираюсь предположить, что вы хотите сделать это оттуда.

Вы можете запустить SSMS в режиме SQLCMD. Это должно дать вам гораздо больше гибкости. Вы можете посмотреть его демо здесь или посмотреть дополнительную информацию на сайте Microsoft .

Для простой функциональности командной строки я бы лично использовал скрипт Powershell. Вы можете добавить командлеты Microsoft SQL, чтобы позволить вам подключаться к SQL Server, или вы можете свернуть свой собственный с SMO или использовать стороннее решение, такое как SQLPSX с открытым исходным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...