Déplacement de données SQL 2000

ramoutchisback Messages postés 2 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 28 janvier 2009 - 28 janv. 2009 à 14:52
SQLpro Messages postés 35 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 8 février 2012 - 28 janv. 2009 à 17:59
Bonjour à tous et merci d'avance.
Le problème:
Je dois déplacer un très grand nombre de datas d'une table alarme à une autre (structure exactement identique)
Mais l'installation continuera à fonctionner et j'aimerais ne pas trop perturber le système.
Les idées:
* Déplacer les données jour par jour pour ne pas avoir un trop grand nombre
* Déplacer X données (compteur)
* Copier les données et effacer celle-ci dans la première table
Si quelqu'un à une idée, elle est bien venue
Jean-Marc

1 réponse

SQLpro Messages postés 35 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 8 février 2012 1
28 janv. 2009 à 17:59
Tout dépend de votre besoin fonctionnel. Si des utilisateurs travaillent sur cette table, il vaudrait donc mieux que la transaction soit acide donc effectuer ceci en un seul coup sinon une requête qui taperait dans cette table risque de retourner un contenu anormal...
Vous pouvez d'ailleurs lancer une telle opération par une tâche planifiée aux heures creuses.
Maintenant si votre table n'est jamais utilisé, le plus simple serait de procéder en commençant par un transaction au niveau d'isolation SERIALIZABLE et qui ferait un traitement par lots de lignes du genre :

IF EXISTS (SELECT * FROM MaTableSource)
BEGIN
   INSERT INTO MaTableDestination
   SELECT TOP 1000 *
   FROM MaTableSource
   ORDER BY ??? PK ???;
   DELETE FROM MaTableSource
   WHERE ??? PK ??? IN (SELECT ??? PK ??? FROM MaTableDestination);
END

A +
0