Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" a écrit dans le message de
news:%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millionsde lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
etj'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" <abazoul@hotmail.com> a écrit dans le message de
news:%23LnaQSBRFHA.3076@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" a écrit dans le message de
news:%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millionsde lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
etj'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Le script est tout ce qu'il y de plus correct.
N'aurait-il pas un trigger qui annulerait la transaction ?
--
Bien cordialement
Med Bouchenafa
"Alain" a écrit dans le message de news:
%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000 lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Le script est tout ce qu'il y de plus correct.
N'aurait-il pas un trigger qui annulerait la transaction ?
--
Bien cordialement
Med Bouchenafa
"Alain" <abazoul@hotmail.com> a écrit dans le message de news:
%23LnaQSBRFHA.3076@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000 lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Le script est tout ce qu'il y de plus correct.
N'aurait-il pas un trigger qui annulerait la transaction ?
--
Bien cordialement
Med Bouchenafa
"Alain" a écrit dans le message de news:
%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000 lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
de la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" wrote in message
news:%
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" a écrit dans le message de news:
> %
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>
Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
de la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" <com.hotmail@bouchenafa> wrote in message
news:%231uAd1CRFHA.1096@tk2msftngp13.phx.gbl...
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" <abazoul@hotmail.com> a écrit dans le message de news:
> %23LnaQSBRFHA.3076@TK2MSFTNGP14.phx.gbl...
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>
Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
de la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" wrote in message
news:%
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" a écrit dans le message de news:
> %
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>
Ce n'est pas trop possible car j'efface des vielles données.
Et en plus j'ai mon identity dont j'ai besoin, masi je pense que ce doit
être possible de pouvoir l'initialiser à une autre valeur que 1.
C'est surtout le fait que je ne vide pas toute la table qui m'empêche de
le faire.
"Gislain" wrote in message
news:Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus
rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" a écrit dans le message de
news:%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millionsde lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de
la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
etj'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Ce n'est pas trop possible car j'efface des vielles données.
Et en plus j'ai mon identity dont j'ai besoin, masi je pense que ce doit
être possible de pouvoir l'initialiser à une autre valeur que 1.
C'est surtout le fait que je ne vide pas toute la table qui m'empêche de
le faire.
"Gislain" <nospam@nospam.com> wrote in message
news:OV88NKCRFHA.3628@TK2MSFTNGP12.phx.gbl...
Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus
rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" <abazoul@hotmail.com> a écrit dans le message de
news:%23LnaQSBRFHA.3076@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de
la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Ce n'est pas trop possible car j'efface des vielles données.
Et en plus j'ai mon identity dont j'ai besoin, masi je pense que ce doit
être possible de pouvoir l'initialiser à une autre valeur que 1.
C'est surtout le fait que je ne vide pas toute la table qui m'empêche de
le faire.
"Gislain" wrote in message
news:Bonjour Alain,
Je ne connais pas la raison de ton problème mais la méthode la plus
rapide
pour effectuer ce genre de purge globale est de générer un script sur ta
table (description, index, clef, ...) et de le lancer.
Avantage :
. Cela aura pour effet de supprimer/recréer la table en un clin d'oeil
Inconvénient :
. Si tu as un compteur identity il est réinitialisé à 1, charge à toi de
savoir si c'est important, au besoin tu le valorises manuellement
a+
Gislain.
"Alain" a écrit dans le message de
news:%Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millionsde lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de
la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
etj'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60 millions
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes et
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60 millions
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes et
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60 millions
de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un fichier
texte pour l'archivage et maintenant je souhaite effacer des lignes de la
base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes et
j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
>>Certes que votre script ne contient pas "where ma_condition".
Alain,
Se peut-il qu'aucune rangée ne satisfait "ma_condition"?
Si vous n'affichez pas le script précis, il est difficile de vous
aider. Certes que votre script ne contient pas "where ma_condition".
De toute façon, qui vous "dit à chaque fois qu'il a supprimé 100000
lignes"?
Quoiqu'aucune rangée ne satisfasse ma_condition, la condition de boucle
@i <= @nbcount sera satisfaite, et la boucle fera un tour.
Steve Kass
Drew University
Alain wrote:Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
>>Certes que votre script ne contient pas "where ma_condition".
Alain,
Se peut-il qu'aucune rangée ne satisfait "ma_condition"?
Si vous n'affichez pas le script précis, il est difficile de vous
aider. Certes que votre script ne contient pas "where ma_condition".
De toute façon, qui vous "dit à chaque fois qu'il a supprimé 100000
lignes"?
Quoiqu'aucune rangée ne satisfasse ma_condition, la condition de boucle
@i <= @nbcount sera satisfaite, et la boucle fera un tour.
Steve Kass
Drew University
Alain wrote:
Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
>>Certes que votre script ne contient pas "where ma_condition".
Alain,
Se peut-il qu'aucune rangée ne satisfait "ma_condition"?
Si vous n'affichez pas le script précis, il est difficile de vous
aider. Certes que votre script ne contient pas "where ma_condition".
De toute façon, qui vous "dit à chaque fois qu'il a supprimé 100000
lignes"?
Quoiqu'aucune rangée ne satisfasse ma_condition, la condition de boucle
@i <= @nbcount sera satisfaite, et la boucle fera un tour.
Steve Kass
Drew University
Alain wrote:Bonjour,
Je tourne en rond depuis un moment sur un probléme qui ne devrait pas en
être un : supprimer des lignes dans une table. Ma table contient 60
millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers un
fichier texte pour l'archivage et maintenant je souhaite effacer des
lignes de la base.
Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
transaction énorme, je lui demande de suppimer par boc de 100 000 lignes
et j'ai mis la base en mode recovery simple.
J'ai un script trés simple :
alter Database [ma_database] set recovery simple
go
SET ROWCOUNT 100000
declare @nbrow int
declare @nbcount int
declare @i int
select @nbRow =count(id)
from [ma_table]
where ma_condition
print @nbRow
set @nbcount = @nbrow / 100000
set @i=0
while @i<=@nbcount
begin
begin transaction
delete from [maTable] where
ma_condition
commit
set @i= @i+1
print @i
end
go
SET ROWCOUNT 0
go
je shrink les fichiers
et ensuite je replace ma base en mode recovery bulk copy
pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé 100000
lignes, mais les données sont toujours présentes !!!!
Je deviens fous, si quelqu'un peut m'aider...
merci d'avance
Alain
La division entière peut peut-être laisser des lignes ??!!! (réfléchir en
fin de journée pfff) :
120000/100000=1, la boucle est faite une fois et il reste 20000 lignes non
détruites ???
Est- ce qu'il reste le nnombre original de lignes ou des lignes sont-elles
supprimées tout de même ???
Patrice
--
"Alain" a écrit dans le message de
news:4263dfaa$0$22175$Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
d'itérationsde la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" wrote in message
news:%
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" a écrit dans le message de news:
> %
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
en>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
un>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
lignes>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>
La division entière peut peut-être laisser des lignes ??!!! (réfléchir en
fin de journée pfff) :
120000/100000=1, la boucle est faite une fois et il reste 20000 lignes non
détruites ???
Est- ce qu'il reste le nnombre original de lignes ou des lignes sont-elles
supprimées tout de même ???
Patrice
--
"Alain" <abazoul@hotmail.com> a écrit dans le message de
news:4263dfaa$0$22175$626a14ce@news.free.fr...
Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
d'itérations
de la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" <com.hotmail@bouchenafa> wrote in message
news:%231uAd1CRFHA.1096@tk2msftngp13.phx.gbl...
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" <abazoul@hotmail.com> a écrit dans le message de news:
> %23LnaQSBRFHA.3076@TK2MSFTNGP14.phx.gbl...
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
en
>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
un
>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
lignes
>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>
La division entière peut peut-être laisser des lignes ??!!! (réfléchir en
fin de journée pfff) :
120000/100000=1, la boucle est faite une fois et il reste 20000 lignes non
détruites ???
Est- ce qu'il reste le nnombre original de lignes ou des lignes sont-elles
supprimées tout de même ???
Patrice
--
"Alain" a écrit dans le message de
news:4263dfaa$0$22175$Non, je n'ai pas de trigger.
J'ai l'impression que le code fonctionne pour un certain nombre
d'itérationsde la boucle et aprés ça ne fonctionne plus.
Je me demande s'il n'a pas un cache ou quelque chose du style qui le fait
supprimer les même lignes toutes les itérations suivantes de la boucle.
Peut-être au niveau de la transaction ? C'est la première fois que je
l'utilise il faut peut être plus parametrer la transaction ?
Merci pour vos réponses.
Alain
"Med Bouchenafa" wrote in message
news:%
> Le script est tout ce qu'il y de plus correct.
> N'aurait-il pas un trigger qui annulerait la transaction ?
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Alain" a écrit dans le message de news:
> %
>> Bonjour,
>>
>> Je tourne en rond depuis un moment sur un probléme qui ne devrait pas
en>> être un : supprimer des lignes dans une table. Ma table contient 60
>> millions de lignes. Je souhaie faire le ménage, j'ai fait un bcp vers
un>> fichier texte pour l'archivage et maintenant je souhaite effacer des
>> lignes de la base.
>>
>> Pour éviter de surcharger le serveur, et eviter d'avoir un fichier de
>> transaction énorme, je lui demande de suppimer par boc de 100 000
lignes>> et j'ai mis la base en mode recovery simple.
>>
>> J'ai un script trés simple :
>>
>> alter Database [ma_database] set recovery simple
>> go
>>
>> SET ROWCOUNT 100000
>>
>> declare @nbrow int
>> declare @nbcount int
>> declare @i int
>>
>> select @nbRow =count(id)
>> from [ma_table]
>> where ma_condition
>> print @nbRow
>> set @nbcount = @nbrow / 100000
>> set @i=0
>> while @i<=@nbcount
>> begin
>> begin transaction
>> delete from [maTable] where
>> ma_condition
>> commit
>> set @i= @i+1
>> print @i
>> end
>> go
>> SET ROWCOUNT 0
>> go
>>
>> je shrink les fichiers
>> et ensuite je replace ma base en mode recovery bulk copy
>>
>> pb : il n'y pas d'erreurs, il me dit à chaque fois qu'il a supprimé
>> 100000 lignes, mais les données sont toujours présentes !!!!
>>
>> Je deviens fous, si quelqu'un peut m'aider...
>>
>> merci d'avance
>>
>> Alain
>>
>
>