Risoluzione dei problemi relativi alla generazione dati
Quando si eseguono i piani di generazione dati, è possibile che si verifichino i seguenti problemi:
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 generare dati per colonne SPARSE
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. Si supponga ad esempio 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 Specificare i 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 Generare dati di test specializzati con un generatore di dati personalizzato.
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 Generare dati di test specializzati con un generatore di dati personalizzato.
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 è possibile, ad esempio, generare dati in modo normale per la tabella Dipendente nel database AdventureWorks.
Per generare dati per una tabella di questo tipo, utilizzare uno dei seguenti metodi:
Disabilitare o eliminare il trigger, eseguire il piano di generazione dati, quindi riabilitare o 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 visualizzare nella finestra Proprietà, è possibile copiare e incollare l'istruzione nell'editor Transact-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 generano 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
Impossibile generare dati per colonne SPARSE
Se si tenta di generare dati per una tabella che contiene una o più colonne SPARSE e un COLUMN_SET, potrebbe essere visualizzato l'errore seguente: "Generazione dati non riuscita a causa dell'eccezione seguente: ColumnMapping specifico non corrispondente ad alcuna colonna nell'origine o nella destinazione".
Ciò potrebbe verificarsi, ad esempio, se si tenta di generare dati per la tabella seguente:
CREATE TABLE [dbo].[SparseTable]
(
ID INT PRIMARY KEY,
C1 varchar(20) SPARSE NULL,
C2 smallint SPARSE NULL,
C3 varchar(20) SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
)
Per generare dati per una tabella che contiene colonne SPARSE e un COLUMN_SET, è necessario impostare il metodo preferito dell'inserimento dei dati su "SqlV1CompatibilitySink" o utilizzare un generatore di dati personalizzato.
Se si utilizza "SqlV1CompatibilitySink", la generazione di dati potrebbe rallentare in concomitanza con le tabelle di grandi dimensioni.
Per ulteriori informazioni sulle modalità di impostazione del metodo di inserimento dati preferito, vedere Procedura: specificare impostazioni predefinite e opzioni per i generatori di dati. Per ulteriori informazioni sulle modalità di creazione e distribuzione di un generatore dati personalizzato, vedere Generare dati di test specializzati con un generatore di dati personalizzato.