FlowHeater Demo Video
 
FlowHeater - The Data Import / Export Specialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Schauen Sie sich auch die verfügbaren Beispiele zum SqlServer Adapter an evtl. kann Ihre Frage hiermit schon beantwortet werden: CSV Import , FlatFile Export , Import IDENTITY (Auto Inkrement) Felder , Export auf mehrere CSV Dateien aufteilen
  • Seite:
  • 1

THEMA: identity_insert

identity_insert 8 Jahre 7 Monate her #257

Hallo,

ich versuche, Daten in eine SQL-Datenbank zu schieben. Es ist für mich wichtig, den unique-key selber festzulegen, damit über diesen key Daten einer anderen Tabelle verbinden kann. Beim Import kommt jedoch immer die Fehlermeldung: "Ein expliziter Wert.. kann nicht eingefügt werden, wenn identity_insert auf off steht".

Wenn ich ein script erzeuge und manuell den Befehl "set identity_insert veis_invoice on" voranstelle, dann funktioniert es. Hier das script:

use [test190]

set dateformat 'ymd'

begin tran

set identity_insert veis_invoice on

insert into [VEIS_INVOICE] ([PK_VEIS_INVOICE], [ENTITYDATE], [ENTITYSTATE], [REQNUMBER], [COMPANYID], [PERSONALACCOUNTID], [INV_TYPE], [INVOICETYPE], [AMOUNTBASECURRENCY], [CURRENCYID], [REFERENCENUMBER], [DOCUMENTDATE], [TRANSACTIONDATE], [MODEOFPAYMENT], [FACTORING]) Values(1500171601151820, '2010-12-28 13:02', 0, 15001716, '115', 1151817, 'TTE_CUSTOMERINVOICE', 'ITE_INVOICE', 719.71, 'EUR', '00015001716', '2010-09-08', '2010-09-08', 'PTE_DEFAULT', 'FTE_NO')

commit tran



Kann ich den Befehl auch voranstellen, wenn ich direkt in die Datenbank schreiben?

Gruss
Martin

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: identity_insert 8 Jahre 7 Monate her #259

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1428
Hallo,

das ist eine Interessante Anforderung! Mit der aktuellen Version 1.2.9 funktioniert das leider noch nicht. Ich habe Ihnen aber unter

FlowHeaterBeta.zip

eine leicht modifizierte (BETA) Version bereitgestellt mit der können Sie das zusammen mit folgenden kleinen C# Skript für den .NET Script Heater durchführen.
bool bFirst = true;

public object DoWork()
{
	// nur beim 1. Aufruf ausführen und nicht im Testmodus
	if (!AdapterWrite.OnlyTest && bFirst)
	{
		bFirst = false;

		// SQL Server Tabellennamen anpassen
		AdapterWrite.Execute("set identity_insert [IHRE_TABELLE] on");
	}

	// Eingangsparameter für weitere Verarbeitung wieder zurückliefern
	return InValues[0].GetValue();
}

Anwendung: Ziehen Sie einen .NET Script Heater in eine bestehende Verbindung/Pipe, am besten nehmen Sie dazu gleich das Feld für Auto Increment (Identity), das Sie setzen möchten. Kopieren Sie anschließend oben stehen Skript Code hinein und passen den Tabellennamen an (siehe Kommentar im Skript). Danach müssen Sie noch im Configurator auf der WRITE Seite für das SQL Identity Feld die Eigenschaft "Auto Inkrement" deaktivieren, das wars. Hiermit teilen Sie dem FlowHeater lediglich mit dass das Feld zum SQL Server durchgereicht/gesetzt werden soll, es werden keine Schemaänderungen an der eigentlichen SQL Server Tabelle vorgenommen!

Das Skript führt nun einmalig vor der eigentlichen Ausführung der Insert SQL Statements den SQL Befehl

set identity_insert [IHRE_TABELLE] on

auf der WRITE Seite (= SQL Server Adapter ) aus. Danach können auf der angegeben SQL Server Tabelle auch AutoID (Identity) Werte per Insert eingefügt werden.

Bitte beachten: Das Ganze funktioniert nur zusammen mit dem SQL Server Adapter !

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: von FlowHeater-Team.

Aw: identity_insert 8 Jahre 7 Monate her #260

:) :) :) :) :) :)

Super - Vielen Dank - insbesondere für die superschnelle Hilfe!!!! Hat problemlos funktioniert!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

identity_insert 1 Monat 2 Wochen her #3756

Hallo,

ich habe Ihren Ratschlag in meine Runtime eingebaut, wie beschrieben. Wenn ich nun die FHRT-Datei als Test oder über BATCH ausführe, bekomme ich die Fehlermeldung

"Auf den Member 'Flowheater.Core.Adapter.BaseAdapter.OnlyTest.get' kann nicht mit einem Instanzverweis zugegriffen werden. Qualifizieren Sie ihn stattdessen  mit einem Typnamen.

Die Fehlermeldung bezieht sich auf die Zeile 6 des Scripts, sprich 'if (!AdapterWrite.OnlyTest && bFirst)'

Können Sie mir bitte diesbezüglich weiterhelfen.

Vielen Dank im Voraus.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

identity_insert 1 Monat 2 Wochen her #3757

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1428
Hallo Herr Heldt,

hier hat es eine (bzw. zwei) Änderungen gegeben, unten finden Sie das korrigiert C# Skript.

Die zweite Änderung ist, dass der IDENTITY_INSERT mit dem SQL Server Adapter nun wesentlich einfacher geht. Sie brauchen nur die Option „Erlaube Auto Inkrement (IDENTITY) Inserts“ auf dem Reiter Allgemein zu aktivieren. Sobald Sie dann am Feld die Option „Auto Increment“ deaktivieren können diese Feldinhalte problemlos importiert werden, siehe Screenshots.
 
Hier gibt es ein Beispiel dazu: SQL Server Import IDENTITY (Auto Inkrement) Felder
bool bFirst = true;

public object DoWork()
{
    // nur beim 1. Aufruf ausführen und nicht im Testmodus
    if (!TestMode && bFirst)
    {
        bFirst = false;

        // SQL Server Tabellennamen anpassen
        AdapterWrite.Execute("set identity_insert [IHRE_TABELLE] on");
    }

    // Eingangsparameter für weitere Verarbeitung wieder zurückliefern
    return InValues[0].GetValue();
}




gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
  • Seite:
  • 1

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

Copyright © 2009-2019 by FlowHeater GmbH.
Alle Rechte vorbehalten.

Follow us on

twitter  facebook

YouTube

 de en