Share via


Risoluzione dei problemi relativi all'accesso ai dati in Visual Studio

Aggiornamento: novembre 2007

In questo argomento vengono elencati alcuni problemi comuni che si verificano durante l'utilizzo dell'accesso ai dati in Visual Studio.

In fase di esecuzione non è possibile accedere a un database che è invece accessibile in fase di progettazione

In genere, questa situazione si verifica quando all'utente è negato l'accesso al database con il nome utente e la password passati in fase di esecuzione. La risoluzione di questo problema dipende dai metodi di autenticazione e autorizzazione utilizzati nel database, nonché dalla stringa di connessione.

Questo problema può essere dovuto alla seguente causa:

  • Selezione dell'opzione Utilizza nome utente e password specifici e mancata selezione dell'opzione Consenti salvataggio password durante il completamento della Finestra di dialogo Aggiungi/Modifica connessione (generale). In questo scenario, quando si tenta di connettersi all'origine dati in fase di progettazione verrà richiesto di immettere un nome utente e una password. Per la connettività in fase di esecuzione, è necessario incorporare nell'applicazione la funzionalità per passare la password e il nome utente corretti all'origine dati.

Verifiche necessarie:

  • Verificare che il nome utente e la password utilizzati nell'applicazione dispongano delle autorizzazioni corrette per l'accesso all'origine dati.

  • Verificare che nel database siano state specificate le impostazioni corrette delle autorizzazioni utente.

  • Verificare la presenza di connessione di rete tra il computer su cui è eseguita l'applicazione e l'origine dati.

Quando si esegue un comando SQL vengono restituiti parametri di output errati o mancanti

In genere, questa situazione è causata da impostazione una non corretta della proprietà Direction del parametro. La proprietà Direction del parametro è impostata su un valore definito in Enumerazione ParameterDirection.

  • Verificare che la proprietà Direction del parametro sia impostata su un valore che consente la ricezione di dati (Output per i parametri di output).

  • Verificare che il tipo di dati del parametro corrisponda a quello del valore restituito previsto.

    Nota:

    I parametri di output sono restituiti alla fine del flusso di dati; pertanto, se si utilizza l'oggetto DataReader, ad esempio SqlDataReader, per visualizzarli è necessario prima chiudere l'oggetto oppure terminare la lettura dei dati.

Per ulteriori informazioni sui parametri di output non restituiti e per un esempio di codice, cercare l'articolo Q308051 nel sito Web del Supporto Tecnico Microsoft (https://support.microsoft.com/?ln=it).

Viene visualizzato il messaggio di errore 'Il provider SQL di dati .NET (System.Data.SqlClient) richiede Microsoft Data Access Components (MDAC) versione 2.6 o successiva'

Microsoft Windows Software Development Kit (SDK) e il pacchetto ridistribuibile .NET Framework non includono l'installazione di MDAC. Per tutte le applicazioni .NET Framework in cui viene utilizzata la funzionalità di accesso ai dati è richiesto MDAC 2.6 o versioni successive (preferibilmente MDAC 2.8 SP1). La versione più recente di MDAC è disponibile per il download dal sito Web Microsoft (https://www.microsoft.com).

Dal momento che in Visual Studio MDAC 2.7 viene installato per impostazione predefinita, è più probabile che questo errore si verifichi durante la distribuzione a un computer in cui non è installato Visual Studio.

Quando viene distribuita l'applicazione, è possibile impostare l'installazione in modo che venga verificata la versione di MDAC sul computer. Per ulteriori informazioni, vedere Procedura: aggiungere una condizione di avvio per Microsoft Data Access Components.

Quando si tenta di eseguire il commit o il rollback di una transazione viene generata un'eccezione imprevista

Quando un errore nell'origine dati provoca l'immediato rollback di una transazione, è possibile che nell'applicazione si sia verificato uno degli errori riportati di seguito:

  • Alla richiesta COMMIT TRANSACTION non corrisponde alcuna richiesta BEGIN TRANSACTION

  • Alla richiesta ROLLBACK TRANSACTION non corrisponde alcuna richiesta BEGIN TRANSACTION

Sebbene questo comportamento sia previsto dalla progettazione, è sempre opportuno chiamare metodi di accesso a origini dati esterne (ad esempio i metodi Commit e Rollback) dall'interno di un'istruzione Try...Catch. Per ulteriori informazioni, vedere Procedura: utilizzare il blocco try/catch per l'intercettazione di eccezioni (Visual Basic) oppure try-catch (Riferimenti per C#).

Quando si tenta di rimuovere tabelle da un dataset viene generata un'eccezione InvalidOperationException

Se un dataset è associato a un oggetto XmlDataDocument e viene chiamato il metodo Clear, verrà generata la seguente eccezione:

System.InvalidOperationException: Impossibile aggiungere o rimuovere tabelle dal DataSet dopo che è stato mappato a un documento XML caricato.

Per cancellare i dati da un dataset associato a un oggetto XmlDataDocument è necessario spostarsi nella tabella e rimuovere i singoli oggetti DataRow. Per ulteriori informazioni sulla rimozione delle righe di dati da una tabella dati, vedere Procedura: eliminare righe in un oggetto DataTable e Metodo DataRowCollection.RemoveAt.

Quando si esegue il trascinamento degli elementi dalla finestra origine dati, le etichette della didascalia non sono corrette

Quando si esegue il trascinamento degli elementi dalla finestra Origini dati, i nomi di colonna vengono modificati in base a un'espressione regolare predefinita. Se nel nome di colonna è contenuto un carattere minuscolo seguito da un carattere maiuscolo, viene aggiunto uno spazio per dividere le due parole. Inoltre, tutti i segni di sottolineatura presenti nel nome di colonna vengono sostituiti da spazi. Per ulteriori informazioni sul controllo di questo comportamento , vedere Procedura: personalizzare la modalità in cui in Visual Studio vengono create didascalie per controlli con associazione a dati.

Le operazioni di recupero e visualizzazione dei dati sembrano essere rallentate

Se il progetto utilizza un Il componente BindingSource provare a impostare la proprietà RaiseListChangedEvents su False. In questo modo si impedisce che si verifichino eventi ListChanged sull'elenco ed è possibile che le prestazioni di dataset di grandi dimensioni migliorino.

Dopo l'installazione in Windows 2000, l'applicazione non viene eseguita e viene visualizzato un messaggio di avviso in cui si richiede MDAC 2.7

Tutte le applicazioni che fanno riferimento allo spazio dei nomi System.Data richiedono Microsoft Data Access Components (MDAC) 2.8 o versioni successive. Nella maggior parte dei casi, il file è stato già installato insieme al sistema operativo. Nei computer con Windows 2000 con Service Pack 3 e precedenti, è possibile che sia necessario installare il componente con l'applicazione. A tale scopo, aggiungere il componente al package del programma di avvio automatico e scaricare il file da Microsoft durante l'installazione. Per ulteriori informazioni, vedere Distribuzione dei prerequisiti (Visual Studio).

I valori generati dal database nelle operazioni di inserimento o aggiornamento restituiscono NULL per LINQ alle classi SQL

LINQ to SQL gestisce automaticamente i valori generati dal database per le colonne identity (incremento automatico) e rowguidcol (GUID generato dal database) e timestamp. I valori degli altri tipi di colonne sono costituiti da valori null non previsti. Per restituire i valori generati dal database, è necessario impostare manualmente IsDbGenerated su true e AutoSync su uno dei seguenti valori: Always, OnInsert o OnUpdate.

Vedere anche

Concetti

Novità relative ai dati

Cenni preliminari sulla visualizzazione dei dati

Altre risorse

Procedure dettagliate relative ai dati

Guida introduttiva all'accesso ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Visualizzazione di dati su form nelle applicazioni Windows

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati

LINQ to SQL