2010-07-29 5 views
0

J'ai des bases de données SQL 2005.Remettre la ligne supprimée d'une autre base de données tout en préservant le champ d'identification

J'ai supprimé une ligne de l'un d'entre eux et je souhaite la récupérer à partir d'une autre base de données qui constituait une sauvegarde de la ligne. Comment l'activer en conservant son champ d'identification de clé primaire id?

Pouvez-vous donner à TSQL de faire cela supposer que les bases de données sont appelées "tbrPdata" et "tbr0910" qui est la sauvegarde?

Malcolm

Répondre

2

utilisation SET IDENTITY_INSERT:

SET IDENTITY_INSERT tbrPdata.dbo.TABLE ON 
GO 

INSERT INTO tbrPdata.dbo.TABLE 
    (col1, col2, col3,...) 
SELECT t.col1, t.col2, t.col3,... 
    FROM tbr0910.dbo.TABLE t 
    WHERE t.id = ? 

SET IDENTITY_INSERT tbrPdata.dbo.TABLE OFF 
GO 
+0

Je reçois cette erreur « Une valeur explicite pour la colonne d'identité « » tbrPdata.dbo.Employees table ne peut être spécifiée lorsqu'une liste de colonne est utilisée et IDENTITY_INSERT est activé " – Malcolm

+3

Ajoutez la liste des champs entre INSERT INTO et SELECT * dans le format (COL1, Col2, Col3) ... Remplacez également le * par les noms de champs réels. – JohnFx

+0

@Malcolm: Mis à jour - voir le commentaire de JohnFx pour explication, car vous n'avez pas fourni la liste des colonnes pour la table. –

Questions connexes