SQL Server: Comment utiliser le Curseur pour supprimer des enregistrements
Nous voulons supprimer des tonnes de données obsolètes dans un tableau, mais ce sera un table de verrouillage pour un long moment. Il est possible d'utiliser le Curseur pour supprimer, dit, d'une centaine de dossiers par transaction en temps, en boucle ?
Et où puis-je me réfère à l'exemple?
Si la quantité de données que vous souhaitez conserver est de petite taille et que vous n'avez pas besoin de le supprime dans le journal des transactions, vous pourriez être mieux de copier les données que vous souhaitez conserver sur une table temporaire, tronquer votre table d'origine, puis de copier les données.
Merci de la suggestion, mais c'est dangereux, puisque c'est en ligne et ne peut pas prédire quand les utilisateurs de la requête de la table. BTW: le tableau a grandi à 4 go.
Merci de la suggestion, mais c'est dangereux, puisque c'est en ligne et ne peut pas prédire quand les utilisateurs de la requête de la table. BTW: le tableau a grandi à 4 go.
OriginalL'auteur Ricky | 2010-01-20
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme ceci:
Edit: Cela ne fonctionne que dans SQL 2005 et sur. Comme nous venons de l'apprendre, c'est SQL 2000, ce code à la place:
Et... Modèle de Récupération Simple signifie que le journal va tronquer sur les points de contrôle, plutôt que de seulement lorsque le journal est sauvegardé.
salut, Il ne semble pas travailler dans SQL 2000
Salut, toujours pas de travail, voici ma requête: SUPPRIMER TOP 100 XYZ OÙ DateCreated <= '2001/2/31'
Désolé, mon commentaire sur SQL 2000 a été mauvais. HAUT n'était pas pris en charge ensuite. Essayer de mettre cela au début, et le retrait du "TOP 100".
SET ROWCOUNT 100
Cela signifie que la requête n'affecte que les 100 lignes à la fois.
OriginalL'auteur Rob Farley
Que vous pouvez vous engager tous les 100 (ou 1000, ou quoi que ce soit) des enregistrements dans la boucle, en libérant de la serrure et de laisser toutes les opérations en attente d'obtenir leur travail. Sinon, vous êtes la génération d'un immense journal des transactions qui mange le plus de O(n^2) quand elle est grande. Cette chose sera d'une grande partie du temps réel consacré, au lieu de trouver la réelle suppression de fait. Si vous lot et de s'engager, vous êtes plus sûr, de restauration/les fichiers journaux ne poussent pas comme des fous, et les verrous sont gérables.
Si toutefois vous avez besoin énorme de restauration en option, il y a 2 choix:
OriginalL'auteur Nick Craver
Quelle est l'intention de WaitFor Delay?
l'attente de retard est de faire une pause et de permettre à d'autres opérations pour la table pour commencer.
Je vous remercie. Votre réponse broden mes yeux.
OriginalL'auteur John Hartsock