2012-03-11 2 views
2

Je suis en train de faire une sauvegarde pour mes données de mon premier DocumentManagement.tbDocumentsHistory de table et l'enregistrer sur DocumentManagement.tbDocumentsUne valeur explicite pour la colonne d'identité?

et parce que les DocumentManagement.tbDocuments ont ID colonne IDENTITY_INSERT cette erreur élevée

Une valeur explicite pour la colonne d'identité dans la table 'DocumentManagement.tbDocuments' ne peut être spécifiée que lorsqu'une liste de colonnes est utilisée et IDENTITY_INSERT sur ON.

quand je le code

DELETE FROM DocumentManagement.tbDocumentsHistory 
OUTPUT DELETED.* INTO DocumentManagement.tbDocuments 
FROM DocumentManagement.tbDocumentsHistory 
WHERE [email protected] 

J'ai essayé de désactiver le identity_insert DocumentManagement.tbDocuments en utilisant ce code

SET IDENTITY_INSERT DocumentManagement.tbDocuments ON 
     DELETE FROM DocumentManagement.tbDocumentsHistory 
      OUTPUT DELETED.* INTO DocumentManagement.tbDocuments 
      FROM DocumentManagement.tbDocumentsHistory 
     WHERE [email protected] 
     SET IDENTITY_INSERT DocumentManagement.tbDocuments OFF 

et je suis face à toujours la même erreur!

mes tables desc:

CREATE TABLE [DocumentManagement].[tbDocuments](
[DocumentID] [bigint] IDENTITY(1,1) NOT NULL, 
[DocumentNameEn] [nvarchar](max) NULL, 
[DocumentNameAr] [nvarchar](max) NULL, 
[DocumentDescriptionEn] [nvarchar](max) NULL, 
[DocumentDescriptionAr] [nvarchar](max) NULL, 
[CreatedOn] [datetime2](7) NULL, 
[ModifiedOn] [datetime2](7) NULL, 
[AddedBy] [bigint] NULL, 
[modifaiedBy] [bigint] NULL, 
[PhysicalName] [nvarchar](max) NULL, 
[Extension] [nvarchar](15) NULL, 
[DocumentTypeID] [bigint] NULL, 
[PhysicalPath] [nvarchar](max) NULL, 


CONSTRAINT [PK_tbDocuments] PRIMARY KEY CLUSTERED([DocumentID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) SUR [PRINCIPAL]

CREATE TABLE [DocumentManagement].[tbDocumentsHistory](
[DocumentID] [bigint] NOT NULL, 
[DocumentNameEn] [nvarchar](max) NULL, 
[DocumentNameAr] [nvarchar](max) NULL, 
[DocumentDescriptionEn] [nvarchar](max) NULL, 
[DocumentDescriptionAr] [nvarchar](max) NULL, 
[CreatedOn] [datetime2](7) NULL, 
[ModifiedOn] [datetime2](7) NULL, 
[AddedBy] [bigint] NULL, 
[modifaiedBy] [bigint] NULL, 
[PhysicalName] [nvarchar](max) NULL, 
[Extension] [nvarchar](15) NULL, 
[DocumentTypeID] [bigint] NULL, 
[PhysicalPath] [nvarchar](max) NULL, CONSTRAINT [PK_tbDocumentsHistory] PRIMARY KEY CLUSTERED([DocumentID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] 
+0

nvarchar (max) pour un nom de document. Sérieusement? –

+0

c'est juste un test de données !! – HAJJAJ

Répondre

3

cela résoudra le problème, mais je tente de le faire en utilisant mieux la SORTIE

SET IDENTITY_INSERT DocumentManagement.tbDocuments ON 
     INSERT INTO DocumentManagement.tbDocuments 
       (DocumentID, DocumentNameEn , DocumentNameAr , DocumentDescriptionEn , 
        DocumentDescriptionAr , CreatedOn , ModifiedOn , 
        AddedBy , modifaiedBy , PhysicalName ,Extension , 
        DocumentTypeID ,PhysicalPath 
       ) 
     SELECT * FROM DocumentManagement.tbDocumentsHistory 
     SET IDENTITY_INSERT DocumentManagement.tbDocuments OFF 

     DELETE FROM DocumentManagement.tbDocumentsHistory   
     FROM DocumentManagement.tbDocumentsHistory 
     WHERE [email protected] 
2

Vous devez modifier votre-instruction INSERT et ajouter une liste de colonne contenant le nom de la colonne d'identité pour que cela travail.

Toute-instruction INSERT à l'aide d'un insert d'identité a besoin d'une liste de colonnes, comme dans ceci:

CREATE TABLE dbo.Tab 
(
    ID INT IDENTITY NOT NULL PRIMARY KEY, 
    Name VARCHAR(40) NOT NULL 
) 

SET IDENTITY_INSERT dbo.Tab ON 
GO 

INSERT INTO dbo.Tab (ID, Name) VALUES (3000, 'Groucho') 
GO 

SET IDENTITY_INSERT dbo.Tab OFF 
+0

Je n'ai pas compris exactement votre point, pouvez-vous le préciser s'il vous plaît. – HAJJAJ

+0

N'utilisez pas * pour l'insertion, indiquez explicitement les noms des colonnes – kaj

+0

@KAJ: je pense que le lien que vous avez publié indique que les états le font. – Mithrandir

Questions connexes