sql >> Database >  >> RDS >> Sqlserver

Zorgen statistieken die verwijzen naar een kolom ervoor dat die kolom niet wordt verwijderd?

De code die wordt voorgesteld in het JNK-antwoord werkt niet, maar het idee is goed. Als u alle door gebruikers gemaakte statistieken wilt verwijderen, is dit mijn geteste oplossing:

DECLARE @sql NVARCHAR(MAX)

DECLARE statCursor CURSOR FOR 
SELECT 
    'DROP STATISTICS ' + QUOTENAME(SCHEMA_NAME(t.schema_id)) 
                        + '.' + QUOTENAME(t.name) 
                        + '.' + QUOTENAME(st.name) AS sql
FROM
    sys.stats AS st 
    INNER JOIN sys.tables AS t
        ON st.object_id = t.object_id
WHERE
    st.user_created = 1
ORDER BY 1;

OPEN statCursor;

FETCH NEXT FROM statCursor INTO @sql
WHILE @@FETCH_STATUS = 0  
BEGIN  
    PRINT @sql
    EXEC sp_executesql @sql
    FETCH NEXT FROM statCursor INTO @sql
END  
CLOSE statCursor  
DEALLOCATE statCursor


  1. Afhankelijkheden van Oracle-databases in PL/SQL

  2. Proberen om INSERT te krijgen om alleen nieuwe gegevens in te voegen

  3. freeTDS gebruikt zijn config niet

  4. Wat is het equivalent van het spool-commando in MySQL?