2009-03-09 12 views
4

Wir verwenden ein Visual Studio-Datenbankprojekt für die Quellcodeverwaltung des Schemas unserer Datenbank. Wir möchten auch bestimmte Daten (Konfigurationswerte usw.) von der Datenbank aus skripten. Daher verwenden wir ein benutzerdefiniertes Befehlszeilenprogramm, um Daten in Einfügeskripten zu speichern. Eine Datei repräsentiert die Skriptdaten einer Tabelle.Umgang mit SQLCMD: r in einem Post-Deployment-Skript

Es gibt ein bestimmtes SQL-Skript, das Post-Deployment-Skript, das nach dem Deploy-Befehl für das Projekt automatisch ausgeführt wird. Es wird empfohlen, hier andere Skriptdateien zu verlinken, und wir möchten unsere Data-Insert-Skripte verlinken.

Anweisungen sagen, diesen Befehl zu verwenden, um von beliebigen Dateien

SQLCMD :r <filename> 

Das Problem ist, zu analysieren, ich sehe nicht, wie meine Kollegen der Lage, es zu benutzen, wenn sie es aus der Quellcodeverwaltung herunterladen, weil die Das Startverzeichnis für den Befehl: r befindet sich dort, wo sich devenv.exe (VS dev. env.) befindet.

Nähern wir uns dem Problem, Daten mit den richtigen Werkzeugen aus dem richtigen Winkel zu erstellen? Und wenn ja, wie kann ich den Pfad der Post-Deployment-Skriptdatei abrufen oder wie kann ich die Insert-Skripts syntaktisch analysieren, ohne ihren Pfad in das Post-Deployment-Skript zu schreiben?

Antwort

5

Nun, es stellt sich heraus, dass es einfach reicht, den relativen Pfad zur Skriptdatei anzugeben. Ich wurde von der SQL-Syntaxvalidierungsfunktion von Visual Studio in die Irre geführt, die den Pfad nach: r unter Verwendung der Position von devenv.exe als Startverzeichnis auswertete.

Wenn Deploy jedoch für das Projekt ausgeführt wird, verwendet der Befehl: r das Verzeichnis des Skripts als Startverzeichnis, sodass der Speicherort der Datei problemlos mit einem relativen Pfad angegeben werden kann.