Condividi tramite


Risolvere i problemi di compilazione del progetto SQL

L'output della compilazione del progetto SQL fornisce commenti e suggerimenti sulla costruzione del modello di database e sulla convalida T-SQL. L'output della riga di comando predefinito mostra solo gli errori e alcune informazioni sullo stato. In questo articolo viene illustrato come abilitare la registrazione più dettagliata per risolvere i problemi di compilazione e gli errori comuni riscontrati con i progetti SQL.

Abilitare la registrazione dettagliata

Per risolvere ulteriormente i problemi di compilazione per i progetti SQL, è possibile usare le opzioni della riga di comando per generare altri log. Una maggiore registrazione può essere utile non solo per identificare la causa degli errori, ma anche per la riduzione della velocità di compilazione. Le due opzioni principali sono:

  • Logger binario: questa opzione genera un file di log binario (msbuild.binlog) che può essere visualizzato usando MSBuild Log Viewer. Questo visualizzatore è utile per diagnosticare i problemi di dipendenza e ottimizzare il processo di compilazione. Il comando per generare questo log è:

    dotnet build -bl
    
  • File logger: questa opzione genera un file di log testuale che contiene la registrazione più dettagliata del build. Il comando per generare questo log è:

    dotnet build -flp:v=diag
    

Per riepilogare, il comando combinato per generare entrambi i log è:

dotnet build -bl -flp:v=diag

Il set completo di opzioni è disponibile in MSBuild Command-Line Reference (Informazioni di riferimento su MSBuild).

Problemi comuni

Errori di compilazione

Quando l'errore di compilazione indica una sintassi non valida, l'output specifica anche il file che contiene il codice errato. Se si usa la sintassi aggiunta di recente, potrebbe essere necessario aggiornare la versione di Project SDK.

Gli errori di compilazione da un progetto di database devono avere SQLxxxxx codice di errore, dove xxxxx è un numero a cinque cifre. Alcuni problemi che causano l'errore per un riferimento non risolto (SQL71501/SQL71502) sono:

  • Nomi di oggetti ambigui. Consigli:
    • Usare nomi completamente risolti ([schema].[table].[column])
    • Rinominare gli oggetti in base alle esigenze
  • Oggetti di sistema. Raccomandazione:
  • Riferimenti esterni. Raccomandazione:
    • Verificare che le variabili SQLCMD siano impostate correttamente per il riferimento al database o il riferimento al pacchetto

Altri errori

Per un errore che si verifica durante il ripristino, eseguire prima una compilazione pulita dopo l'eliminazione delle /bin cartelle e /obj nel progetto.

Se l'errore include SDK 'Microsoft.Build.Sql' specified could not be found​, iniziare verificando che i feed del pacchetto NuGet siano validi. Il comando di base per visualizzare i feed correnti è:

dotnet nuget list source​

Il feed NuGet pubblico è:

dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org​

Se un ambiente richiede feed privati, assicurati che siano validi e accessibili. Potrebbe essere necessario eseguire l'autenticazione con i feed di pacchetti. L'abilitazione dell'autenticazione durante la compilazione del progetto può essere eseguita con:

dotnet build --interactive

Per MSBuild, il comando equivalente è:

msbuild /p:nugetInteractive=true​

Per altri codici di errore non SQL, vedere le risorse seguenti: