Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pekerjaan pemeliharaan dalam database kecil SQL

terlalu kabur untuk menjawab dengan tepat, itu sangat tergantung pada jenis aktivitas yang dilakukan pada DB, model pemulihan yang digunakan. Dalam mode pemulihan sederhana, yang hanya menggunakan file db tanpa log transaksi jika sering terjadi penghapusan dan penyisipan pada tabel, Anda biasanya perlu membangun kembali indeks pada basis reguler.

Saya gunakan untuk mengatur tugas harian (lari malam) yang memanggil sqlcmd untuk menjalankan SQL berikut:

--*********************************
--*** 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. Masalah kueri SQL yang sangat rumit

  2. Temukan, Prioritaskan, dan Selesaikan Masalah SQL Server Dalam Beberapa Menit

  3. Terapkan suka di semua kolom tanpa menentukan semua nama kolom?

  4. Tujuan SQL Server vs Tujuan OLE DB

  5. SQL dapatkah saya memiliki batasan unik bersyarat di atas meja?