Comment ajouter une colonne d'identité à une table de base de données qui a un grand nombre de lignes

J'ai une table de base de données qui a ~ 40 000 000 de lignes. Je veux ajouter une colonne d'identité à cette table. Comment le faire dans un journal de manière respectueuse de l'?

Quand je ne les suivants:

ALTER TABLE table_1
  ADD id INT IDENTITY

ce seulement remplit la totalité de l'espace du journal.

Est-il possible de le faire dans un journal de manière respectueuse de l'? La base de données sur SQL Server 2008.

Grâce,
Mohan.

  • Est-ce MySQL, SQL Server, PostGres, Oracle?
  • désactiver le journal, ajouter une colonne, activer le journal.
  • Ne pourrait-il pas être une réponse et pas juste un commentaire?
  • Je vois qu'il n'y a aucun moyen de désactiver le journal dans SQL Server 2008
  • il n'y a aucun moyen de désactiver le journal des transactions comme qui contreviendrait à l'ACIDE.
  • Ne pouvez pas désactiver le journal, mais vous pouvez changer ce que les opérations sont enregistrées en modifiant le modèle de récupération. Regardez dans la modification de la base de données de modèle de récupération SIMPLE avant de le modifier, puis modifier à temps PLEIN après l'alter est terminée. N'oubliez pas de faire une sauvegarde du journal des transactions avant de passer à la simple, et une sauvegarde complète ou différentielle après un changement de revenir à la version complète.
  • Qui nécessite encore une façon de briser les tâches en petites transactions cependant. Un simple ALTER TABLE table_1 ADD id INT IDENTITY sera exécutée comme une seule transaction, et même en mode simple, le journal ne sera pas en mesure d'être tronqué jusqu'à ce que l'ensemble de l'opération est terminée.
  • Merci à tous pour votre aide. J'ai été en mesure d'augmenter le journal de l'espace avec l'aide de DB Admin et a été en mesure de créer de la colonne d'identité.

InformationsquelleAutor Mohan | 2011-08-23