17

Ho recentemente provato (versione SQL 2008) e li trovo abbastanza bene. Bene, l'unico problema è che la procedura guidata non è abbastanza intelligente per aggiornare la struttura del database senza prima cancellare tutti i dati. È questo il motivo per cui questi progetti non vengono utilizzati nella pratica?Chiunque usi "progetti di database" in Visual Studio?

In realtà non ho mai visto nessuno usarli o mai menzionarli affatto. Niente da vedere nei blog e nei forum a meno che non lo si cerchi esplicitamente.

Cosa c'è di sbagliato in loro?

+0

Shog si dovrebbe tornare nel commento sul confronto degli schemi questo un pezzo chiave di dati e fammi sapere che non sta usando VS Data Amico. – JoshBerke

+0

Sembra meglio grazie ;-) – JoshBerke

risposta

9

Uso il progetto di database che fa parte di Visual Studio Database Edition. Questo è un grande strumento. Fondamentalmente si definisce l'intero schema, in creare script che vengono poi controllati nel controllo del codice sorgente. Quindi ha gli strumenti incorporati per generare script di differenze, che tra l'altro non eliminano i dati.

Dispone inoltre di strumenti per il confronto dei dati in modo da poter confrontare i dati tra database e generare lo script per rendere i database uguali.

La recente versione di GDR ha alcune caratteristiche interessanti aggiunte. Tale che sembra che se si utilizza il loro metodo di implementazione integrato è possibile generare un pacchetto di distribuzione che, quando lo si esegue, analizzerà il database di destinazione e applicherà solo le differenze.

Se si dispone di Team Studio - Team Suite o edizione di sviluppo, è possibile utilizzare l'edizione del database.

fare un tentativo ed è una grande evoluzione in sviluppo di database

+0

puoi condurmi a come generare script di differenza in vs? – vittore

+0

@vittore: dal menu di dati in selezionare lo schema di confronto ... – JoshBerke

5

Li usiamo. Manteniamo tutti i nostri schemi per creare/aggiornare script e stored procedure. Lo scopo principale è che possiamo collegare il progetto a un SourceSafe o SVN.

È un modo semplice per controllare la versione degli script SQL.

È un po 'bizzarro provare a fare qualche test SQL in VS, ma ci sono modi per aggirarlo.

Aggiornamento

Noi in realtà l'abbiamo costruito nel nostro script di distribuzione, il nostro strumento di implementazione, passa attraverso il progetto DB (tranne che per le cartelle contrassegnate) e corre tutta la sceneggiatura. Abbiamo appena creato uno strumento rapido per eseguire il progetto. Se qualcuno ha altre soluzioni per distribuire il progetto DB che sarebbe utile.

8

Come Glennular, li stiamo utilizzando per controllare la versione del nostro schema e s'procs.

Anche se abbiamo una struttura di controllo della versione abbastanza avanzata (CI, distribuzioni automatiche per lo sviluppo, installazioni con un solo clic su stage e prod); non includiamo nessuno dei progetti DB in quella struttura. Semplicemente non ci fidiamo ancora.

UPDATE: (per Out In Space)

abbiamo progetti TFS separati per le aree funzionali dell'azienda (vendite, marketing, ecc). All'interno di ogni progetto TFS abbiamo una cartella principale e di produzione. Abbiamo anche un progetto TFS che contiene i progetti di database e un altro che contiene progetti di assembly/visual studio comuni.

Dopo il rilascio, passiamo da Principale a Produzione. Non abbiamo una filiale di gestione temporanea poiché ci muoviamo troppo velocemente per affrontarla.Giusto o sbagliato, la nostra produttività è misurata in parte dal numero di rilasci a livello di produzione che facciamo a settimana; correzioni di bug, nuove funzionalità, ecc.

CI è impostato sul ramo Principale in modo tale che ogni check in fa sì che il server di Build si distribuisca nei nostri ambienti DEV. I test di unità e Web vengono quindi eseguiti e la qualità di costruzione viene impostata automaticamente su "Sviluppo" se viene completata correttamente. Quando qualcuno modifica la qualità di costruzione in "In gestione temporanea" Ciò causa la modifica di tutti i precedenti build "in gestione temporanea" a "Rifiutato" e fa sì che tale generazione venga trasferita ai nostri server di staging durante l'aggiornamento dei file di configurazione in modo che puntino ai server corretti. (Ho usato gli script TFS Deployer e PowerShell per questo).

QA esegue il test dai nostri server di staging. Una volta soddisfatti, il team di produzione cambia la Qualità di costruzione in "Produzione". Ciò fa sì che la compilazione venga inviata a un'area di produzione che viene quindi copiata manualmente nella posizione corretta. Una volta completato, la produzione notifica lo sviluppo che poi dirama quella versione nella cartella Produzione. Viene inoltre notificato a QA chi esegue una batteria di test di produzione per verificare che tutto funzioni effettivamente come previsto.

Abbiamo rapporti impostati per mostrarci quali cambiamenti esistono tra le versioni di produzione in modo che conosciamo tutti i check in che vengono distribuiti. Ciò evita che vengano fuori incognite come una modifica del database, ecc. O qualche altro codice potenzialmente pericoloso.

Inoltre, i nostri BA stanno monitorando gli articoli di lavoro tramite Team System Web Access e sanno quando tali articoli sono in produzione.

Sebbene i nostri DBA utilizzino Database Edition (GDR), non sono rimasti impressionati dal livello di controllo per le distribuzioni automatiche. Spero che Rosario porti un migliore controllo della distribuzione sulla linea di prodotti; ma fino ad allora abbiamo TFS Deployer e PowerShell.

+0

Puoi espandere un po 'la struttura di controllo della versione? –

1

Utilizziamo il progetto di database per fornire il controllo della versione per i nostri script SQL. Ci piace anche usare l'ambiente Visual Studio per modificare SQL; è un po 'più facile da usare per alcuni dei nostri sviluppatori più recenti rispetto a Query Analyzer.

1

Li ho usati su alcuni progetti a pagamento e penso che sia un ottimo strumento. Quello che ho detto, ho visto alcuni problemi.

  1. Se il file .dat nella cartella del progetto db va fuori sincronia con l'istanza temporanea del database, lo schema confrontare darà risultati imprecisi. Non sei sicuro di come ciò accada, riesamina attentamente lo schema e allontana il tuo file .dat (dopo la soluzione di chiusura) se le cose sembrano sbagliate.

  2. Se si dispone di più di 20 database e si riferiscono tra loro e utilizzano riferimenti circolari ... Faranno del male. Non ho capito come renderlo scalabile a quello scenario. GDR 2 sembra offrire alcune promesse.

Problemi correlati