ramoutchisback
Messages postés2Date d'inscriptionmercredi 26 décembre 2007StatutMembreDernière intervention28 janvier 2009
-
28 janv. 2009 à 14:52
SQLpro
Messages postés35Date d'inscriptionsamedi 17 novembre 2007StatutMembreDerniè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
SQLpro
Messages postés35Date d'inscriptionsamedi 17 novembre 2007StatutMembreDernière intervention 8 février 20121 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