2017-02-07 2 views
0

Ich habe zwei Datenbanken: A und B.Aufschalten IDENTITY-Einschränkung, wenn die Tabelle kopiert wird

Ich habe einen Job DTSX einen „Transfer SQL Server Objects Task-Editor“ mit Hilfe von Tabellen von A nach B kopieren Dies ist nicht ein Skript; Es sieht aus wie das angehängte Bild.

Eine der Tabellen hat eine IDENTITY-Spalte, die wie folgt definiert ist: SOMEID INT IDENTITY(1,1) NOT NULL.

Es erscheint (aber ich konnte noch nicht bestätigen), dass beim Kopieren der Tabelle von A nach B die SOMEID-Spalte neu geschrieben wird, so dass die SOMEID-Werte für denselben Datensatz nicht zwischen A und B übereinstimmen.

Die Tabelle existiert nicht auf B, wenn die Kopie beginnt.

Macht das Sinn?

Wie kann ich sie zwingen, zu passen, wenn die Tabelle kopiert wird? (Ich brauche eine Antwort im Zusammenhang mit der GUI, die ich verwende, kein Skript).

Bitte entschuldigen Sie meine Beschreibung, da ich kein Windows-Entwickler bin, also ist es schwierig für mich, nach der Antwort zu suchen, weil ich die korrekte Terminologie nicht kenne.

enter image description here

+0

Die zweite Tabelle sollte keine Identitätsspalte haben, wenn Daten aus der ersten Tabelle abgerufen werden. – HLGEM

+0

Sie müssen das Skript anzeigen, das das Paket verwendet, wenn es die Tabelle auf B generiert und auffüllt. Wenn es nur eine Einfügung ohne SET IDENTITY_INSERT ON durchführt, dann gibt es keine Garantie, dass Sie dieselbe IDENTITY erhalten Werte für jede gegebene Zeile. –

+0

Ich nehme an, dass Sie SET IDENTITY_INSERT ON in der Zieltabelle verwenden können. https://msdn.microsoft.com/en-us/library/ms188059.aspx – McNets

Antwort

1

Es gibt eine Checkbox in OleDBDestination (von Performance-Gründen bevorzugt) Identität setzen ON einfügen . Einfach überprüfen Sie es und die ID-Spalte

0

ich wie die unten etwas verwendet haben zum Ziel geschrieben werden:

set identity_insert [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] on 

INSERT INTO [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] ([key], [disExtID]) 
SELECT [Copy of key],[Copy of disExtID] 
FROM [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID tmp] 

set identity_insert [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] off 

Hier [key] nicht ein Primärschlüssel ist.

Verwandte Themen