Molti team affermano di fare DevOps, poi distribuiscono le modifiche al database manualmente dal laptop di qualcuno. Quella contraddizione è esattamente ciò che questa guida Azure SQL risolve. SQL projects più pipeline Azure DevOps rendono la consegna dei database deterministica, verificabile e sufficientemente sicura per flussi di lavoro di produzione reali.
Fonte originale: https://devblogs.microsoft.com/azure-sql/fundamentals-of-azure-devops-with-sql-projects/
La parte più forte dell’approccio non è la sintassi YAML, è la sequenza di disciplina: build prima, publish dopo, e proteggi il percorso di deployment con privilegio minimo e identità senza password. Costruire un .sqlproj con dotnet build valida la compatibilità con la piattaforma di destinazione in anticipo e produce un artefatto DACPAC che può essere promosso attraverso gli ambienti.
Il mio punto di vista è diretto: se il tuo schema non viene costruito in CI, il tuo processo di qualità del database è basato principalmente sulla speranza. Il successo locale in SSMS o VS Code non è una garanzia di rilascio.
Il design del deployment è anche rinfrescante pragmatico. Usa connessioni di servizio legate a identità Entra, concedi ruoli database con ambito per il confronto di schema e dati, e automatizza l’apertura temporanea del firewall per gli IP del runner con pulizia garantita. Questo è il tipo di igiene operativa che i team saltano fino a quando una revisione di una violazione non li costringe a riconsiderare tutto.
Raccomandazioni pratiche da applicare immediatamente
- Separa le pipeline di build e deploy. La build dovrebbe essere eseguita sui cambiamenti di branch e fallire velocemente. Il deploy dovrebbe essere specifico per ambiente e regolato da policy.
- Archivia le stringhe di connessione target e i metadati dell’infrastruttura in variabili di pipeline protette, e ruota le revisioni di governance per le assegnazioni di ruolo regolarmente.
- Mantieni le versioni di SqlPackage esplicite e bloccate in CI per evitare cambiamenti di comportamento a sorpresa.
Non privilegiare troppo presto. Partire con db_ddladmin, db_datareader e db_datawriter è una base migliore che assegnare db_owner a ogni principale della pipeline “tanto per farlo funzionare.” Scala solo quando un requisito concreto di deployment dimostra che è necessario.
Un’altra conclusione importante è la portabilità. Poiché SQL Projects funzionano sulla toolchain .NET SDK, questo pattern non è solo per Azure DevOps. Gli stessi fondamenti si traducono in GitHub Actions o altri orchestratori, il che rende questa guida strategica, non vincolata a una piattaforma.
In sintesi
Se la tua organizzazione tratta ancora la consegna dello schema come un processo speciale al di fuori del CI/CD delle app, questo è il tuo modello di migrazione. Non hai bisogno di platform engineering eroica. Hai bisogno di coerenza, sicurezza basata sull’identità e la volontà di smettere di spedire modifiche al database attraverso percorsi di privilegio ad hoc.
I team che lo faranno spediranno più velocemente con meno rollback. I team che rimanderanno continueranno a pagare la tassa nascosta dei deployment manuali del piano dati.
