Problembehandlung bei der Datengenerierung

Bei der Verwendung von Datengenerierungsplänen können die folgenden Probleme auftreten:

  • Bei der Datengenerierung tritt ein Fehler auf, wenn gegen CHECK-Einschränkungen verstoßen wird

  • Der Datengenerator für reguläre Ausdrücke kann benutzerdefinierten Typspalten nicht zugewiesen werden

  • Daten für Tabellen mit Delete-Triggern können nicht generiert werden

  • Probleme mit datengebundenen Generatoren

  • Daten können nicht für SPARSE-Spalten generiert werden

Bei der Datengenerierung tritt ein Fehler auf, wenn gegen CHECK-Einschränkungen verstoßen wird

Beim Generieren von Daten für eine Spalte mit einer CHECK-Einschränkung tritt ein Fehler auf, wenn die generierten Daten gegen die Einschränkung verstoßen. Sie können vor der Ausführung des Plans das Fenster Vorschau für Datengenerierung verwenden, um zu ermitteln, ob die Daten gegen die Einschränkung verstoßen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen eines Datengenerierungsplans in der Vorschau.

Um dieses Problem zu beheben, müssen Sie eine der folgenden Methoden verwenden:

  • Verwenden Sie die Min-Eigenschaft und die Max-Eigenschaft, um zu steuern, wie die Daten generiert werden. Nehmen Sie beispielsweise an, dass Sie über eine Tabelle mit den beiden Spalten StartDate und EndDate sowie über eine CHECK-Einschränkung verfügen, die festlegt, dass StartDate der EndDate-Spalte vorangeht. Um dies zu erreichen, können Sie die Max-Eigenschaft der StartDate-Spalte auf einen Wert festlegen, der kleiner als die Min-Eigenschaft der EndDate-Spalte ist. Weitere Informationen finden Sie unter Angeben von Details zur Datengenerierung für eine Spalte.

  • Verwenden Sie den datengebundenen Generator. Weitere Informationen finden Sie unter Datengebundener Generator.

  • Verwenden Sie einen benutzerdefinierten Datengenerator. Weitere Informationen finden Sie unter Generieren spezialisierter Testdaten mit einem benutzerdefinierten Daten-Generator.

Der Datengenerator für reguläre Ausdrücke kann benutzerdefinierten Typspalten mit Unique-Einschränkungen nicht zugewiesen werden

Wenn Sie einer Spalte mit einer Unique-Einschränkung einen Datengenerator zuweisen möchten, werden in der Liste der verfügbaren Generatoren nur die Generatoren angezeigt, die eindeutige Werte erstellen können. Da der Generator für reguläre Ausdrücke nicht zwangsläufig eindeutige Werte erstellt, können Sie diesen nicht zum Füllen einer benutzerdefinierten Typspalte verwenden, die eine Unique-Einschränkung aufweist.

Um Daten für eine benutzerdefinierte Typspalte mit einer Unique-Einschränkung zu generieren, müssen Sie den datengebundenen Generator oder einen benutzerdefinierten Datengenerator verwenden. Weitere Informationen finden Sie unter Datengebundener Generator und unter Generieren spezialisierter Testdaten mit einem benutzerdefinierten Daten-Generator.

Daten für Tabellen mit Delete-Triggern können nicht generiert werden

Einige Tabellen weisen Trigger auf, aufgrund derer es nicht möglich ist, Zeilen in diesen Tabellen zu löschen. Wenn Sie versuchen, Zeilen aus einer solchen Tabelle zu löschen, führt der Trigger einen Rollback für den Löschvorgang aus. Es ist nicht möglich, auf normale Weise Daten für eine derartige Tabelle oder für eine Tabelle zu generieren, die auf eine solche verweist. Beispielsweise können Sie normalerweise keine Daten für die Tabelle Employees in der AdventureWorks-Datenbank generieren.

Um Daten für eine solche Tabelle zu generieren, verwenden Sie eine der folgenden Methoden:

  • Deaktivieren oder löschen Sie den Trigger, führen Sie den Datengenerierungsplan aus, und aktivieren Sie den Trigger erneut, oder fügen Sie ihn erneut hinzu.

  • Führen Sie den Datengenerierungsplan aus. Wenn Sie aufgefordert werden, den Inhalt der Tabellen vor dem Einfügen von neuen Zeilen zu löschen, klicken Sie auf Nein. Die neuen Daten, die Sie generieren, werden sämtlichen vorhandenen Daten in der Tabelle hinzugefügt, sodass der Delete-Trigger nicht ausgelöst wird. Diese Methode kann zu unvorhersehbaren Ergebnissen führen, und es können Fehler auftreten, wenn eine der Spalten eine Unique-Einschränkung aufweist.

Probleme mit datengebundenen Generatoren

Wenn die Datengenerierung für eine oder mehrere Spalten fehlschlägt, für die Sie einen datengebundenen Generator angegeben haben, wird im Fenster Spaltendetails in der Spalte Generatorausgabe entweder "Keine Ausgabe" oder "Keine umwandelbare Ausgabe" angezeigt. In den folgenden Abschnitten werden Gründe für diese Art von Datengenerierungsfehler beschrieben.

Keine Ausgabe

Wenn in der Spalte Generatorausgabe "Keine Ausgabe" angezeigt wird, ist die SELECT-Anweisung, die Sie in der Auswahlabfrage-Eigenschaft angegeben haben, wahrscheinlich falsch. Da die SELECT-Anweisung im Eigenschaftenfenster nicht immer gut zu lesen ist, empfiehlt es sich, sie zu kopieren, im Transact-SQL-Editor einzufügen und dort auf Richtigkeit zu überprüfen.

Keine umwandelbare Ausgabe

Wenn in der Spalte Generatorausgabe "Keine umwandelbare Ausgabe" angezeigt wird, kann der von der SELECT-Anweisung zurückgegebene Datentyp nicht in den Datentyp der Spalte umgewandelt werden, für die Sie Daten generieren. Beispiel: Wenn Sie Daten für eine Spalte des Typs INT generieren möchten, wird bei der folgenden SELECT-Anweisung "Keine umwandelbare Ausgabe" angezeigt:

SELECT RAND() * (column1 - column2) AS Column1 FROM Table1

Sie müssen die SELECT-Anweisung wie folgt aktualisieren, um Daten zurückzugeben, die in den Typ INT umgewandelt werden können:

SELECT CAST(RAND() * (column1 - column2) AS INT) AS Column1 FROM Table1

Daten können nicht für SPARSE-Spalten generiert werden

Wenn Sie versuchen, Daten für eine Tabelle zu generieren, die eine oder mehrere SPARSE-Spalten sowie ein COLUMN_SET enthält, kann der folgende Fehler auftreten: "Fehler bei der Datengenerierung aufgrund folgender Ausnahme: Das angegebene ColumnMapping stimmt mit keiner Spalte in der Quelle oder dem Ziel überein".

Dies kann beispielsweise der Fall sein, wenn Sie versuchen, Daten für die folgende Tabelle zu generieren:

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
)

Um Daten für eine Tabelle zu generieren, die SPARSE-Spalten und ein COLUMN_SET enthält, müssen Sie die bevorzugte Methode der Dateneinfügung in "SqlV1CompatibilitySink" ändern oder einen benutzerdefinierten Datengenerator verwenden.

Wenn Sie den "SqlV1CompatibilitySink" verwenden, erfolgt die Datengenerierung für große Tabellen möglicherweise langsam.

Weitere Informationen zum Ändern der bevorzugten Dateneinfügungsmethode finden Sie unter Gewusst wie: Angeben von Standardwerten und Optionen für Daten-Generatoren. Weitere Informationen zum Erstellen und Bereitstellen eines benutzerdefinierten Daten-Generators finden Sie unter Generieren spezialisierter Testdaten mit einem benutzerdefinierten Daten-Generator.