Как включить sql файл в файл sql? MS SQL
У нас есть несколько сценариев SQL, которые генерируются из модели сущности, и их нужно запускать в правильном порядке + есть несколько сценариев заполнения, которые вставляют некоторые тестовые данные в БД.
Теперь мне нужно открыть каждый из этих script в визуальной студии в правильном порядке и нажать выполнить SQL (ctrl shift E)
Есть ли способ создать что-то вроде Master.sql и внутри, я хотел бы использовать некоторые include. Что-то вроде:
BEGIN TRANSACTION
ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...
COMMIT
Мне нужно это только для запуска из visual studio, это не будет частью самого приложения.
Как это сделать?
Edit
Я обнаружил, что есть что-то, называемое 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
Ответы
Ответ 1
Использовать утилиту 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
Ответ 2
Используйте Business Intelligence Development Studio, которая поставляется с SQL Server для этого. Создайте новый пакет SSIS. Внутри этого пакета создайте несколько Execute SQL Tasks
в потоке управления для каждого файла, который у вас есть, и установите SQLSourceType
на FileConnection
и выберите файл.