Je dois copier un tas de données d'une table de base de données dans une autre. Je ne peux pas utiliser SELECT ... INTO parce que l'une des colonnes est une colonne d'identité. En outre, j'ai quelques modifications à apporter au schéma. J'ai été en mesure d'utiliser l'assistant d'exportation de données pour créer un package SSIS, que j'ai ensuite modifié dans Visual Studio 2005 pour apporter les modifications souhaitées et autres joyeusetés. C'est certainement plus rapide qu'un INSERT INTO, mais il me semble stupide de télécharger les données sur un autre ordinateur juste pour le télécharger de nouveau. (En supposant que j'ai raison de dire que c'est ce que fait le paquetage SSIS). Existe-t-il un équivalent à BULK INSERT qui s'exécute directement sur le serveur, permet de conserver les valeurs d'identité et extrait les données d'une table? (pour autant que je sache, BULK INSERT ne peut extraire que des données d'un fichier)BULK INSERT d'une table à une autre toutes sur le serveur
Editer: Je connais IDENTITY_INSERT, mais comme il y a pas mal de données impliquées, INSERT INTO ... SELECT est un peu de lent. SSIS/BULK INSERT vide les données dans la table sans tenir compte des index et de la consignation, et ainsi de suite, donc c'est plus rapide. (Bien sûr, créer l'index cluster sur la table une fois qu'il est peuplé n'est pas rapide, mais il est encore plus rapide que le INSERT INTO ... SELECT que j'ai essayé dans ma première tentative)
Éditer 2: Les changements de schéma comprennent (mais ne sont pas limités à) ce qui suit: 1. Diviser une table en deux nouvelles tables. Dans le futur, chacun aura sa propre colonne IDENTITY, mais pour la migration, je pense qu'il sera plus simple d'utiliser l'identité de la table d'origine comme identité pour les deux nouvelles tables. Une fois la migration terminée, l'une des tables aura une relation un-à-plusieurs avec l'autre. 2. Déplacement de colonnes d'une table à une autre. 3. Suppression de certaines tables de références croisées qui ne font que des références croisées 1-à-1. Au lieu de cela, la référence sera une clé étrangère dans l'une des deux tables. 4. Certaines nouvelles colonnes seront créées avec des valeurs par défaut. 5. Certaines tables ne changent pas du tout, mais je dois les recopier en raison de la requête "Tout mettre dans une nouvelle base de données".
Pouvez-vous donner un exemple d'insert qui combine SELECT ... INTO et IDENTITY_INSERT? – stannius