J'ai besoin de prendre un "instantané" d'une base de données courante et de la cloner dans la même base de données, avec de nouvelles clés primaires.Comment copier un grand ensemble de données dans SQLServer db
Le schéma en question est constitué d'environ 10 tables, mais certaines tables contiennent potentiellement des centaines de milliers à 1 million d'enregistrements qui doivent être dupliqués.
Quelles sont mes options ici? Je crains que l'écriture d'un SPROC nécessite un verrouillage des lignes de la base de données en question (pour la simultanéité) pendant toute la durée de l'opération, ce qui est assez ennuyeux pour les autres utilisateurs. Combien de temps prendrait une telle opération, en supposant que nous puissions l'optimiser dans toute la mesure possible? Est-ce que ça va prendre 30 secondes à 1 minute pour effectuer autant d'insertions? Je ne suis pas en mesure de verrouiller la totalité de la ou des tables et d'effectuer une insertion en bloc, car d'autres utilisateurs utilisant d'autres comptes utilisent indépendamment les mêmes tables. En fonction des attentes en termes de performances, une alternative consisterait à vider la base de données actuelle dans un fichier xml, puis à cloner de manière asynchrone la base de données de ce fichier xml en arrière-plan. L'avantage évident de ceci est que la base de données n'est verrouillée que le temps nécessaire pour effectuer le vidage xml et que les insertions peuvent s'exécuter en arrière-plan.
Si un bon administrateur de base de données peut exécuter l'opération "clone" du début à la fin en moins de 10 secondes, cela ne vaut probablement pas la complexité de la solution xmldump/webservice. Mais si c'est une cause perdue, et que l'insertion potentielle de millions de lignes est susceptible de se dérouler dans le temps, alors je préférerais commencer par l'approche xml tout de suite. Ou peut-être qu'il y a une approche entièrement meilleure?
Merci beaucoup pour toutes les idées que vous pouvez fournir.
Quelle version (2000 , 2005, 2008) et edtion (express, groupe de travail, standard, entreprise) de Sql Server utilisez-vous? – chadhoc
Le «avec de nouvelles clés primaires» est-il une exigence? –
nouvelles clés primaires est une exigence, en ce sens que celles-ci doivent être des enregistrements en double qui seront ensuite associés en tant que "version" différente de ces données. J'utilise SQL Server 2005 édition standard – Scott