Как включить файл sql в файл sql? MS SQL - PullRequest
12 голосов
/ 07 марта 2012

У нас есть несколько сценариев SQL, которые сгенерированы из модели сущностей, и их нужно запускать в правильном порядке + есть несколько сценариев заполнения, которые вставляют некоторые тестовые данные в БД.

Теперь мне нужно открыть каждый из этих сценариев в Visual Studio в правильном порядке и нажать «Выполнить SQL» (ctrl shift E)

Есть ли способ создать что-то вроде Master.sql, и внутри я хотел бы использовать некоторые include. Что-то вроде:

BEGIN TRANSACTION

ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...

COMMIT

Мне нужно это только для запуска из Visual Studio, это не будет частью самого приложения.

Как это сделать?

Редактировать

Я обнаружил, что есть что-то, называемое SQLCMD Scripts, которое может импортировать файл SQL http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

Но тогда у меня вопрос, как получить путь к каталогу текущего решения в команду : r

РЕДАКТИРОВАТЬ 2

Итак, я нашел, как это сделать, не идеально, но работает. Плохо то, что $ (SolutionDir) не загружается из переменных VS, поэтому вам нужно установить его вручную. Этот код предназначен для запуска в visual studio:

-- turn on in menu: Data -> Transact SQL editor -> SQL CMD mode
-- set this to path where the .sln file is.
:setvar SolutionDir C:\_work\projectname\

:!! echo $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
go

:!! echo $(SolutionDir)Maa.EntityModel.All\DblQEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbQEntityModel.edmx.sql 
go

Ответы [ 2 ]

14 голосов
/ 07 марта 2012

Использовать утилиту sqlcmd .

Извлечение, которое вы можете найти интересным:

-i input_file[,input_file2...]

Идентифицирует файл, который содержит пакет операторов SQL или хранимых процедур. Можно указать несколько файлов, которые будут прочитаны и обработаны по порядку. Не используйте пробелы между именами файлов. sqlcmd сначала проверит, существуют ли все указанные файлы. Если один или несколько файлов не существуют, sqlcmd завершит работу.

Пример:

sqlcmd -dDataBaseName -E -Stcp:ServerName\instancename -imaster.sql

Master.Sql:

:r file1.sql
:r file2.sql
1 голос
/ 07 марта 2012

Для этого используйте Business Intelligence Development Studio , поставляемую с SQL Server.Создайте новый пакет служб SSIS.Внутри этого пакета создайте несколько Execute SQL Tasks в потоке управления для каждого имеющегося файла, установите SQLSourceType на FileConnection и выберите свой файл.

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