Sélectionnez une instruction où source est une autre base de données

sql sqlbulkcopy sql-server sql-server-2008 sql-server-2012

Question

Comment copier des données d'une base de données dans une autre base de données avec la même structure de table et conserver les identités de clé?

J'utilise SQL Server 2012 "Denali" et je veux copier des données à partir d'une base de données SQL Server 2008. Les tables que j'ai sont exactement les mêmes, mais je veux les données de l’ancien DB dans le nouveau DB "Denali". Les bases de données sont sur des serveurs différents.

Donc je veux quelque chose comme

USE newDB;
GO
SELECT *
INTO newTable
FROM OldDb.oldTable WITH (KEEPIDENTITY);
GO

Quelqu'un a une suggestion pour rendre cela réalisable?

Réponse acceptée

Configurez un serveur lié et faites référence à celui-ci dans votre requête. Vous devrez peut-être également utiliser IDENTITY_INSERT .

Les composants SSIS intégrés à SSMS peuvent également charger des données de différentes sources (XML, fichier plat ou serveur local / distant).


Réponse populaire

Si vous aviez ce problème aujourd'hui et que cela ne fonctionnait pas :( Vous devez utiliser des noms complets des bases de données si les deux bases de données sont sur le même serveur. N'oubliez pas le schéma .dbo .

Select  *
INTO [NEW DB].dbo.Lab_Tests
from [OLD DB].dbo.Lab_Tests


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi