Bonjour,
En fait, je voulais connaitre le meilleur moyen de gérer les statistics et votre avis sur la meilleur facon de faire, entre l'utilisation d'un procédure stockée ou par script ksh.
PAR SCRIPTS: (la base est passée en paramètre au lancement du script)
isql -Usa -P${SYB_PWD} -S${DSQUERY} -D${BASE} -o${LOGS_DIR}/StatBase_${STATDATE}.log << EOF
set nocount on
go
declare @name varchar(20)
select name into #tabletmp from sysobjects where type='U'
select @name=name from #tabletmp
while (select count(*) from #tabletmp) != 0
begin
execute ("update statistics " + @name)
print @name
execute ("update index statistics " + @name)
execute ("sp_recompile " + @name)
delete #tabletmp where name=@name
select @name=name from #tabletmp
end
go
drop table #tabletmp
go
exit
EOF
OU PAR PROCEDURE STOCKEE: (procedure créer sur chacunes des bases)
DECLARE @spid varchar(30)
DECLARE @Sql varchar(50)
DECLARE Decon CURSOR FOR
SELECT name FROM sysobjects WHERE type='U' ORDER BY name
OPEN Decon
FETCH Decon INTO @spid
WHILE @@sqlstatus <> 2
BEGIN
SELECT @Sql="update statistics "+@spid
PRINT @Sql
EXECUTE (@Sql)
SELECT @Sql="update index statistics "+@spid
EXECUTE (@Sql)
SELECT @Sql="sp_recompile "+@spid
EXECUTE (@Sql)
FETCH Decon INTO @spid
END
CLOSE Decon
DEALLOCATE CURSOR Decon
merci d'avance
Anthony
Partager