Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di Azure SQL
Database SQL su Microsoft Fabric
L'archiviazione dello schema del database in Git offre diversi vantaggi, tra cui il controllo della versione, la collaborazione e la possibilità di tenere traccia delle modifiche nel tempo. Questo approccio è particolarmente utile per lo sviluppo code-first in cui si definisce lo schema del database tramite il codice e si applicano le modifiche direttamente a un ambiente di sviluppo usando un ORM o un agente di codifica come GitHub Copilot.
In questa esercitazione si apprenderà come archiviare lo schema del database in Git e gestirlo come parte del flusso di lavoro di sviluppo.
- Creare un nuovo progetto SQL da un database esistente
- Eseguire il commit e il push del codice del database verso un repository remoto Git
- Applicare modifiche dal database al codice esistente
- Eseguire il pull delle modifiche dal repository remoto Git e applicarle al database locale (facoltativo)
Al termine, si è pronti per tenere traccia del database nel controllo del codice sorgente e collaborare con il team sulle modifiche del database tramite un repository Git.
Note
Per completare l'esercitazione, è necessario accedere a un database SQL. È possibile sviluppare gratuitamente in locale usando SQL Server Developer Edition in Windows o in contenitori.
Prerequisiti
Avvertimento
Questa esercitazione non è disponibile per i progetti in stile SDK (anteprima) in Visual Studio 2022. Usare invece SQL Server Management Studio (SSMS) o Visual Studio Code.
- .NET 8 SDK
- Interfaccia della riga di comando di SqlPackage
- Modelli .NET di Microsoft.Build.Sql.Templates
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Passaggio 1: creare un nuovo progetto SQL da un database esistente
Per rappresentare il database nel controllo del codice sorgente, usare il formato del progetto di database SQL . Il progetto include file .sql per ogni oggetto del database e un .sqlproj con le impostazioni del database. Quando si visualizza il progetto in Esplora file e nel controllo del codice sorgente, la struttura di un progetto SQL rispecchia l'esplorazione del database in Esplora oggetti.
Dal SQL Server Esplora oggetti in Visual Studio fare clic con il pulsante destro del mouse sul database da cui si vuole creare un project e scegliere Crea nuovo Project... .
Nella finestra di dialogo Crea nuovo Project immettere un nome di project. Il nome del progetto non deve corrispondere a un nome di database. Verificare e modificare la posizione del progetto in base alle esigenze. Le impostazioni di importazione predefinite importano gli oggetti in cartelle in base allo schema e quindi al tipo di oggetto. È possibile modificare le impostazioni di importazione per modificare la struttura di cartelle o includere le autorizzazioni negli oggetti da importare. Avviare l'importazione.
Nella finestra di dialogo Importa database viene visualizzato lo stato di avanzamento dell'importazione come messaggi. Al termine dell'importazione, è possibile visualizzare gli oggetti importati nel Esplora soluzioni. Il processo archivia i log in un file nella directory del progetto in Import Schema Logs. Selezionare Fine.
Avvertimento
Questa esercitazione non è disponibile per i progetti in stile SDK (anteprima) in Visual Studio 2022. Usare invece SQL Server Management Studio (SSMS) o Visual Studio Code.
Nella visualizzazione Esplora oggetti di database in Visual Studio Code selezionare un database da cui si vuole creare un progetto. Fare clic con il pulsante destro del mouse sul database e quindi scegliere Crea progetto dal database.
In Visual Studio Code la finestra di dialogo Crea progetto dal database richiede il nome e il percorso del progetto. Le impostazioni di importazione predefinite importano gli oggetti in cartelle in base allo schema e quindi al tipo di oggetto. È possibile selezionare una struttura di cartelle diversa o scegliere di includere le autorizzazioni negli oggetti importati prima di selezionare Crea.
Aprire la vista Progetti di database per visualizzare il nuovo progetto e le definizioni degli oggetti importati.
Nel Esplora oggetti in SQL Server Management Studio fare clic con il pulsante destro del mouse sul database da cui si vuole creare un project e scegliere Crea Project da Database... nel menu Attività.
Nella finestra di dialogo Crea Project SQL dal database verificare il database selezionato e modificare il nome e il percorso del project in base alle esigenze. Il nuovo progetto viene creato con gli oggetti del database selezionato e disposti in cartelle in base allo schema, quindi al tipo di oggetto.
Un file di soluzione viene creato automaticamente nella cartella sopra la cartella del progetto e viene aperto nel Esplora soluzioni dopo la creazione. Per aggiungere il nuovo progetto a una soluzione esistente, selezionare Aggiungi alla soluzione e passare al file della soluzione. Selezionare Crea per creare il progetto.
Usare l'interfaccia della riga di comando di SqlPackage per estrarre lo schema di un database esistente in un progetto SQL. Il comando SqlPackage seguente estrae lo schema di un database in un progetto SQL completo. I .sql file sono organizzati in base alle cartelle annidate dello schema e del tipo di oggetto e viene creato un .sqlproj file per gestire il progetto con le proprietà impostate in base alle opzioni del database.
sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject
Passaggio 2: Eseguire il commit e il push del codice del database in un repository remoto Git
Dopo aver creato il progetto SQL, avviare la sequenza temporale Git per il database in un repository Git locale.
Con il progetto SQL aperto in Visual Studio, creare un repository Git locale ed eseguirne il push in un repository remoto.
Selezionare GitCreate Git Repository (Crea repository > dalla barra dei menu.
Nella finestra di dialogo Crea un repository Git, nella sezione Invia a un nuovo repository remoto, scegliere tra GitHub o Azure DevOps. Se si sceglie di eseguire il push in GitHub, accedere all'account GitHub quando richiesto. Se si sceglie Azure DevOps, accedere all'account Azure DevOps e selezionare o creare un progetto.
Immettere un nome e una descrizione del repository. Verificare che il modello .gitignore sia impostato su VisualStudio e selezionare Crea e push.
Visual Studio crea il repository Git locale, esegue un commit iniziale con i file di progetto SQL ed esegue il push nel repository remoto.
Per verificare che il codice sia stato eseguito correttamente, aprire un browser e passare al repository in GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Verranno visualizzati i file di progetto SQL, inclusi il .sqlproj file e le definizioni degli .sql oggetti.
Per altre informazioni, vedere Informazioni su Git in Visual Studio.
Avvertimento
Questa esercitazione non è disponibile per i progetti in stile SDK (anteprima) in Visual Studio 2022. Usare invece SQL Server Management Studio (SSMS) o Visual Studio Code.
Con la cartella del progetto SQL aperta in Visual Studio Code, inizializzare un repository Git locale ed eseguirne il push in un repository remoto.
Aprire la visualizzazione Controllo del codice sorgente selezionando l'icona Controllo del codice sorgente nella barra attività oppure premere
Ctrl+Shift+G.Selezionare Inizializza repository per creare un nuovo repository Git nella cartella corrente.
Tutti i file di progetto vengono visualizzati come modifiche non rilevate. Selezionare l'icona + accanto a Modifiche per preparare tutti i file.
Immettere un messaggio di commit, ad
Initial commit of SQL projectesempio nella casella di input del messaggio e selezionare il pulsante Commit (icona del segno di spunta).Selezionare Pubblica ramo nella visualizzazione Controllo del codice sorgente per eseguire il push del repository locale in un repository remoto. Scegliere se pubblicare in GitHub o Azure DevOps e seguire le istruzioni di accesso. Selezionare una visibilità del repository (pubblica o privata) e confermare.
Per verificare che il codice sia stato eseguito correttamente, aprire un browser e passare al repository in GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Verranno visualizzati i file di progetto SQL, inclusi il .sqlproj file e le definizioni degli .sql oggetti.
Per altre informazioni, vedere Controllo del codice sorgente in Visual Studio Code.
Con il progetto SQL aperto in SQL Server Management Studio, creare un repository Git locale ed eseguirne il push in un repository remoto.
Selezionare GitCreate Git Repository (Crea repository > dalla barra dei menu.
Nella finestra di dialogo Crea un repository Git, nella sezione Esegui il push in un nuovo repository remoto, scegliere GitHub o Azure DevOps. Se si sceglie di eseguire il push in GitHub, accedere all'account GitHub quando richiesto. Se si sceglie Azure DevOps, accedere all'account Azure DevOps e selezionare o creare un progetto.
Immettere un nome e una descrizione del repository. Verificare che il modello .gitignore sia impostato su VisualStudio e selezionare Crea e push.
SSMS crea il repository Git locale, esegue un commit iniziale con i file di progetto SQL ed esegue il push nel repository remoto.
Per verificare che il codice sia stato eseguito correttamente, aprire un browser e passare al repository in GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Verranno visualizzati i file di progetto SQL, inclusi il .sqlproj file e le definizioni degli .sql oggetti.
Per altre informazioni, vedere Informazioni su Git in Visual Studio.
Dalla directory del progetto SQL inizializzare un repository Git locale, eseguire il commit di tutti i file ed eseguire il push in un repository remoto.
Inizializzare un nuovo repository Git, aggiungere un
.gitignorefile ed eseguire un commit iniziale:cd MyDatabaseProject git init dotnet new gitignore git add . git commit -m "Initial commit of SQL project"Creare un nuovo repository remoto in GitHub o Azure DevOps:
-
GitHub: passare a https://github.com/new e creare un nuovo repository. Non inizializzarlo con un README,
.gitignoreo una licenza. - Azure DevOps: passare al progetto Azure DevOps, selezionare Repos e creare un nuovo repository. Deseleziona Aggiungi un README.
-
GitHub: passare a https://github.com/new e creare un nuovo repository. Non inizializzarlo con un README,
Aggiungi il repository remoto ed esegui il push del commit iniziale:
git remote add origin <your-repository-url> git push -u origin mainSostituire
<your-repository-url>con l'URL fornito da GitHub o Azure DevOps al momento della creazione del repository.
Per verificare che il codice sia stato inserito correttamente, aprire un browser e passare al repository. Verranno visualizzati i file di progetto SQL, inclusi il .sqlproj file e le definizioni degli .sql oggetti.
Passaggio 3: Applicare le modifiche dal database al codice esistente
Quando lo schema del database cambia all'esterno del progetto SQL , ad esempio tramite modifiche dirette a un database, una migrazione ORM o azioni agentiche, è possibile aggiornare il progetto in modo che rifletta tali modifiche.
Usare il confronto dello schema per aggiornare il progetto SQL dal database.
In SQL Server Esplora oggetti fare clic con il pulsante destro del mouse sul database e scegliere Confronto schema.
Nella finestra Confronto schema il database viene impostato come origine. Selezionare l'elenco a discesa Seleziona destinazione e scegliere Seleziona destinazione.
Nella finestra di dialogo Seleziona schema di destinazione selezionare Project e scegliere il database SQL project. Seleziona OK.
Selezionare Confronta per eseguire il confronto. I risultati visualizzano le differenze tra il database (origine) e il progetto (destinazione).
Rivedi le differenze. Deselezionare le modifiche che non si desidera applicare al progetto.
Selezionare Aggiorna per applicare le modifiche selezionate al progetto SQL.
I file di progetto vengono aggiornati in modo che corrispondano allo schema del database. Esamina le modifiche nella finestra Modifiche Git, immetti un messaggio di commit e seleziona Commit All. Selezionare Push per eseguire il push delle modifiche nel repository remoto.
Avvertimento
Questa esercitazione non è disponibile per i progetti in stile SDK (anteprima) in Visual Studio 2022. Usare invece SQL Server Management Studio (SSMS) o Visual Studio Code.
Usare il comando Update Project from Database per aggiornare il project SQL dal database.
In Esplora oggetti di database fare clic con il pulsante destro del mouse sul database e selezionare Sql Database Projects>Update Project from Database (Aggiorna Project da Database).
Selezionare il progetto di database SQL da aggiornare e confermare.
Il confronto viene eseguito e applica le modifiche dal database al progetto. I file aggiornati
.sqlvengono visualizzati nella visualizzazione Controllo del codice sorgente come file modificati.
Esaminare le modifiche nella visualizzazione Controllo del codice sorgente , preparare i file modificati, immettere un messaggio di commit e selezionare Commit. Selezionare Sincronizza modifiche per eseguire il push del commit nel repository remoto.
Usare il confronto dello schema per aggiornare il progetto SQL dal database.
In Esplora oggetti, fare clic con il pulsante destro sul database e selezionare Attività>Confronto schema (anteprima).
Nella finestra Confronto schema il database viene impostato come origine. Selezionare il pulsante con i puntini di sospensione relativo alla destinazione e scegliere il progetto di database SQL come destinazione.
Selezionare Confronta per eseguire il confronto. I risultati visualizzano le differenze tra il database (origine) e il progetto (destinazione).
Esamina le differenze. Deselezionare le modifiche che non si desidera applicare al progetto.
Selezionare Applica per applicare le modifiche selezionate al progetto SQL.
I file di progetto vengono aggiornati in modo che corrispondano allo schema del database. Esaminare le modifiche nella finestra Modifiche Git, immettere un messaggio di commit e selezionare Commit All. Selezionare Push per eseguire il push delle modifiche nel repository remoto.
Usare SqlPackage per rigenerare il progetto SQL dal database, sostituendo i file di progetto esistenti con lo schema del database corrente. Mentre gli altri strumenti di progetto SQL forniscono un'interfaccia grafica, SqlPackage offre un approccio da riga di comando per l'automazione che non offre l'opportunità di esaminare le modifiche dei file prima di applicarle.
Rimuovere i file oggetto SQL esistenti e rigenerare il progetto:
rm -rf MyDatabaseProject sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProjectEsaminare le modifiche con Git ed eseguire il commit:
cd MyDatabaseProject dotnet new gitignore git add . git status git commit -m "Update project from database changes" git push
Passaggio 4: (facoltativo) Eseguire il pull delle modifiche dal repository remoto Git e applicarle al database locale
Quando altri membri del team eseguono il push dello schema del database nel repository remoto, è possibile eseguire il pull di tali modifiche e distribuirle nel database di sviluppo locale.
Selezionare Git>Pull dalla barra dei menu per eseguire il pull delle modifiche più recenti dal repository remoto.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto di database SQL e scegliere Confronto schema.
Nella finestra Confronto schema il progetto viene impostato come origine. Selezionare l'elenco a discesa Seleziona destinazione e scegliere Seleziona destinazione.
Nella finestra di dialogo Seleziona schema di destinazione selezionare Database e scegliere la connessione al database di sviluppo locale. Seleziona OK.
Selezionare Confronta per eseguire il confronto. I risultati visualizzano le differenze tra il progetto (origine) e il database (destinazione).
Esaminare le differenze per verificare che le modifiche siano previste.
Selezionare Aggiorna per applicare le modifiche al database.
Avvertimento
Questa esercitazione non è disponibile per i progetti in stile SDK (anteprima) in Visual Studio 2022. Usare invece SQL Server Management Studio (SSMS) o Visual Studio Code.
Aprire la visualizzazione Controllo del codice sorgente e selezionare Pull dal menu ... (o usare il pulsante di sincronizzazione nella barra di stato) per eseguire il pull delle modifiche più recenti dal repository remoto.
Nella visualizzazione Progetti di database fare clic con il pulsante destro del mouse sul progetto di database SQL e scegliere Confronto schema.
Nella finestra Confronto schema il progetto viene impostato come origine. Selezionare il pulsante con i puntini di sospensione di destinazione e scegliere la connessione al database di sviluppo locale come destinazione.
Selezionare Confronta per eseguire il confronto. I risultati visualizzano le differenze tra il progetto (origine) e il database (destinazione).
Esaminare le differenze per verificare che le modifiche siano previste.
Selezionare Applica per applicare le modifiche al database.
Aprire un terminale ed eseguire
git pullnella directory del progetto per eseguire il pull delle modifiche più recenti dal repository remoto.In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto di database SQL e selezionare Confronto schema (anteprima).
Nella finestra Confronto schema il progetto viene impostato come origine. Selezionare la destinazione e scegliere la connessione al database di sviluppo locale.
Selezionare Confronta per eseguire il confronto. I risultati visualizzano le differenze tra il progetto (origine) e il database (destinazione).
Esaminare le differenze per verificare che le modifiche siano previste.
Selezionare Applica per applicare le modifiche al database.
Esegui il pull delle ultime modifiche dal repository remoto:
cd MyDatabaseProject git pullCompilare il progetto per verificare che le modifiche vengano compilate correttamente:
dotnet buildDistribuire le modifiche al database di sviluppo locale usando SqlPackage:
sqlpackage /a:Publish /sf:bin/Debug/MyDatabaseProject.dacpac /tsn:localhost /tdn:MyDatabaseSostituire
MyDatabaseProject.dacpaccon il nome del file di.dacpacoutput e aggiornare i valori del server di destinazione (/tsn) e del database (/tdn) in base alle esigenze.