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

Prace konserwacyjne w małych bazach danych SQL

zbyt niejasna, aby odpowiedzieć precyzyjnie, zależy to w dużej mierze od rodzaju aktywności wykonywanej na DB, zastosowanego modelu odzyskiwania. W prostym trybie odzyskiwania, w którym używa się tylko pliku db bez dziennika transakcji, jeśli występują częste usuwanie i wstawianie tabel, zwykle trzeba regularnie odbudowywać indeksy.

Używam do ustawienia codziennego (nocnego uruchamiania) zadania, które wywołuje sqlcmd w celu wykonania następującego SQL:

--*********************************
--*** REPLACE THIS WITH DBNAME  ***
USE db_mytestcopy_of_live_production
--*********************************

GO


DECLARE @Queryresult NVARCHAR(MAX)

SET @Queryresult=''

--*********************************
--DEFRAGGING THE MOST 6 FRAGMENTED INDEXES EXCLUDING ONES WITH A FRAG UP TO 35 %
--TO TAILOR IT TO YOUR NEEDS CHANGE THE NUMBERS AFTER "SELECT TOP" AND AFTER "ss.avg_fragmentation_in_percent >"

--WITHIN THE SQL HERE BELOW
--*********************************

SELECT TOP 6
  @[email protected] + 'ALTER INDEX ' + QUOTENAME(i.name) + ' ON '
  + QUOTENAME('dbo') + '.'
  + QUOTENAME(OBJECT_NAME(i.OBJECT_ID)) + ' REBUILD;'
 FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ss
  INNER JOIN sys.indexes i ON i.OBJECT_ID = ss.OBJECT_ID AND i.index_id = ss.index_id
  INNER JOIN sys.objects o ON ss.object_id = o.object_id
WHERE ss.avg_fragmentation_in_percent > 35
AND ss.record_count > 0 
AND o.is_ms_shipped = 0 --Excludes any objects created as a part of SQL Server installation
AND ss.index_id > 0     --Excludes heap indexes
ORDER BY ss.avg_fragmentation_in_percent DESC

--*********************************
--Uncomment to see the generated command

--*********************************
--PRINT @QueryResult

EXEC sp_executesql @QueryResult



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework:Metoda Database.ExecuteSqlCommand

  2. Jak przekazać NULL lub puste ciągi do parametru wejściowego procedury składowanej z ADO i VB?

  3. Jak uzyskać liczbę wierszy z EXEC() w SPROC TSQL?

  4. Jak wywołać rozszerzoną procedurę z funkcji

  5. varchar(max) wszędzie?