Detectar estadistiques d’usuari a una base de dades:

-- Llista els índexs creats per l'usuari a una base de dades
-- NOTA SAP 2358988

SELECT st.*
FROM sys.stats AS st 
INNER JOIN sys.tables AS t ON st.object_id = t.object_id
WHERE st.user_created = 1

Esborrar-los:

--  ESBORRAR ESTADISTIQUES CREADES PER L'USUARI
--  (Normalment per l'optimitzador de consultes del SQL Server)
--  Soluciona el missatge d'advertiment pre actualització del SAP Business One (Nota SAP 2358988)
--  
--  Autor: David Marti
--  Última modificació: 10/3/2018 

DECLARE Estadistiques CURSOR FOR
SELECT OBJECT_NAME(st.object_id),st.name
FROM sys.stats AS st 
INNER JOIN sys.tables AS t ON st.object_id = t.object_id
WHERE st.user_created = 1

DECLARE @NomTaula NVARCHAR(80)
DECLARE @NomEstadistica NVARCHAR(512)

OPEN Estadistiques
FETCH next FROM Estadistiques INTO @NomTaula,@NomEstadistica
WHILE @@FETCH_STATUS = 0
BEGIN
  EXEC ('drop statistics ['+@NomTaula+'].' + @NomEstadistica)
  FETCH next FROM Estadistiques INTO @NomTaula,@NomEstadistica
END

CLOSE Estadistiques
DEALLOCATE Estadistiques
GO

 

image_pdf