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.
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
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
@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