Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

identity_insert

Mehr
13 Jahre 2 Monate her #257 von Martin
identity_insert wurde erstellt von Martin
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 um der Konversation beizutreten.

Mehr
13 Jahre 2 Monate her - 8 Jahre 2 Monate her #259 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: identity_insert
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.
Code:
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.
Letzte Änderung: 8 Jahre 2 Monate her von FlowHeater-Team.

Bitte Anmelden um der Konversation beizutreten.

Mehr
13 Jahre 2 Monate her #260 von Martin
Martin antwortete auf Aw: identity_insert
:) :) :) :) :) :)

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

Bitte Anmelden um der Konversation beizutreten.

Mehr
4 Jahre 8 Monate her #3756 von Sven Heldt
Sven Heldt antwortete auf identity_insert
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 um der Konversation beizutreten.

Mehr
4 Jahre 8 Monate her #3757 von FlowHeater-Team
FlowHeater-Team antwortete auf identity_insert
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
Code:
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 um der Konversation beizutreten.

Ladezeit der Seite: 0.378 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


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