Condividi tramite


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:

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.