Lot de s'engager sur la grande opération d'INSERTION dans SQL natif?

J'ai un couple de grandes tables (188 m et 144m lignes) j'ai besoin de remplir à partir de points de vue, mais chaque vue contient quelques centaines de millions de lignes (extraction de l'ensemble des pseudo-dimensions de la modélisation des données dans un formulaire plat). Les touches sur chaque table sont plus de 50 composite octets de colonnes. Si les données dans les tables, je pensais toujours à propos de l'utilisation de sp_rename pour faire l'autre table, mais ce n'est pas vraiment une option.

Si je fais une seule opération d'INSERTION, le processus utilise une énorme quantité d'espace du journal des transactions, typicalyl de dépôt et en invitant un tas de tracas avec les Administrateurs de bases de données. (Et oui, c'est probablement un travail les Administrateurs de base de données doit gérer/conception/architecte)

Je peux utiliser SSIS et diffuser les données dans la table de destination avec la validation du lot (mais cela ne veut exiger la transmission des données par le réseau, car nous ne sommes pas autorisés à exécuter des packages SSIS sur le serveur).

Toutes les autres choses que de diviser le processus en plusieurs opérations d'INSERTION à l'aide de une sorte de clé pour distribuer les lignes dans les différents lots et faire une boucle?

  • Si la table de partitionnement est une option, vous pouvez diviser les inserts par la partition de la valeur. Pourrait la rendre plus rapide à assembler résultant des sous-ensembles.
InformationsquelleAutor Cade Roux | 2009-10-21