Używam projektu bazy danych SQL 2008 (w visual studio) do zarządzania schematem i wstępnymi danymi testowymi dla mojego projektu. Projekt atabase wykorzystuje wdrożenie pocztowe, które zawiera wiele innych skryptów wykorzystujących składnię ": r" SQLCMD.Logika warunkowa w skrypcie PostDeployment.sql przy użyciu SQLCMD
Chciałbym móc warunkowo zawierać określone pliki na podstawie zmiennej SQLCMD. Pozwoli mi to uruchomić projekt kilkakrotnie z naszą nocną kompilacją, aby skonfigurować różne wersje bazy danych z różnymi konfiguracjami danych (dla systemu multi-tenant).
Próbowałem następujące:
IF ('$(ConfigSetting)' = 'Configuration1')
BEGIN
print 'inserting specific configuration'
:r .\Configuration1\Data.sql
END
ELSE
BEGIN
print 'inserting generic data'
:r .\GenericConfiguration\Data.sql
END
Ale pojawia się błąd kompilacji: SQL01260: Wystąpił błąd krytyczny parser: Script.PostDeployment.sql
Czy ktoś widział ten błąd lub udało się tak skonfigurować skrypt postdeploymentu, aby był elastyczny? Czy też całkowicie niewłaściwie podchodzę do tego?
Dzięki, Rob
PS: Próbowałem również zmienić to wokół, tak aby ścieżka do pliku jest zmienna, similar to this post. Ale to daje mi błąd, mówiąc, że ścieżka jest niepoprawna.
Z wymogu sprawozdania GO, pracowałem wokół tego wcześniej wykonując oświadczenie dynamicznego SQL. To nie był jednak projekt MS Database. YMMV. – fiat