Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy statystyki odnoszące się do kolumny zapobiegają usunięciu tej kolumny?

Kod zaproponowany w odpowiedzi JNK nie działa, ale pomysł jest dobry. Jeśli chcesz usunąć wszystkie statystyki utworzone przez użytkowników to moje przetestowane rozwiązanie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL do wyprowadzenia numeru wiersza w wynikach zapytania

  2. Wstaw zbiorczy z plikiem .fmt:kod błędu systemu operacyjnego (null)

  3. Alias ​​odniesienia (obliczany w SELECT) w klauzuli WHERE

  4. Znajdź jednostki odniesienia w SQL Server:sys.dm_sql_referenced_entities

  5. Czy można odmówić dostępu do SQL Server z określonych programów?