2013-05-28 13 views
37

Ho creato un progetto di database in VS2012. Ho aggiunto la struttura del database. Funziona bene per pubblicare e confrontare il database.VS2012 Script post-distribuzione relativo a diversi altri script

Ora in pubblicazione voglio caricare automaticamente più tabelle con dati predefiniti.

Ho creato cinque file di script con INSERT istruzioni generate da SQL Management Studio. Sono stati aggiunti a una cartella Script nel mio progetto di database.

Quindi ho impostato BuildAction=PostDeploy. Funziona bene MA per qualche motivo è possibile avere UNO script impostato su PostDeploy ....

Mi rendo conto che posso spostare tutti gli script in un unico file. Ma ho molto e mi piacerebbe molto raggrupparli in file separati per mantenere un po 'di ordine.

Ho quindi creato un file PostDeploy.sql e ho provato a fare riferimento a tutti gli altri file di script da lì. L'intestazione del file dà le direzioni:

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 

Così scrivo il mio file:

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

Il file si lamenta sulla sintassi sbagliata.

risposta

74

Si è scoperto che Visual Studio mi ha ingannato con avvisi di sintassi errati! La mia configurazione era perfettamente valida.

Per evitare avvisi, fare clic con il pulsante destro del mouse in qualsiasi punto all'interno del file e scegliere "Impostazioni di esecuzione - Modalità SQLCMD".

C'è anche un pulsante della barra degli strumenti denominato Modalità SQLCMD che fa la stessa cosa.

Ecco la voce di menu nel caso in cui non si riesce a trovare il pulsante della barra degli strumenti: enter image description here

+0

Questo risolve il problema del l'editor Transact-SQL pensando che si tratta di un errore di sintassi. Ma un progetto SSDT non riesce ancora a costruire o distribuire. – Pat

+0

Provare a chiudere completamente Visual Studio. Pulisci la tua soluzione SSDT eliminando le cartelle bin e obj, i file * .dbmdl, * .suo e * .user quindi riapri la tua soluzione SSDT. Ora dovresti essere in grado di costruire/distribuire il tuo progetto. – TDN

+0

@Pat Dai un'occhiata alla finestra di output (anziché all'elenco degli errori) - dovresti vedere l'errore attuale lì. Nel mio caso era che i miei file inclusi avevano spazi nei loro percorsi, e l'intero percorso doveva essere racchiuso tra virgolette. Non è necessario pulire/riavviare. – sellotape

Problemi correlati