MSSQL varie

Da Emigar.
Jump to navigation Jump to search


ricalcolo statistiche per database

use miudb
go
EXEC sp_updatestats;
go



Elenco files e spazio occupato

SELECT 
   d.name AS DatabaseName,
   f.name AS LogicalFileName,
   f.physical_name AS PhysicalFilePath,
   f.type_desc AS FileType,
   cast(f.size*8.0/1024.0 as float) mb,
   f.max_size,
   f.growth
FROM 
   sys.master_files AS f
INNER JOIN 
   sys.databases AS d ON f.database_id = d.database_id
   order by f.type_desc,f.size;


select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc


shrink datafiles e log

spostamento datafiles

sessioni bloccate

SELECT 
   r.session_id AS [Sessione Bloccata],
   r.blocking_session_id AS [ID Bloccante],
   t.text AS [Query Bloccante],
   w.wait_type AS [Tipo di Attesa],
   w.wait_duration_ms AS [Durata Attesa (ms)]
FROM sys.dm_exec_requests r
JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.blocking_session_id <> 0;


SELECT 
    s.session_id,
    s.login_name,
    s.host_name,
    s.program_name,
    s.status AS session_status,
    r.start_time,
    r.total_elapsed_time,
    r.wait_type,
    r.blocking_session_id,
    st.text AS query_text
FROM sys.dm_exec_sessions AS s
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)
ORDER BY s.session_id;


SELECT 
    r.session_id,
    r.status,
    r.wait_type,
    r.wait_time,
    r.blocking_session_id,
    r.cpu_time,
    r.total_elapsed_time / 1000 AS elapsed_seconds,
    t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.status = 'suspended'
ORDER BY r.total_elapsed_time DESC;