Risoluzione dei problemi relativi alla generazione dati
Aggiornamento: novembre 2007
Quando si eseguono i piani di generazione dati, è possibile che si verifichino i seguenti problemi:
Impossibile aprire un piano di generazione dati
Errore di generazione dati in seguito a violazione dei vincoli CHECK
Impossibile assegnare il generatore di dati di espressioni regolari a colonne di tipo definito dall'utente
Impossibile generare dati per le tabelle con trigger di eliminazione
Problemi relativi ai generatori associati a dati
Impossibile aprire un piano di generazione dati
Se non è possibile trovare un generatore di dati assegnato a una colonna in un piano di generazione dati esistente, il piano non può essere aperto e viene visualizzato il seguente messaggio di errore:
Impossibile caricare NomeFile.dgen. Non è possibile trovare un generatore disponibile con il tipo NomeGeneratore. Correggere l'errore modificando manualmente il file dgen e ricaricandolo.
Di seguito sono indicate alcune delle possibili cause dell'errore con le relative soluzioni:
Il nome della classe del generatore di dati è stato modificato. Se è stato modificato solo il nome, è possibile aprire il file con estensione dgen in un editor di testo e modificare il codice XML manualmente. È necessario applicare il nuovo nome del generatore di dati per le colonne interessate.
Il generatore di dati è obsoleto. È possibile aprire il file con estensione dgen in un editor di testo e modificare il codice XML manualmente. In questo caso, è necessario rimuovere l'elemento <ColumnConfig> completo, insieme a tutti gli elementi secondari, dal codice XML per tutte le colonne interessate. Aprire il piano di generazione dati in Visual Studio e accettare le modifiche allo schema. I generatori di dati predefiniti vengono assegnati alle colonne interessate. È inoltre necessario riselezionare le colonne interessate per includerle nel piano di generazione dati. Per ulteriori informazioni, vedere Procedura: specificare le colonne per la generazione dati.
La voce relativa al generatore di dati è stata rimossa dal file extensions.xml. È necessario modificare il file extensions.xml e aggiungere un elemento <extensions> per il generatore di dati. È necessario chiudere e riaprire Visual Studio affinché la modifica venga applicata.
Il file con estensione dll e il file extensions.xml non sono sincronizzati. Il generatore di dati non è presente nel file dll definito nel file extensions.xml. Per risolvere il problema, è necessario ridistribuire la versione corretta dell'assembly e il file extensions.xml. Per rendere effettiva la modifica, chiudere e riaprire Visual Studio.
Errore di generazione dati in seguito a violazione dei vincoli CHECK
Quando si generano i dati per una colonna associata a un vincolo CHECK, l'operazione non riesce se vengono generati dati che violano tale vincolo. È possibile utilizzare la finestra Anteprima di generazione dati per verificare se i dati violano il vincolo prima di eseguire il piano. Per ulteriori informazioni, vedere Procedura: visualizzare in anteprima un piano di generazione dati.
Per risolvere il problema, utilizzare uno dei seguenti metodi:
Utilizzare le proprietà Min e Max per controllare la modalità di generazione dei dati. Ad esempio, si supponga di disporre di una tabella con due colonne denominate StartDate e EndDate e con un vincolo CHECK in base al quale StartDate deve essere anteriore a EndDate. A tale scopo, è possibile impostare la proprietà Max della colonna StartDate su un valore minore rispetto al valore della proprietà Min della colonna EndDate. Per ulteriori informazioni, vedere Specifica dei dettagli di generazione dati per una colonna.
Utilizzare il generatore associato a dati. Per ulteriori informazioni, vedere Generatore associato a dati.
Utilizzare un generatore di dati personalizzato. Per ulteriori informazioni, vedere Creazione di generatori di dati personalizzati.
Impossibile assegnare il generatore di dati di espressioni regolari alle colonne di tipo definito dall'utente con vincoli univoci
Quando si tenta di assegnare un generatore di dati a una colonna che presenta un vincolo univoco, l'elenco di generatori disponibili contiene solo quelli in grado di produrre valori univoci. Poiché il generatore di espressioni regolari non produce necessariamente valori univoci, non è possibile utilizzarlo per riempire una colonna di tipo definito dall'utente che presenta un vincolo univoco. Per generare dati per una colonna di tipo definito dall'utente con un vincolo univoco, è necessario utilizzare il generatore associato a dati o un generatore di dati personalizzato. Per ulteriori informazioni, vedere Generatore associato a dati e Creazione di generatori di dati personalizzati.
Impossibile generare dati per le tabelle con trigger di eliminazione
Alcune tabelle includono trigger che impediscono l'eliminazione di righe. Se si tenta di eliminare righe da tale tabella, il trigger ripristina lo stato precedente l'operazione di eliminazione. Non è possibile generare dati normalmente per tale tabella o per una tabella che fa riferimento ad essa. Non è ad esempio possibile generare i dati normalmente per la tabella Employee del database AdventureWorks.
Per generare dati per una tabella di questo tipo, utilizzare uno dei seguenti metodi:
Eliminare il trigger, eseguire il piano di generazione dati, quindi riaggiungere il trigger.
Eseguire il piano di generazione dati. Quando viene richiesto se cancellare il contenuto delle tabelle prima dell'inserimento di nuove righe, scegliere No. I nuovi dati generati verranno aggiunti ai dati esistenti nella tabella, in modo che il trigger di eliminazione non si verifichi. Questo metodo può generare risultati imprevedibili e se una delle colonne presenta un vincolo univoco è possibile che vengano visualizzati messaggi di errore.
Problemi relativi ai generatori associati a dati
Se la generazione dei dati non viene eseguita correttamente per una o più colonne per le quali è stato specificato un generatore associato a dati, la colonna Output generatore nella finestra Dettagli colonna includerà "Nessun output" o "Nessun output coercibile". Nelle sezioni seguenti vengono descritte le ragioni di questo tipo di errore di generazione di dati.
Nessun output
Se la colonna Output generatore include "Nessun output", l'istruzione SELECT specificata nella proprietà Query Select probabilmente è errata. Poiché l'istruzione SELECT può essere difficile da vedere nella finestra Proprietà, è possibile copiare e incollare l'istruzione nell'editor T-SQL per verificarne la correttezza.
Nessun output coercibile
Se la colonna Output generatore include "Nessun output coercibile", il tipo di dati che l'istruzione SELECT restituisce non può essere assegnato al tipo di dati della colonna per la quale si stanno generando dati. Se ad esempio si desidera generare dati per una colonna di tipo INT, l'istruzione SELECT seguente provocherebbe la visualizzazione di "Nessun output coercibile":
SELECT RAND() * (column1 - column2) AS Column1 FROM Table1
È necessario aggiornare l'istruzione SELECT in modo che restituisca dati che sono coercibili a INT, come segue:
SELECT CAST(RAND() * (column1 - column2) AS INT) AS Column1 FROM Table1
Per ulteriori informazioni sull'istruzione SELECT e su altre istruzioni T-SQL, vedere la "Guida di riferimento a Transact-SQL" sul sito Web Microsoft.
Vedere anche
Concetti
Panoramica sulla terminologia di Database Edition