Pracowałem kilka razy ze skryptami po wdrożeniu i zawsze intuicyjnie korzystałem z akcji kompilacji „PostDeploy”, ponieważ tak właśnie jest. Teraz po raz pierwszy próbuję zastosować się do wbudowanej instrukcji z szablonu skryptu, aby użyć ":r somescript.sql"
składni.
Natychmiast linia ta zostaje oznaczona jako błędna:
„Zła składnia SQL80001 obok„: ”
Znalazłem sugestie, aby ustawić PDS do budowania działania „brak”. To nie pomaga, błąd pozostaje. Czego tu brakuje?
Odpowiedzi:
Zakładając, że błąd występuje podczas procesu kompilacji i że nie występują żadne rzeczywiste błędy składniowe, i jest to prosty
wówczas błąd występuje również wtedy, gdy importowany plik nie istnieje. Sprawdź lokalizację pliku. Jeśli nie podałeś ścieżki bezwzględnej, ścieżka będzie względna do folderu rozwiązania (przynajmniej dla mnie tak jest).
Jeśli podczas programowania chcesz zobaczyć błąd zgłaszany przez proces kompilacji, upewnij się, że włączono „tryb SQLCMD” w edytorze T-SQL w Visual Studio. Po prawej stronie paska znajduje się przycisk z napisem „!” w tym powinno to umożliwić. Lub możesz przejść do menu SQL , wybierz Transact-SQL Editor -> , wybierz opcję Ustawienia wykonania -> , a następnie ostatecznie wybierz Tryb SQLCMD . Teraz, kiedy wykonasz skrypt, będzie on poprawnie interpretował
:r
, podobnie jak proces kompilacji / publikacji.Ponadto w skrypcie Post Deploy Script (PDS) należy ustawić opcję Kompilacja działania na PostDeploy . Jeśli jest ustawiony na Brak , zostanie całkowicie pominięty przez proces kompilacji SSDT.
źródło
Ważny błąd
Wynika to z tego, że
:r somescript.sql
nie jest prawidłowy SQL. Pojawia się błąd składniowy, który dokładnie taki jest komunikat o błędzie.Tryb SQLCMD
Skrypt po wdrożeniu jest wykonywany w trybie SQLCMD.
Rozkład
Pamiętaj, że możesz połączyć się z bazą danych i uruchomić SQL z Visual Studio. Ten sam błąd składniowy byłby widoczny, gdybyś otworzył ten sam skrypt w SSMS. Jednak zarówno w SSMS, jak i Visual Studio można „włączyć” tryb SQLCMD.
VS 2017
SSMS 17, SSMS 18
Zobacz też
źródło