Ich habe ein paar Mal mit Post-Deployment-Skripten gearbeitet und immer intuitiv die Build-Aktion "PostDeploy" verwendet, denn das ist es, was es ist. Jetzt versuche ich zum ersten Mal, die eingebaute Anweisung aus der Skriptvorlage zu befolgen, um die ":r somescript.sql"
Syntax zu verwenden.
Diese Zeile wird sofort als falsch markiert:
"SQL80001 falsche Syntax neben ':'"
Ich habe Vorschläge gefunden, die PDS auf Build Action "none" zu setzen. Dies hilft nicht, der Fehler bleibt bestehen. Was vermisse ich hier?
Antworten:
Angenommen, der Fehler tritt während des Erstellungsprozesses auf, und Sie haben keine tatsächlichen Syntaxfehler, und es ist einfach
Der Fehler tritt auch dann auf, wenn die zu importierende Datei nicht existiert. Bitte überprüfen Sie den Speicherort der Datei. Wenn Sie keinen absoluten Pfad angegeben haben, ist der Pfad relativ zum Lösungsordner (zumindest für mich).
Wenn Sie während der Entwicklung den Fehler sehen möchten, den der Erstellungsprozess meldet, müssen Sie im T-SQL-Editor von Visual Studio den "SQLCMD-Modus" aktivieren. Ganz rechts in der Schaltflächenleiste befindet sich eine Schaltfläche mit einem "!" darin sollte das ermöglichen. Sie können auch zum SQL- Menü wechseln , Transact-SQL Editor -> auswählen, Ausführungseinstellungen -> auswählen und schließlich den SQLCMD-Modus auswählen . Wenn Sie das Skript jetzt ausführen, wird es korrekt interpretiert
:r
, genau wie der Build / Publish-Prozess.Außerdem muss für Ihr Post Deploy-Skript (PDS) die Build-Aktion auf PostDeploy festgelegt sein . Wenn es auf None gesetzt ist, wird es vom SSDT-Erstellungsprozess vollständig übersprungen.
quelle
Gültiger Fehler
Dies liegt daran
:r somescript.sql
, dass SQL nicht gültig ist. Es wird ein Syntaxfehler angezeigt, der in der Fehlermeldung genau angegeben ist.SQLCMD-Modus
Das Post-Deployment-Skript wird im SQLCMD-Modus ausgeführt.
Auflösung
Denken Sie daran, dass Sie eine Verbindung zu einer Datenbank herstellen und SQL in Visual Studio ausführen können. Sie würden denselben Syntaxfehler sehen, wenn Sie dasselbe Skript in SSMS öffnen würden. Sowohl in SSMS als auch in Visual Studio können Sie jedoch den SQLCMD-Modus "aktivieren".
VS 2017
SSMS 17, SSMS 18
Siehe auch
quelle