M.E.
Lt. Commander
- Registriert
- Jan. 2007
- Beiträge
- 1.923
Hallo,
Für einen Datenbankimport auf eine Tabelle muss ich sicherstellen, dass die Prmärschlüssel aus der alten Datenbank in der neuen Datenbank gleich sind. Prinzipiell sollte es hier auch keine Konflikte geben, da die neue Tabelle zuerst geleert wird, bevor die Daten aus der alten Datenbank eingefügt werden.
Ich arbeite auf einem MS SQL Server.
Die Tabelle in der neuen Datenbank hat folgendes Schema:
Die Daten werden direkt aus einer temporären Tabelle in derselben DB kopiert. Dazu gehe ich folgendermaßen vor:
Nach dem Ausführen dieses Statements stehen die Datensätze aus T_archiv_tmp in T_archiv. Allerdings haben sich die Primärschlüssel geändert und fangen bei 1 an und zählen dann hoch, wie beim regulären Einfügen.
Dabei habe ich doch SET IDENTITY_INSERT T_archiv ON verwendet.
Warum hat das keinen Effekt? Ich habe die ALTER Rechte auf der Tabelle, die dafür notwendig sind.
Ich habe auch schon probiert das PK_T_archiv temporär wegzunehmen oder die ID Spalte zu modifizieren und die IDENTITY(1,1) Eigenschaft für meine Zwecke zu entfernen. Leider alles ohne Erfolg.
Woran kann es noch liegen?
MfG
M.E.
Für einen Datenbankimport auf eine Tabelle muss ich sicherstellen, dass die Prmärschlüssel aus der alten Datenbank in der neuen Datenbank gleich sind. Prinzipiell sollte es hier auch keine Konflikte geben, da die neue Tabelle zuerst geleert wird, bevor die Daten aus der alten Datenbank eingefügt werden.
Ich arbeite auf einem MS SQL Server.
Die Tabelle in der neuen Datenbank hat folgendes Schema:
Code:
CREATE TABLE [dbo].[T_archiv](
[ID] [int] IDENTITY(1,1) NOT NULL,
[columnX] [varchar](4) NULL,
[columnY] [varchar](50) NULL,
....
[columnZ] [nvarchar](10) NULL,
CONSTRAINT [PK_T_archiv] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
Die Daten werden direkt aus einer temporären Tabelle in derselben DB kopiert. Dazu gehe ich folgendermaßen vor:
Code:
SET IDENTITY_INSERT T_archiv ON
GO
INSERT INTO T_archiv
(
[ID],
[columnX] ,
[columnY] ,
...
[columnZ]
)
SELECT
[ID],
[columnX] ,
[columnY] ,
....
[columnZ]
FROM T_archiv_tmp
Nach dem Ausführen dieses Statements stehen die Datensätze aus T_archiv_tmp in T_archiv. Allerdings haben sich die Primärschlüssel geändert und fangen bei 1 an und zählen dann hoch, wie beim regulären Einfügen.
Dabei habe ich doch SET IDENTITY_INSERT T_archiv ON verwendet.
Warum hat das keinen Effekt? Ich habe die ALTER Rechte auf der Tabelle, die dafür notwendig sind.
Ich habe auch schon probiert das PK_T_archiv temporär wegzunehmen oder die ID Spalte zu modifizieren und die IDENTITY(1,1) Eigenschaft für meine Zwecke zu entfernen. Leider alles ohne Erfolg.
Woran kann es noch liegen?
MfG
M.E.