Dlaczego: r SQLCMD polecenie jest oznaczone jako nieprawidłowe w skrypcie po instalacji?

18

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?

Magier
źródło
przepraszam, myślę, że jaśniej „jaka akcja jest ustawiona na skrypt, który ma w sobie„: r ”?” :)
Ed Elliott,

Odpowiedzi:

17

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

:r path\to\file.sql

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.

Solomon Rutzky
źródło
4

Ważny błąd

Wynika to z tego, że :r somescript.sqlnie jest prawidłowy SQL. Pojawia się błąd składniowy, który dokładnie taki jest komunikat o błędzie.

SQL80001: Niepoprawna składnia w pobliżu „:”.

Tryb SQLCMD

Skrypt po wdrożeniu jest wykonywany w trybie SQLCMD.

Narzędzie sqlcmd umożliwia wprowadzanie instrukcji Transact-SQL, procedur systemowych i plików skryptów w wierszu polecenia, w edytorze zapytań w trybie SQLCMD, w pliku skryptu systemu Windows lub w kroku zadania systemu operacyjnego (Cmd.exe) programu SQL Server Praca agenta. To narzędzie używa ODBC do wykonywania partii Transact-SQL.

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

  • kliknij prawym przyciskiem myszy edytor zawierający skrypt SQL
  • kliknij Ustawienia wykonania
  • kliknij Tryb SQLCMD
  • Pamiętaj, że możesz zrobić to samo z menu SQL

SSMS 17, SSMS 18

  • Zapytanie (pozycja menu)
  • Tryb SQLCMD

Zobacz też

Kwiaty Setha
źródło