2013-05-28 4 views
37

Ich habe ein Datenbankprojekt in VS2012 erstellt. Ich habe Datenbankstruktur hinzugefügt. Es funktioniert gut, Datenbank zu veröffentlichen und zu vergleichen.VS2012 Post-Deployment-Skript, das sich auf mehrere andere Skripte bezieht

Jetzt auf veröffentlichen möchte ich automatisch mehrere Tabellen mit Standarddaten laden.

Ich erstellte fünf Skriptdateien mit INSERT Anweisungen generiert von SQL Management Studio. Sie wurden einem Skriptordner in meinem Datenbankprojekt hinzugefügt.

Dann setze ich . Das funktioniert gut. ABER aus irgendeinem Grund ist es nur möglich ein Skript auf PostDeploy ....

zu setzen.

Ich weiß, dass ich alle Skripte in eine Datei verschieben kann. Aber ich habe eine Menge und würde sie gerne in separaten Dateien gruppieren, um Ordnung zu halten.

Ich erstellte dann eine PostDeploy.sql Datei und versuchte, alle anderen Skriptdateien von dort zu referenzieren. Der Datei-Header gibt Anweisungen:

Post-Deployment Script Template       
---------------------------------------------------------------------------- 
This file contains SQL statements that will be appended to the build script. 
Use SQLCMD syntax to include a file in the post-deployment script. 
Example:  :r .\myfile.sql 

So schreibe ich meine Datei:

:r .\MyScript1.sql 
:r .\MyScript2.sql 
:r .\MyScript3.sql 
:r .\MyScript4.sql 
:r .\MyScript5.sql 

Die Datei auf falsche Syntax beschwert.

Antwort

74

Es stellte sich heraus, dass Visual Studio mich mit falschen Syntaxwarnungen getäuscht hat! Mein Setup war absolut gültig.

Um Warnungen zu vermeiden, klicken Sie mit der rechten Maustaste irgendwo in die Datei und wählen Sie "Ausführungseinstellungen - SQLCMD-Modus".

Es gibt auch eine Symbolleistenschaltfläche namens SQLCMD-Modus, die dasselbe tut.

Hier ist der Menüpunkt, falls Sie die Schaltfläche in der Symbolleiste finden: enter image description here

+0

Dies löst das Problem des Editors Transact-SQL denken, dass es ein Syntaxfehler ist. Ein SSDT-Projekt kann jedoch immer noch nicht erstellt oder bereitgestellt werden. – Pat

+0

Versuchen Sie, Visual Studio vollständig zu schließen. Reinigen Sie Ihre SSDT-Lösung, indem Sie die Ordner bin und obj, die Dateien * .dbmdl, * .suo und * .user löschen und öffnen Sie dann Ihre SSDT-Lösung erneut. Sie sollten nun in der Lage sein, Ihr Projekt zu erstellen/bereitzustellen. – TDN

+0

@Pat Werfen Sie einen Blick in das Ausgabefenster (anstelle der Fehlerliste) - Sie sollten dort den tatsächlichen Fehler sehen. In meinem Fall hatten meine eingeschlossenen Dateien Leerzeichen in ihren Pfaden und der gesamte Pfad musste in doppelte Anführungszeichen eingeschlossen werden. Keine Reinigung/Neustart erforderlich. – sellotape

Verwandte Themen