Copies en bloc avec DBCC CheckIdent

batch-processing dbcc sqlbulkcopy sql-server sql-server-2008

Question

Notre équipe doit insérer une quantité cruelle de données dans notre base de données SQL Server 2008. Nous recherchons une bonne solution. Maintenant, nous en avons trouvé un, mais j'ai des doutes, simplement parce que ça ne me semble pas bien. Je demande donc ici si cela semble être une bonne solution. Le défi supplémentaire est qu'il s'agit d'une base de données répliquée entre homologues sur 4 serveurs! :)

Imaginez que nous ayons 1 million de lignes à insérer

  1. Commencer la transaction
  2. Augmenter la valeur d'identification actuelle sur une table avec 1 million
  3. Avoir un DataSet / DataTable prêt avec 1 million de lignes et les identifiants corrects
  4. BulkCopie les données dans la base de données
  5. Transaction validée

Est-ce une bonne solution, pourrions-nous avoir des problèmes de concurrence, avoir des transactions trop importantes, etc.

Réponse populaire

vous n'aurez que des problèmes (autant que je sache, donc il y a peut-être des choses que je néglige!) si la base de données est en ligne et que les utilisateurs peuvent insérer des lignes dans cette table. L'augmentation de la valeur d'identité pour les nouvelles lignes du méta-niveau signifie simplement que la ligne suivante insérée par le système utilisera ce numéro. Par conséquent, si vous l'augmentez avec 1 million, cela signifie que vous avez réservé ces numéros à l'avance.

Les colonnes d'identité sont "sympas" mais ont pour effet secondaire de ne pas être transférables. Par conséquent, si vous devez migrer les données vers une autre base de données, sachez que vous devez probablement ajuster les données insérées pour les faire correspondre à la base de données dans laquelle vous les insérez (car c'est la portée des données qui signifie que les champs d'identité peuvent être en conflit avec des lignes déjà présentes dans la table. )

Si c'est une affaire ponctuelle, cela pourrait marcher. Si vous envisagez de le faire régulièrement, je rechercherais un système de migration de niveau supérieur dans lequel vous migriez les données vers de nouvelles valeurs d'identité ou utiliseriez GUI avec NEWSEQUENTIALID () pour obtenir des index vérifiés et des identifiants uniques et transférables. .



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