Mam 4 skrypty sql, które chcę uruchomić w DACPAC w PostDeployment, ale kiedy próbuję zbudować projekt VS dla 3 z nich, pojawia się ten błąd:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Skrypty zawierają tylko INSERT
instrukcje w różnych tabelach w bazie danych. Wszystkie z nich są tak skonstruowane
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
tylko w różnych tabelach iz różnymi danymi.
Moje pytanie brzmi: dlaczego VS narzeka na 3 z nich, skoro wszystkie skrypty są takie same pod względem składni i operacji?
PS: Dodanie „GO” między instrukcjami, jak sugeruje błąd, nic nie robi.
sql
sql-server
visual-studio-2012
dacpac
Cosmin Ionascu
źródło
źródło
Pomimo tego, że wydaje się to dość stare, utknąłem z tym na kilka godzin i myślę, że ten sposób może być pomocny dla wielu.
W programie
Database project
pliki ustawione jakoBuild
są traktowane jako struktura bazy danych, więc tylko jedna instrukcja jest dozwolona w takim pliku zgodnie z projektem.Go
ani żaden inny terminator wsadowy nie zmieni tego zachowania, ta wiadomość jest po prostu błędna. Więcej informacji tutaj.Istnieje wiele innych opcji kompilacji plików w takim projekcie. W twoim przypadku wydaje się, że
PostDeploy
. W takim pliku możesz mieć różne polecenia, takie jakinserts
itp.Następnie można użyć danych wyjściowych projektu bazy danych jako pliku dacpac dla aplikacji bazy danych warstwy danych (w przeciwnym razie nie jest uwzględniony).
źródło
Usuń; (średnik) z ostatniego z każdej instrukcji i nie jestem pewien, ale GO nie jest wymagane między powyższymi instrukcjami wstawiania.
źródło