Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.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.

THEMA: identity_insert

identity_insert 5 Jahre 11 Monate her #257

  • Martin
  • Martins Avatar
  • Offline
  • 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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: identity_insert 5 Jahre 11 Monate her #259

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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.
Letzte Änderung: 10 Monate 3 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: identity_insert 5 Jahre 10 Monate her #260

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

Super - Vielen Dank - insbesondere für die superschnelle Hilfe!!!! Hat problemlos funktioniert!
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.078 Sekunden