2012-03-07 18 views
11

Mamy kilka skryptów SQL, które są generowane z modelu encji i muszą być uruchamiane w poprawnej kolejności + istnieje kilka skryptów do wypełniania, które wstawiają niektóre dane testowe do DB.Jak dołączyć plik sql do pliku sql? MS SQL

Teraz muszę otworzyć każdy z tych skrypt w visual studio w odpowiedniej kolejności i kliknij wykonać SQL (Ctrl + Shift + E)

Czy istnieje sposób, aby stworzyć coś podobnego Master.sql i wewnątrz chciałbym użyć niektóre obejmują. Coś takiego:

BEGIN TRANSACTION 

ImportOrInclude myDB1.sql 
ImportOrInclude myDB2.sql 
... 

COMMIT 

Potrzebuję tego tylko do uruchomienia ze studia graficznego, to nie będzie częścią samej aplikacji.

Jak to zrobić?

Edit

Odkryłem, że istnieje coś, co nazywa skryptów Sqlcmd który można zaimportować plik SQL http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

Ale moje pytanie brzmi wtedy jak uzyskać ścieżkę katalogu obecne rozwiązanie jest do : R polecenie

EDIT 2

Więc znalazłem, jak to zrobić, nie idealne, ale działa. Złe jest to, że $ (SolutionDir) nie jest ładowany ze zmiennych VS, więc musisz ustawić go ręcznie. Ten kod ma zostać uruchomiony w 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 

Odpowiedz

14

Use sqlcmd utility.

Extract można znaleźć ciekawe:

-i input_file[,input_file2...] 

Identyfikuje plik zawierający pakiet instrukcji SQL lub procedur przechowywanych. Można określić wiele plików, które będą odczytywane i przetwarzane w kolejności. Nie używaj spacji między nazwami plików. sqlcmd najpierw sprawdzi, czy istnieją wszystkie określone pliki. Jeśli jeden lub więcej plików nie istnieje, program sqlcmd zakończy działanie.

Przykład:

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

Master.Sql:

:r file1.sql 
:r file2.sql 
+0

dziękuję, ale -i nie działa. only: r –

+0

Oczywiście, właśnie to przetestowałem. –

+0

Próbowałem użyć polecenia sql zawartego w visual studio i działa ono w inny sposób –

0

Użyj Business Intelligence Development Studio że pochodzi z SQL Server, aby to zrobić. Utwórz nowy pakiet SSIS. Wewnątrz tego pakietu utwórz kilka Execute SQL Tasks w strumieniu sterowania dla każdego pliku i ustaw SQLSourceType na FileConnection i wybierz swój plik.