Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 100.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.
  • Seite:
  • 1

THEMA: identity_insert

identity_insert 6 Jahre 5 Monate her #257

  • Martin
  • Martins Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 14
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 6 Jahre 5 Monate her #259

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1190
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 !

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 6 Jahre 5 Monate her #260

  • Martin
  • Martins Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 14
:) :) :) :) :) :)

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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.089 Sekunden