<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>http://www.emigar.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop</id>
	<title>Emigar - Contributi dell&#039;utente [it]</title>
	<link rel="self" type="application/atom+xml" href="http://www.emigar.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop"/>
	<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php/Speciale:Contributi/WikiSysop"/>
	<updated>2026-07-08T21:13:56Z</updated>
	<subtitle>Contributi dell&amp;#039;utente</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Mysql_Tuning&amp;diff=6301</id>
		<title>Mysql Tuning</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Mysql_Tuning&amp;diff=6301"/>
		<updated>2026-07-07T21:08:56Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* retrocompatibilità sql */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==innodb (8.0+)==&lt;br /&gt;
Impostazioni per avere un database che usa solo InnoDB:&lt;br /&gt;
&lt;br /&gt;
parametri di startup linea di comando (controllare sulla documentazione cosa fanno e come si usano):&lt;br /&gt;
 --innodb-dedicated-server&lt;br /&gt;
 --memlock&lt;br /&gt;
&lt;br /&gt;
====Modificabili solo nel file di configurazione, serve poi riavvio istanza:====&lt;br /&gt;
&lt;br /&gt;
 set persist_only disabled_storage_engines=&amp;quot;MyISAM,BLACKHOLE,FEDERATED,ARCHIVE&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Con linux serve configurazione hugepages:&lt;br /&gt;
 set persist_only large_pages=ON;&lt;br /&gt;
&lt;br /&gt;
con 8.4 dovrebbe essere già default:&lt;br /&gt;
 set persist_only innodb_flush_method=O_DIRECT;&lt;br /&gt;
&lt;br /&gt;
 set persist_only global_connection_memory_limit=536870912;&lt;br /&gt;
 set persist_only global-connection-memory-tracking=TRUE;&lt;br /&gt;
&lt;br /&gt;
====Modificabili a caldo:====&lt;br /&gt;
 set persist innodb_buffer_pool_size=536870912;&lt;br /&gt;
 set persist innodb_redo_log_capacity = 8589934592;&lt;br /&gt;
&lt;br /&gt;
====uso memoria====&lt;br /&gt;
&lt;br /&gt;
 innodb_buffer_pool_size&lt;br /&gt;
 + key_buffer_size&lt;br /&gt;
 + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)&lt;br /&gt;
 + max_connections*2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====retrocompatibilità sql====&lt;br /&gt;
 select @@sql_mode;&lt;br /&gt;
&lt;br /&gt;
 SELECT @@GLOBAL.sql_mode;&lt;br /&gt;
 SELECT @@SESSION.sql_mode;&lt;br /&gt;
&lt;br /&gt;
 set persist sql_mode=&#039;STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION&#039;;&lt;br /&gt;
&lt;br /&gt;
====comportamenti strani====&lt;br /&gt;
se si configurano hugepages (ma forse anche se non), alcune operazioni fanno allocare memoria, che non viene rilasciata.&lt;br /&gt;
l&#039;operazione &amp;quot;add constrain foreign key&amp;quot; su tabella grande produce questo effetto&lt;br /&gt;
&lt;br /&gt;
forse usando libjemalloc2 il problema si risolve&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Mysql]]&lt;br /&gt;
[[Categoria:OpenSource]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Mysql_Tuning&amp;diff=6300</id>
		<title>Mysql Tuning</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Mysql_Tuning&amp;diff=6300"/>
		<updated>2026-07-07T21:06:09Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==innodb (8.0+)==&lt;br /&gt;
Impostazioni per avere un database che usa solo InnoDB:&lt;br /&gt;
&lt;br /&gt;
parametri di startup linea di comando (controllare sulla documentazione cosa fanno e come si usano):&lt;br /&gt;
 --innodb-dedicated-server&lt;br /&gt;
 --memlock&lt;br /&gt;
&lt;br /&gt;
====Modificabili solo nel file di configurazione, serve poi riavvio istanza:====&lt;br /&gt;
&lt;br /&gt;
 set persist_only disabled_storage_engines=&amp;quot;MyISAM,BLACKHOLE,FEDERATED,ARCHIVE&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Con linux serve configurazione hugepages:&lt;br /&gt;
 set persist_only large_pages=ON;&lt;br /&gt;
&lt;br /&gt;
con 8.4 dovrebbe essere già default:&lt;br /&gt;
 set persist_only innodb_flush_method=O_DIRECT;&lt;br /&gt;
&lt;br /&gt;
 set persist_only global_connection_memory_limit=536870912;&lt;br /&gt;
 set persist_only global-connection-memory-tracking=TRUE;&lt;br /&gt;
&lt;br /&gt;
====Modificabili a caldo:====&lt;br /&gt;
 set persist innodb_buffer_pool_size=536870912;&lt;br /&gt;
 set persist innodb_redo_log_capacity = 8589934592;&lt;br /&gt;
&lt;br /&gt;
====uso memoria====&lt;br /&gt;
&lt;br /&gt;
 innodb_buffer_pool_size&lt;br /&gt;
 + key_buffer_size&lt;br /&gt;
 + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)&lt;br /&gt;
 + max_connections*2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====retrocompatibilità sql====&lt;br /&gt;
 select @@sql_mode;&lt;br /&gt;
&lt;br /&gt;
 set persist sql_mode=&#039;STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====comportamenti strani====&lt;br /&gt;
se si configurano hugepages (ma forse anche se non), alcune operazioni fanno allocare memoria, che non viene rilasciata.&lt;br /&gt;
l&#039;operazione &amp;quot;add constrain foreign key&amp;quot; su tabella grande produce questo effetto&lt;br /&gt;
&lt;br /&gt;
forse usando libjemalloc2 il problema si risolve&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Mysql]]&lt;br /&gt;
[[Categoria:OpenSource]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Oracle_Query_Varie&amp;diff=6299</id>
		<title>Oracle Query Varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Oracle_Query_Varie&amp;diff=6299"/>
		<updated>2026-06-29T07:00:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Autoextend datafiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Tracciare operazioni nell&#039;alert log=&lt;br /&gt;
 EXEC SYS.DBMS_SYSTEM.kfnwrt(1, &#039;NOTA OPERATORE: Inizio manutenzione di Mario Rossi&#039;);&lt;br /&gt;
&lt;br /&gt;
=ACL=&lt;br /&gt;
==creazione acl==&lt;br /&gt;
&lt;br /&gt;
==interrogazioni acl==&lt;br /&gt;
 col host for a40&lt;br /&gt;
 col acl for a45&lt;br /&gt;
 col acl_owner for a10&lt;br /&gt;
 set pagesize 200 linesize 200&lt;br /&gt;
 SELECT * FROM DBA_NETWORK_ACLS order by host,lower_port;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 col principal for a25&lt;br /&gt;
 col privilege for a20&lt;br /&gt;
 col start_date for a4&lt;br /&gt;
 col end_date for a4&lt;br /&gt;
 SELECT * FROM DBA_NETWORK_ACL_PRIVILEGES order by principal,privilege;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select a.host,a.lower_port,p.acl,p.principal,p.privilege,p.is_grant&lt;br /&gt;
  from DBA_NETWORK_ACLS a inner join DBA_NETWORK_ACL_PRIVILEGES p on (a.aclid=p.aclid)&lt;br /&gt;
  order by p.acl,p.principal,a.host,a.lower_port;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT PRINCIPAL, HOST, lower_port, upper_port, acl, &#039;connect&#039; AS PRIVILEGE, &lt;br /&gt;
    DECODE(DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, PRINCIPAL, &#039;connect&#039;), 1,&#039;GRANTED&#039;, 0,&#039;DENIED&#039;, NULL) PRIVILEGE_STATUS&lt;br /&gt;
 FROM DBA_NETWORK_ACLS&lt;br /&gt;
    JOIN DBA_NETWORK_ACL_PRIVILEGES USING (ACL, ACLID)  &lt;br /&gt;
 UNION ALL&lt;br /&gt;
 SELECT PRINCIPAL, HOST, NULL lower_port, NULL upper_port, acl, &#039;resolve&#039; AS PRIVILEGE, &lt;br /&gt;
    DECODE(DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, PRINCIPAL, &#039;resolve&#039;), 1,&#039;GRANTED&#039;, 0,&#039;DENIED&#039;, NULL) PRIVILEGE_STATUS&lt;br /&gt;
 FROM DBA_NETWORK_ACLS&lt;br /&gt;
    JOIN DBA_NETWORK_ACL_PRIVILEGES USING (ACL, ACLID);&lt;br /&gt;
&lt;br /&gt;
=Job=&lt;br /&gt;
==Elenco Job==&lt;br /&gt;
&lt;br /&gt;
 col job_name for a40&lt;br /&gt;
 col owner for a15&lt;br /&gt;
 col last_start_date for a30&lt;br /&gt;
 col next_run_date for a30&lt;br /&gt;
 col start_date for a30&lt;br /&gt;
 alter session set nls_timestamp_tz_format=&#039;DD/MM/YYYY HH24:MI:SS.FF TZH&#039;;&lt;br /&gt;
 select job_name, owner, enabled, state, failure_count, LAST_START_DATE, NEXT_RUN_DATE, START_DATE from dba_scheduler_jobs order by last_start_date;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 col job_name for a50&lt;br /&gt;
 col owner for a20&lt;br /&gt;
 select job_name, owner, enabled from dba_scheduler_jobs;&lt;br /&gt;
&lt;br /&gt;
==abilitare e disabilitare job==&lt;br /&gt;
&lt;br /&gt;
 BEGIN&lt;br /&gt;
   DBMS_SCHEDULER.ENABLE(name =&amp;gt; &#039;nome_schema.nome_job&#039; );&lt;br /&gt;
 END;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
==Job Immediato==&lt;br /&gt;
&lt;br /&gt;
Per creare un indice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 begin&lt;br /&gt;
   dbms_scheduler.create_job(&lt;br /&gt;
     job_name    =&amp;gt; &#039;il_mio_job&#039;,&lt;br /&gt;
     job_type    =&amp;gt; &#039;PLSQL_BLOCK&#039;,&lt;br /&gt;
     job_action  =&amp;gt; &#039;begin execute immediate &#039;&#039;create index owner.index_name on owner.table(col01) online nologging&#039;&#039;; end;&#039;,&lt;br /&gt;
     enabled     =&amp;gt; TRUE,&lt;br /&gt;
     auto_drop   =&amp;gt; TRUE,&lt;br /&gt;
     comments    =&amp;gt; &#039;crea indice&#039;&lt;br /&gt;
   );&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per analizzare uno schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
begin&lt;br /&gt;
   dbms_scheduler.create_job(&lt;br /&gt;
     job_name    =&amp;gt; &#039;analyze_schema&#039;,&lt;br /&gt;
     job_type    =&amp;gt; &#039;PLSQL_BLOCK&#039;,&lt;br /&gt;
     job_action  =&amp;gt; &#039;begin dbms_stats.gather_schema_stats(ownname=&amp;gt;&#039;&#039;SCHEMA&#039;&#039;,cascade=&amp;gt;true); end;&#039;,&lt;br /&gt;
     enabled     =&amp;gt; TRUE,&lt;br /&gt;
     auto_drop   =&amp;gt; TRUE,&lt;br /&gt;
     comments    =&amp;gt; &#039;analyze&#039;&lt;br /&gt;
   );&lt;br /&gt;
 end;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Indici=&lt;br /&gt;
==Elenco Indici==&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set linesize 140&lt;br /&gt;
 col column_name for a30&lt;br /&gt;
 col pos for 99&lt;br /&gt;
 col table_name for a30&lt;br /&gt;
 col index_name for a35&lt;br /&gt;
 select table_owner || &#039;.&#039; || table_name table_name, index_owner || &#039;.&#039; || index_name index_name, column_name, column_position pos&lt;br /&gt;
  from dba_ind_columns&lt;br /&gt;
  where table_name=upper(&#039;&amp;amp;&amp;amp;1&#039;)&lt;br /&gt;
  order by 1,2,4;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set pagesize 200&lt;br /&gt;
set linesize 140&lt;br /&gt;
set autotrace off&lt;br /&gt;
col column_name for a30&lt;br /&gt;
col pos for 99&lt;br /&gt;
col table_name for a38&lt;br /&gt;
col index_name for a43&lt;br /&gt;
col tbs for a20&lt;br /&gt;
select c.table_owner || &#039;.&#039; || c.table_name table_name, c.index_owner || &#039;.&#039; || c.index_name || &#039; &#039; || i.generated index_name,&lt;br /&gt;
       substr(i.uniqueness,1,1) U, c.column_name, c.column_position pos, i.tablespace_name tbs&lt;br /&gt;
from dba_ind_columns c&lt;br /&gt;
 inner join dba_indexes i on &lt;br /&gt;
 (c.table_owner=i.table_owner and c.table_name=i.table_name and&lt;br /&gt;
  c.index_owner=i.owner and c.index_name=i.index_name)&lt;br /&gt;
where c.table_name=upper(&#039;&amp;amp;&amp;amp;1&#039;)&lt;br /&gt;
order by 1,2,4;&lt;br /&gt;
&lt;br /&gt;
col owner for a40&lt;br /&gt;
col tablespace_name for a40&lt;br /&gt;
select owner,tablespace_name,bytes/(1024*1024) mb from dba_segments where segment_name=upper(&#039;&amp;amp;&amp;amp;1&#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Indici con proprietario diverso==&lt;br /&gt;
 select owner,index_name,table_owner,table_name from dba_indexes where table_owner!=owner;&lt;br /&gt;
&lt;br /&gt;
=Processi e sessioni=&lt;br /&gt;
==verifica valori limite==&lt;br /&gt;
 col resource_name for a40&lt;br /&gt;
 select resource_name,current_utilization,max_utilization,limit_value from v$resource_limit;&lt;br /&gt;
&lt;br /&gt;
==Elenco processi di background==&lt;br /&gt;
&lt;br /&gt;
 select s.sid,  s.process, s.program, p.name from v$session s join v$bgprocess p using (paddr) ;&lt;br /&gt;
&lt;br /&gt;
==sessioni==&lt;br /&gt;
&lt;br /&gt;
===Sessioni Attive===&lt;br /&gt;
&lt;br /&gt;
 set linesize 220&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 col machine for a35&lt;br /&gt;
 col username for a20&lt;br /&gt;
 col program for a20&lt;br /&gt;
 col sid_ser for a15&lt;br /&gt;
 col spid for a10&lt;br /&gt;
 alter session set nls_date_format=&#039;DD-MM-YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 select s.sid ||&#039;,&#039;||s.serial# as sid_ser,p.spid,&lt;br /&gt;
  s.username,s.machine,s.sql_id,s.prev_sql_id,&lt;br /&gt;
  s.logon_time,(sysdate-s.sql_exec_start)*86400 sec_exec,substr(s.program,1,20) as program,s.seconds_in_wait as siw&lt;br /&gt;
  from v$session s&lt;br /&gt;
  left outer join v$process p on (p.addr=s.paddr)&lt;br /&gt;
  where s.type=&#039;USER&#039; and s.status=&#039;ACTIVE&#039;&lt;br /&gt;
  order by s.logon_time;&lt;br /&gt;
&lt;br /&gt;
====versione RAC====&lt;br /&gt;
 set linesize 220&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 col machine for a35&lt;br /&gt;
 col username for a20&lt;br /&gt;
 col program for a20&lt;br /&gt;
 col sid_ser for a15&lt;br /&gt;
 col spid for a10&lt;br /&gt;
 alter session set nls_date_format=&#039;DD-MM-YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 select s.sid ||&#039;,&#039;||s.serial#||&#039;@&#039;||s.inst_id as sid_ser,p.spid,&lt;br /&gt;
  s.username,s.machine,s.sql_id,s.prev_sql_id,&lt;br /&gt;
  s.logon_time,(sysdate-s.sql_exec_start)*86400 sec_exec,substr(s.program,1,20) as program,s.seconds_in_wait as siw&lt;br /&gt;
  from gv$session s&lt;br /&gt;
  left outer join gv$process p on (p.addr=s.paddr and s.inst_id=p.inst_id)&lt;br /&gt;
  where s.type=&#039;USER&#039; and s.status=&#039;ACTIVE&#039;&lt;br /&gt;
  order by s.logon_time;&lt;br /&gt;
&lt;br /&gt;
====con eventi====&lt;br /&gt;
&lt;br /&gt;
 set linesize 230&lt;br /&gt;
 set pagesize 300&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 col machine for a21&lt;br /&gt;
 col username for a20&lt;br /&gt;
 col program for a20&lt;br /&gt;
 col sid_ser for a15&lt;br /&gt;
 col spid for a10&lt;br /&gt;
 col sql_id for a14&lt;br /&gt;
 col prev_sql_id for a14&lt;br /&gt;
 col siw for 9999999&lt;br /&gt;
 col status for a15&lt;br /&gt;
 col event for a32&lt;br /&gt;
 alter session set nls_date_format=&#039;DD-MM-YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 select s.sid ||&#039;,&#039;||s.serial# as sid_ser,p.spid,s.status,&lt;br /&gt;
  s.username,substr(s.machine,1,20) as machine,s.sql_id,s.prev_sql_id,&lt;br /&gt;
  s.logon_time,(sysdate-s.sql_exec_start)*86400 sec_exec,substr(s.program,1,20) as program,s.seconds_in_wait as siw,s.event&lt;br /&gt;
  from v$session s&lt;br /&gt;
  left outer join v$process p on (p.addr=s.paddr)&lt;br /&gt;
  where s.type=&#039;USER&#039;&lt;br /&gt;
  --and s.status=&#039;ACTIVE&#039;&lt;br /&gt;
  -- and s.username not in (&#039;SYS&#039;,&#039;DBSNMP&#039;)&lt;br /&gt;
  order by s.status desc,s.logon_time;&lt;br /&gt;
&lt;br /&gt;
===Sessioni ordinate per tipo===&lt;br /&gt;
&lt;br /&gt;
 set linesize 200&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 col machine for a21&lt;br /&gt;
 col username for a20&lt;br /&gt;
 col program for a20&lt;br /&gt;
 col sid_ser for a15&lt;br /&gt;
 col spid for a10&lt;br /&gt;
 alter session set nls_date_format=&#039;DD-MM-YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 select s.sid ||&#039;,&#039;||s.serial# as sid_ser,p.spid,s.status,&lt;br /&gt;
  s.username,substr(s.machine,1,20) as machine,s.sql_id,s.prev_sql_id,&lt;br /&gt;
  s.logon_time,substr(s.program,1,20) as program,s.seconds_in_wait as siw&lt;br /&gt;
  from v$session s&lt;br /&gt;
  left outer join v$process p on (p.addr=s.paddr)&lt;br /&gt;
  where s.type=&#039;USER&#039;&lt;br /&gt;
 -- and s.username not in (&#039;SYS&#039;,&#039;DBSNMP&#039;)&lt;br /&gt;
  order by s.status,s.logon_time;&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
 alter session set nls_date_format=&#039;DD-MM-YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 select s.sid ||&#039;,&#039;||s.serial# as sid_ser,p.spid,&lt;br /&gt;
 s.username,substr(s.machine,1,20) as machine,s.sql_id,s.prev_sql_id,&lt;br /&gt;
 s.logon_time,substr(s.program,1,20) as program,s.seconds_in_wait as siw&lt;br /&gt;
 from v$session s&lt;br /&gt;
 left outer join v$process p on (p.addr=s.paddr)&lt;br /&gt;
 where s.type=&#039;USER&#039;&lt;br /&gt;
 and s.status=&#039;ACTIVE&#039;&lt;br /&gt;
 and s.username not in (&#039;SYS&#039;,&#039;DBSNMP&#039;)&lt;br /&gt;
 order by s.logon_time;&lt;br /&gt;
&lt;br /&gt;
==long operations==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET LINESize 200&lt;br /&gt;
set pagesize 200&lt;br /&gt;
set autotrace off&lt;br /&gt;
COL sid FORMAT 9999&lt;br /&gt;
COL serial# FORMAT 9999999&lt;br /&gt;
col sid_ser for a12&lt;br /&gt;
COL username FORMAT A30&lt;br /&gt;
COL machine FORMAT A50&lt;br /&gt;
COL prog% FORMAT 999.00&lt;br /&gt;
COL elapsed FORMAT A10&lt;br /&gt;
COL remaining FORMAT A10&lt;br /&gt;
col message for a80&lt;br /&gt;
spool longops2.log&lt;br /&gt;
SELECT s.sid || &#039;,&#039; || s.serial# sid_ser,&lt;br /&gt;
s.username,&lt;br /&gt;
-- s.machine,&lt;br /&gt;
ROUND(sl.elapsed_seconds/60) || &#039;:&#039; || MOD(sl.elapsed_seconds,60) elapsed,&lt;br /&gt;
ROUND(sl.time_remaining/60) || &#039;:&#039; || MOD(sl.time_remaining,60) remaining,&lt;br /&gt;
ROUND(sl.sofar/sl.totalwork*100, 2) &amp;quot;prog%&amp;quot;,&lt;br /&gt;
s.sql_id,&lt;br /&gt;
replace(sl.message,&#039;Blocks done&#039;,&#039;&#039;) as message&lt;br /&gt;
FROM v$session s&lt;br /&gt;
inner join v$session_longops sl on ( s.sid = sl.sid AND s.serial# = sl.serial# AND sl.time_remaining &amp;gt; 0 )&lt;br /&gt;
order by s.sql_id;&lt;br /&gt;
spool off&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
SET LINESize 200&lt;br /&gt;
set pagesize 200&lt;br /&gt;
set autotrace off&lt;br /&gt;
COL sid FORMAT 9999&lt;br /&gt;
COL serial# FORMAT 9999999&lt;br /&gt;
col sid_ser for a12&lt;br /&gt;
COL username FORMAT A30&lt;br /&gt;
COL machine FORMAT A50&lt;br /&gt;
COL prog% FORMAT 999.00&lt;br /&gt;
COL elapsed FORMAT A10&lt;br /&gt;
COL remaining FORMAT A10&lt;br /&gt;
col message for a80&lt;br /&gt;
spool longops2.log&lt;br /&gt;
SELECT s.sid || &#039;,&#039; || s.serial# sid_ser,&lt;br /&gt;
s.username,&lt;br /&gt;
-- s.machine,&lt;br /&gt;
ROUND(sl.elapsed_seconds/60) || &#039;:&#039; || MOD(sl.elapsed_seconds,60) elapsed,&lt;br /&gt;
ROUND(sl.time_remaining/60) || &#039;:&#039; || MOD(sl.time_remaining,60) remaining,&lt;br /&gt;
ROUND(sl.sofar/sl.totalwork*100, 2) &amp;quot;prog%&amp;quot;,&lt;br /&gt;
s.sql_id,&lt;br /&gt;
replace(sl.message,&#039;Blocks done&#039;,&#039;&#039;) as message&lt;br /&gt;
FROM v$session s&lt;br /&gt;
inner join v$session_longops sl on ( s.sid = sl.sid AND s.serial# = sl.serial# AND sl.time_remaining &amp;gt; 0 )&lt;br /&gt;
order by s.sql_id;&lt;br /&gt;
spool off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set linesize 200&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 col message for a90&lt;br /&gt;
 col username for a30&lt;br /&gt;
 alter session set nls_date_format=&#039;DD/MM/YYYY HH24:MI:SS&#039;;&lt;br /&gt;
 spool longops.txt&lt;br /&gt;
 select username,sql_id,start_time,message from&lt;br /&gt;
 (&lt;br /&gt;
  select&lt;br /&gt;
     username,&lt;br /&gt;
     sql_id,&lt;br /&gt;
     opname,&lt;br /&gt;
     start_time,&lt;br /&gt;
     target,&lt;br /&gt;
     sofar,&lt;br /&gt;
     totalwork,&lt;br /&gt;
     units,&lt;br /&gt;
     elapsed_seconds,&lt;br /&gt;
     message&lt;br /&gt;
   from&lt;br /&gt;
        v$session_longops&lt;br /&gt;
     where time_remaining!=0&lt;br /&gt;
  order by start_time desc&lt;br /&gt;
 )&lt;br /&gt;
 where rownum &amp;lt;=16;&lt;br /&gt;
 spool off&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Rollback==&lt;br /&gt;
 select state,UNDOBLOCKSDONE,UNDOBLOCKSTOTAL, UNDOBLOCKSDONE/UNDOBLOCKSTOTAL*100 from gv$fast_start_transactions;&lt;br /&gt;
&lt;br /&gt;
=Piano della query per sql_id=&lt;br /&gt;
&lt;br /&gt;
 --&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set linesize 200&lt;br /&gt;
 select DBMS_LOB.substr(sql_fulltext, 3000) from v$sql where sql_id = &#039;&amp;amp;1&#039;;&lt;br /&gt;
 -- select plan_table_output from table(dbms_xplan.display_cursor(&#039;&amp;amp;1&#039;,null,&#039;basic&#039;));&lt;br /&gt;
 -- select plan_table_output from table(dbms_xplan.display_cursor(&#039;&amp;amp;1&#039;));&lt;br /&gt;
 select * from table(DBMS_XPLAN.DISPLAY_CURSOR(sql_id=&amp;gt;&#039;&amp;amp;1&#039;,cursor_child_no=&amp;gt;&amp;amp;2));&lt;br /&gt;
&lt;br /&gt;
=Storico query che hanno usato più TEMP=&lt;br /&gt;
Richiede AWR.&lt;br /&gt;
&lt;br /&gt;
 select sql_id,max(TEMP_SPACE_ALLOCATED)/(1024*1024*1024) gig&lt;br /&gt;
   from DBA_HIST_ACTIVE_SESS_HISTORY&lt;br /&gt;
  where sample_time &amp;gt; sysdate-2&lt;br /&gt;
    and TEMP_SPACE_ALLOCATED &amp;gt; (500*1024*1024)&lt;br /&gt;
 group by sql_id order by 2;&lt;br /&gt;
&lt;br /&gt;
Versione per statspack:&lt;br /&gt;
&lt;br /&gt;
=Segment Advisor=&lt;br /&gt;
&lt;br /&gt;
 --&lt;br /&gt;
 set pagesize 200&lt;br /&gt;
 set linesize 200&lt;br /&gt;
 set autotrace off&lt;br /&gt;
 -- select tablespace_name, segment_name, segment_type, partition_name,&lt;br /&gt;
 -- recommendations, c1 from&lt;br /&gt;
 -- table(dbms_space.asa_recommendations(&#039;FALSE&#039;, &#039;FALSE&#039;, &#039;FALSE&#039;));&lt;br /&gt;
 spool segadv.txt&lt;br /&gt;
 select &#039;/*&#039; || recommendations || &#039; */ &#039; || c1 from&lt;br /&gt;
  table(dbms_space.asa_recommendations(&#039;FALSE&#039;, &#039;FALSE&#039;, &#039;FALSE&#039;)) where c1 is not null order by segment_type,reclaimable_space;&lt;br /&gt;
 spool off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
&lt;br /&gt;
 -- tabelle&lt;br /&gt;
 set pagesize 0 linesize 200 trim on trims on feedback off echo off timing off&lt;br /&gt;
 select &#039;alter table &#039; || owner || &#039;.&#039; || table_name || &#039; logging;&#039; from dba_tables where owner!=&#039;SYS&#039; and logging=&#039;NO&#039;;&lt;br /&gt;
 select &#039;alter index &#039; || owner || &#039;.&#039; || index_name || &#039; logging;&#039; from dba_indexes where owner!=&#039;SYS&#039; and logging=&#039;NO&#039;;&lt;br /&gt;
 select &#039;alter table &#039; || owner || &#039;.&#039; || table_name || &#039; modify lob (&#039; || column_name || &#039;) (cache logging);&#039; from dba_lobs where owner!=&#039;SYS&#039; and logging=&#039;NO&#039;;&lt;br /&gt;
&lt;br /&gt;
 -- tabelle partizionate&lt;br /&gt;
 select &#039;alter table &#039; || owner || &#039;.&#039; || table_name || &#039; modify default attributes logging; &#039; from dba_part_tables where owner!=&#039;SYS&#039; and def_logging=&#039;NO&#039;;&lt;br /&gt;
 select &#039;alter index &#039; || owner || &#039;.&#039; || index_name || &#039; modify default attributes logging; &#039; from dba_part_indexes where owner!=&#039;SYS&#039; and def_logging=&#039;NO&#039;;&lt;br /&gt;
 select &#039;alter table &#039; || table_owner || &#039;.&#039; || table_name || &#039; modify default attributes lob (&#039; || column_name || &#039;) (cache logging);&#039; from dba_part_lobs where table_owner!=&#039;SYS&#039; and def_logging=&#039;NO&#039;;&lt;br /&gt;
&lt;br /&gt;
 -- partizioni&lt;br /&gt;
 select &#039;alter table &#039; || table_owner || &#039;.&#039; || table_name || &#039; modify partition &#039; || partition_name || &#039; logging;&#039; from dba_tab_partitions where table_owner!=&#039;SYS&#039; and logging=&#039;NO&#039;;&lt;br /&gt;
 select &#039;alter index &#039; || index_owner || &#039;.&#039; || index_name || &#039; modify partition &#039; || partition_name || &#039; logging;&#039; from dba_ind_partitions where index_owner!=&#039;SYS&#039; and logging=&#039;NO&#039; and status=&#039;USABLE&#039;;&lt;br /&gt;
  select &#039;alter table &#039; || table_owner || &#039;.&#039; || table_name || &#039; modify partition &#039; || partition_name || &#039; lob (&#039; || column_name || &#039;) (cache logging);&#039; from dba_lob_partitions where table_owner!=&#039;SYS&#039; and logging=&#039;NO&#039;;&lt;br /&gt;
&lt;br /&gt;
=Controllo Allocazione Spazio=&lt;br /&gt;
Questa query controlla lo spazio allocato, e lo confronta con lo spazio di massima crescita dei datafiles.&lt;br /&gt;
Utile per evidenziare casi in cui è necessario aggiungere altri datafiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
set pagesize 200&lt;br /&gt;
set linesize 200&lt;br /&gt;
&lt;br /&gt;
with &lt;br /&gt;
 segs as (select tablespace_name,sum(bytes)/(1024*1024) mbs, count(*) nsegs from dba_segments group by tablespace_name),&lt;br /&gt;
 files as (select tablespace_name,count(file_name) nfiles,sum(case when maxbytes=0 then bytes else maxbytes end)/(1024*1024) max,sum(bytes)/(1024*1024) mba&lt;br /&gt;
             from dba_data_files group by tablespace_name)&lt;br /&gt;
select t.tablespace_name,&lt;br /&gt;
	t.block_size,&lt;br /&gt;
	f.nfiles,&lt;br /&gt;
        s.nsegs,&lt;br /&gt;
	round(f.max) max,&lt;br /&gt;
	round(s.mbs) mbs,&lt;br /&gt;
	round(f.max-s.mbs) sdiff,&lt;br /&gt;
	round(((f.max-s.mbs)/f.max)*100) pcts,&lt;br /&gt;
	round(f.mba) mba,&lt;br /&gt;
	round(f.mba-s.mbs) shrinkable,&lt;br /&gt;
	round(((f.mba-s.mbs)/f.mba)*100) pctsrnk&lt;br /&gt;
from dba_tablespaces t &lt;br /&gt;
inner join files f on (t.tablespace_name=f.tablespace_name)&lt;br /&gt;
left outer join segs s on (t.tablespace_name=s.tablespace_name)&lt;br /&gt;
order by 10;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
 tf as (select tablespace_name,count(*) nf,round(sum(bytes)/(1024*1024)) mba,round(sum(case when maxbytes=0 then bytes else maxbytes end)/(1024*1024)) max from dba_temp_files group by tablespace_name)&lt;br /&gt;
select	g.group_name,&lt;br /&gt;
	t.tablespace_name,&lt;br /&gt;
        f.nf nfiles,&lt;br /&gt;
	f.mba,&lt;br /&gt;
	f.max,&lt;br /&gt;
	round(s.allocated_space/(1024*1024)) mballoc,&lt;br /&gt;
	round(s.free_space/(1024*1024)) mbfree&lt;br /&gt;
   from tf f&lt;br /&gt;
 left outer join dba_tablespace_groups g on (g.tablespace_name=f.tablespace_name)&lt;br /&gt;
 left outer join dba_temp_free_space s on (s.tablespace_name=f.tablespace_name)&lt;br /&gt;
 right outer join dba_tablespaces t on (t.tablespace_name=f.tablespace_name)&lt;br /&gt;
 where t.contents=&#039;TEMPORARY&#039;&lt;br /&gt;
 order by 1,2,3;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Per 10.2===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with&lt;br /&gt;
 tf as (select tablespace_name,count(*) nf,round(sum(bytes)/(1024*1024)) mba,round(sum(case when maxbytes=0 then bytes else maxbytes end)/(1024*1024)) max from dba_temp_files group by tablespace_name),&lt;br /&gt;
 tsh as (select tablespace_name,round(sum(bytes_used)/(1024*1024)) used,round(sum(bytes_free)/(1024*1024)) free from v$temp_space_header group by tablespace_name)&lt;br /&gt;
select&lt;br /&gt;
        t.tablespace_name,&lt;br /&gt;
        f.nf nfiles,&lt;br /&gt;
        f.mba,&lt;br /&gt;
        f.max,&lt;br /&gt;
        tsh.used mballoc,&lt;br /&gt;
        tsh.free mbfree&lt;br /&gt;
   from tf f&lt;br /&gt;
 right outer join dba_tablespaces t on (t.tablespace_name=f.tablespace_name)&lt;br /&gt;
 right outer join tsh on (tsh.tablespace_name=f.tablespace_name)&lt;br /&gt;
 where t.contents=&#039;TEMPORARY&#039;&lt;br /&gt;
 order by 1,2,3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sort Segments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT tf.tablespace_name,&lt;br /&gt;
       ROUND(tf.total_space_mb) AS total_mb,&lt;br /&gt;
       ROUND(NVL(tu.used_space_mb, 0)) AS used_mb,&lt;br /&gt;
       ROUND(tf.total_space_mb - NVL(tu.used_space_mb, 0)) AS free_mb&lt;br /&gt;
FROM (SELECT tablespace_name, SUM(bytes)/(1024*1024) AS total_space_mb &lt;br /&gt;
      FROM dba_temp_files GROUP BY tablespace_name) tf&lt;br /&gt;
LEFT JOIN (SELECT tablespace_name, SUM(used_blocks)*(SELECT value FROM v$parameter WHERE name=&#039;db_block_size&#039;)/(1024*1024) AS used_space_mb&lt;br /&gt;
           FROM v$sort_segment GROUP BY tablespace_name) tu&lt;br /&gt;
ON tf.tablespace_name = tu.tablespace_name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Versioni vecchie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
set pagesize 200&lt;br /&gt;
set linesize 200&lt;br /&gt;
&lt;br /&gt;
with &lt;br /&gt;
 segs as (select tablespace_name,round(sum(bytes)/(1024*1024)) mbs from dba_segments group by tablespace_name),&lt;br /&gt;
 files as (select tablespace_name,count(file_name) nfiles,round(sum(maxbytes)/(1024*1024)) max,round(sum(bytes)/(1024*1024)) mba from dba_data_files group by tablespace_name)&lt;br /&gt;
select	t.tablespace_name,&lt;br /&gt;
	t.block_size,&lt;br /&gt;
	f.nfiles,&lt;br /&gt;
	f.max,&lt;br /&gt;
	f.mba,&lt;br /&gt;
	s.mbs,&lt;br /&gt;
	f.mba-s.mbs diff,&lt;br /&gt;
	f.max-f.mba mdiff,&lt;br /&gt;
	round(((f.max-f.mba)/f.max)*100) pcta,&lt;br /&gt;
	round(((f.mba-s.mbs)/f.mba)*100) pcts&lt;br /&gt;
from dba_tablespaces t &lt;br /&gt;
inner join files f on (t.tablespace_name=f.tablespace_name)&lt;br /&gt;
left outer join segs s on (t.tablespace_name=s.tablespace_name)&lt;br /&gt;
order by 7;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
 tf as (select tablespace_name,round(sum(bytes)/(1024*1024)) mba,round(sum(maxbytes)/(1024*1024)) max from dba_temp_files group by tablespace_name)&lt;br /&gt;
select	g.group_name,&lt;br /&gt;
	t.tablespace_name,&lt;br /&gt;
	f.mba,&lt;br /&gt;
	f.max,&lt;br /&gt;
	round(s.allocated_space/(1024*1024)) mballoc,&lt;br /&gt;
	round(s.free_space/(1024*1024)) mbfree&lt;br /&gt;
   from tf f&lt;br /&gt;
 left outer join dba_tablespace_groups g on (g.tablespace_name=f.tablespace_name)&lt;br /&gt;
 left outer join dba_temp_free_space s on (s.tablespace_name=f.tablespace_name)&lt;br /&gt;
 right outer join dba_tablespaces t on (t.tablespace_name=f.tablespace_name)&lt;br /&gt;
 where t.contents=&#039;TEMPORARY&#039;&lt;br /&gt;
 order by 1,2,3;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select TBS.MB_MAX,&lt;br /&gt;
       TBS.MB_TBS,&lt;br /&gt;
       SEG.MB_SEG,&lt;br /&gt;
       TBS.MB_MAX-SEG.MB_SEG MB_FREE,&lt;br /&gt;
       TBS.TABLESPACE_NAME&lt;br /&gt;
  from (select round(sum(f.maxbytes)/(1024*1024)) MB_MAX,&lt;br /&gt;
               round(sum(f.user_bytes)/(1024*1024)) MB_TBS,&lt;br /&gt;
               f.tablespace_name TABLESPACE_NAME&lt;br /&gt;
          from dba_data_files f&lt;br /&gt;
         group by f.tablespace_name) TBS,&lt;br /&gt;
       (select round(sum(s.bytes)/(1024*1024)) MB_SEG,&lt;br /&gt;
               s.tablespace_name TABLESPACE_NAME&lt;br /&gt;
          from dba_segments s&lt;br /&gt;
         group by s.tablespace_name) SEG&lt;br /&gt;
  where SEG.tablespace_name=TBS.tablespace_name;&lt;br /&gt;
&lt;br /&gt;
 select TBS.MB_MAX,&lt;br /&gt;
      TBS.MB_TBS,&lt;br /&gt;
      SEG.MB_SEG,&lt;br /&gt;
      TBS.MB_MAX-SEG.MB_SEG MB_FREE,&lt;br /&gt;
      100-(100*(TBS.MB_MAX-SEG.MB_SEG)/nullif(TBS.MB_MAX,0)) USED,&lt;br /&gt;
      100*(TBS.MB_MAX-SEG.MB_SEG)/nullif(TBS.MB_MAX,0) FREE,&lt;br /&gt;
      TBS.TABLESPACE_NAME&lt;br /&gt;
 from (select round(sum(f.maxbytes)/(1024*1024)) MB_MAX,&lt;br /&gt;
              round(sum(f.user_bytes)/(1024*1024)) MB_TBS,&lt;br /&gt;
              f.tablespace_name TABLESPACE_NAME&lt;br /&gt;
         from dba_data_files f&lt;br /&gt;
        group by f.tablespace_name) TBS,&lt;br /&gt;
      (select round(sum(s.bytes)/(1024*1024)) MB_SEG,&lt;br /&gt;
              s.tablespace_name TABLESPACE_NAME&lt;br /&gt;
         from dba_segments s&lt;br /&gt;
        group by s.tablespace_name) SEG&lt;br /&gt;
 where SEG.tablespace_name=TBS.tablespace_name&lt;br /&gt;
  order by 5;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Autoextend datafiles==&lt;br /&gt;
&lt;br /&gt;
Verificare se autoextend:&lt;br /&gt;
 select TABLESPACE_NAME,FILE_ID,AUTOEXTENSIBLE,MAXBYTES/(1024*1024) MAX_MB,INCREMENT_BY from dba_data_files;&lt;br /&gt;
&lt;br /&gt;
Autoextend datafiles:&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
  for c1 in (select file_id from dba_data_files)&lt;br /&gt;
  loop&lt;br /&gt;
    execute immediate &#039;alter database datafile &#039; || c1.file_id || &#039; autoextend on next 128M maxsize unlimited&#039;;&lt;br /&gt;
  end loop;&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
Su un solo tablespace&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
  for c1 in (select file_id from dba_data_files where tablespace_name=&#039;&amp;amp;1&#039;)&lt;br /&gt;
  loop&lt;br /&gt;
    execute immediate &#039;alter database datafile &#039; || c1.file_id || &#039; autoextend on next 128M maxsize unlimited&#039;;&lt;br /&gt;
  end loop;&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
Mette in autoextend i files non in autoextend, ma con maxsize uguale alla grandezza reale&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
  for c1 in (select file_id, bytes from dba_data_files where autoextensible=&#039;NO&#039;)&lt;br /&gt;
  loop&lt;br /&gt;
    execute immediate &#039;alter database datafile &#039; || c1.file_id || &#039; autoextend on next 128M maxsize &#039; || c1.bytes;&lt;br /&gt;
  end loop;&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Autoextend tempfiles:&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
  for c1 in (select file_id from dba_temp_files)&lt;br /&gt;
  loop&lt;br /&gt;
    execute immediate &#039;alter database tempfile &#039; || c1.file_id || &#039; autoextend on next 128M maxsize unlimited&#039;;&lt;br /&gt;
  end loop;&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
==Shrink datafiles==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set linesize 1000 pagesize 0 feedback off trimspool on&lt;br /&gt;
with&lt;br /&gt;
 hwm as (&lt;br /&gt;
  -- get highest block id from each datafiles ( from x$ktfbue as we don&#039;t need all joins from dba_extents )&lt;br /&gt;
  select /*+ materialize */ ktfbuesegtsn ts#,ktfbuefno relative_fno,max(ktfbuebno+ktfbueblks-1) hwm_blocks&lt;br /&gt;
  from sys.x$ktfbue group by ktfbuefno,ktfbuesegtsn&lt;br /&gt;
 ),&lt;br /&gt;
 hwmts as (&lt;br /&gt;
  -- join ts# with tablespace_name&lt;br /&gt;
  select name tablespace_name,relative_fno,hwm_blocks&lt;br /&gt;
  from hwm join v$tablespace using(ts#)&lt;br /&gt;
 ),&lt;br /&gt;
 hwmdf as (&lt;br /&gt;
  -- join with datafiles, put 5M minimum for datafiles with no extents&lt;br /&gt;
  select file_name,nvl(hwm_blocks*(bytes/blocks),5*1024*1024)&lt;br /&gt;
hwm_bytes,bytes,autoextensible,maxbytes&lt;br /&gt;
  from hwmts right join dba_data_files using(tablespace_name,relative_fno)&lt;br /&gt;
 )&lt;br /&gt;
select&lt;br /&gt;
 case when autoextensible=&#039;YES&#039; and maxbytes&amp;gt;=bytes&lt;br /&gt;
 then -- we generate resize statements only if autoextensible can grow back to current size&lt;br /&gt;
  &#039;/* reclaim &#039;||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)&lt;br /&gt;
   ||&#039;M from &#039;||to_char(ceil(bytes/1024/1024),999999)||&#039;M */ &#039;&lt;br /&gt;
   ||&#039;alter database datafile &#039;&#039;&#039;||file_name||&#039;&#039;&#039; resize &#039;||ceil(hwm_bytes/1024/1024)||&#039;M;&#039;&lt;br /&gt;
 else -- generate only a comment when autoextensible is off&lt;br /&gt;
  &#039;/* reclaim &#039;||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)&lt;br /&gt;
   ||&#039;M from &#039;||to_char(ceil(bytes/1024/1024),999999)&lt;br /&gt;
   ||&#039;M after setting autoextensible maxsize higher than current size for file &#039;&lt;br /&gt;
   || file_name||&#039; */&#039;&lt;br /&gt;
 end SQL&lt;br /&gt;
from hwmdf&lt;br /&gt;
where&lt;br /&gt;
 bytes-hwm_bytes&amp;gt;1024*1024 -- resize only if at least 1MB can be reclaimed&lt;br /&gt;
order by bytes-hwm_bytes desc&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schedula pulizia recycle bin==&lt;br /&gt;
Cancella dal recyclebin tutti gli oggetti cancellati da almeno 3 giorni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SCHEDULER.create_job (&lt;br /&gt;
    job_name        =&amp;gt; &#039;purge_recyclebin_3days&#039;,&lt;br /&gt;
    job_type        =&amp;gt; &#039;PLSQL_BLOCK&#039;,&lt;br /&gt;
    job_action      =&amp;gt; &#039;&lt;br /&gt;
begin&lt;br /&gt;
  for c1 in (select owner,type,OBJECT_NAME from dba_recyclebin where to_date(DROPTIME,&#039;&#039;YYYY-MM-DD:HH24:MI:SS&#039;&#039;) &amp;lt; sysdate-3 and CAN_PURGE=&#039;&#039;YES&#039;&#039;)&lt;br /&gt;
   loop&lt;br /&gt;
     begin&lt;br /&gt;
       execute immediate &#039;&#039;purge &#039;&#039; || c1.type || &#039;&#039; &#039;&#039; || c1.owner || &#039;&#039;.&amp;quot;&#039;&#039; || c1.object_name || &#039;&#039;&amp;quot;&#039;&#039;;&lt;br /&gt;
       exception&lt;br /&gt;
        when others then&lt;br /&gt;
          null;&lt;br /&gt;
     end;&lt;br /&gt;
   end loop;&lt;br /&gt;
end;&lt;br /&gt;
&#039;,&lt;br /&gt;
    start_date      =&amp;gt; SYSTIMESTAMP,&lt;br /&gt;
    repeat_interval =&amp;gt; &#039;freq=daily; byhour=0; byminute=0; bysecond=0;&#039;,&lt;br /&gt;
    enabled         =&amp;gt; TRUE);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ricerca files orfani ASM=&lt;br /&gt;
&lt;br /&gt;
http://anjo.pt/wp/keyword-oracle/2013/02/26/find-orphan-asm-files/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEFINE ASMGROUP=&amp;quot;DGDATA&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
set linesize 200&lt;br /&gt;
set pagesize 50000&lt;br /&gt;
col reference_index noprint&lt;br /&gt;
col type format a15&lt;br /&gt;
col files format a80&lt;br /&gt;
&lt;br /&gt;
WITH v_asmgroup AS (SELECT group_number FROM v$asm_diskgroup WHERE name=&#039;&amp;amp;ASMGROUP&#039;),&lt;br /&gt;
     v_parentindex AS (SELECT parent_index &lt;br /&gt;
                    FROM v$asm_alias &lt;br /&gt;
              WHERE group_number = (SELECT group_number FROM v_asmgroup) &lt;br /&gt;
                AND alias_index=0),&lt;br /&gt;
  v_asmfiles AS (SELECT file_number, type &lt;br /&gt;
              FROM v$asm_file &lt;br /&gt;
           WHERE group_number = (SELECT group_number FROM v_asmgroup)),&lt;br /&gt;
 v_dbname AS (SELECT &#039;/&#039;||upper(db_unique_name)||&#039;/&#039; dbname from v$database)&lt;br /&gt;
SELECT &#039;rm &#039;|| files files FROM -- this line show the delete command&lt;br /&gt;
(&lt;br /&gt;
  SELECT &#039;+&amp;amp;ASMGROUP&#039;||files files, type &lt;br /&gt;
  FROM (SELECT upper(sys_connect_by_path(aa.name,&#039;/&#039;)) files, aa.reference_index, b.type&lt;br /&gt;
        FROM (SELECT file_number,alias_directory,name, reference_index, parent_index &lt;br /&gt;
        FROM v$asm_alias) aa,&lt;br /&gt;
             (SELECT parent_index FROM v_parentindex) a,&lt;br /&gt;
             (SELECT file_number, type FROM v_asmfiles) b&lt;br /&gt;
  WHERE aa.file_number=b.file_number(+)&lt;br /&gt;
    AND aa.alias_directory=&#039;N&#039;&lt;br /&gt;
   -- missing PARAMETERFILE, DATAGUARDCONFIG&lt;br /&gt;
   AND b.type in (&#039;DATAFILE&#039;,&#039;ONLINELOG&#039;,&#039;CONTROLFILE&#039;,&#039;TEMPFILE&#039;)&lt;br /&gt;
  START WITH aa.PARENT_INDEX=a.parent_index&lt;br /&gt;
  CONNECT BY PRIOR aa.reference_index=aa.parent_index)&lt;br /&gt;
  WHERE substr(files,instr(files,&#039;/&#039;,1,1),instr(files,&#039;/&#039;,1,2)-instr(files,&#039;/&#039;,1,1)+1) = (select dbname FROM v_dbname)&lt;br /&gt;
MINUS (&lt;br /&gt;
  SELECT upper(name) files, &#039;DATAFILE&#039; type FROM v$datafile&lt;br /&gt;
    UNION ALL &lt;br /&gt;
  SELECT upper(name) files, &#039;TEMPFILE&#039; type FROM v$tempfile&lt;br /&gt;
    UNION ALL&lt;br /&gt;
 SELECT upper(name) files, &#039;CONTROLFILE&#039; type FROM v$controlfile WHERE name like &#039;+&amp;amp;ASMGROUP%&#039;&lt;br /&gt;
    UNION ALL&lt;br /&gt;
 SELECT upper(member) files, &#039;ONLINELOG&#039; type FROM v$logfile WHERE member like &#039;+&amp;amp;ASMGROUP%&#039;&lt;br /&gt;
)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=constraints=&lt;br /&gt;
&lt;br /&gt;
Per vedere le colonne. Va raffinata:&lt;br /&gt;
&lt;br /&gt;
 select c.constraint_name || &#039; &#039; || c.table_name || &#039;(&#039; ||  u.column_name || &#039;)&#039;&lt;br /&gt;
 from dba_constraints c&lt;br /&gt;
 inner join dba_cons_columns u on (u.owner=c.owner and u.constraint_name=c.constraint_name)&lt;br /&gt;
 where c.constraint_type=&#039;R&#039;;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Per vedere le referenze tra tabelle:&lt;br /&gt;
&lt;br /&gt;
 select c.constraint_name || &#039; &#039; || c.table_name || &#039; -&amp;gt; &#039; ||  u.table_name&lt;br /&gt;
 from dba_constraints c&lt;br /&gt;
 inner join dba_constraints u on (u.owner=c.r_owner and u.constraint_name=c.r_constraint_name)&lt;br /&gt;
 where c.constraint_type=&#039;R&#039;&lt;br /&gt;
 and (c.table_name = &#039;&amp;amp;&amp;amp;1&#039; or u.table_name=&#039;&amp;amp;&amp;amp;1&#039;);&lt;br /&gt;
&lt;br /&gt;
 select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS,VALIDATED from dba_constraints where table_name=&#039;&amp;amp;&amp;amp;1&#039;;&lt;br /&gt;
&lt;br /&gt;
=Get DDL=&lt;br /&gt;
 set long 2000000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on&lt;br /&gt;
 column ddl format a1000&lt;br /&gt;
 begin&lt;br /&gt;
   dbms_metadata.set_transform_param(dbms_metadata.session_transform,&#039;SQLTERMINATOR&#039;,true);&lt;br /&gt;
   dbms_metadata.set_transform_param(dbms_metadata.session_transform,&#039;PRETTY&#039;,true);&lt;br /&gt;
   dbms_metadata.set_transform_param(dbms_metadata.session_transform,&#039;PARTITIONING&#039;,true);&lt;br /&gt;
 end;&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
==Tabelle==&lt;br /&gt;
 select dbms_metadata.get_ddl(object_type=&amp;gt;&#039;TABLE&#039;,schema=&amp;gt;&#039;SCHEMA_NAME&#039;,name=&amp;gt;&#039;TABLE_NAME&#039;) from dual;&lt;br /&gt;
&lt;br /&gt;
==Reverse Grants==&lt;br /&gt;
&lt;br /&gt;
Elenco delle grants concesse all&#039;utente. Utile quando l&#039;utente va ricreato, ad esempio in caso di import.&lt;br /&gt;
&lt;br /&gt;
Vecchio metodo (si può migliorare gestendo la grant option):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
set pagesize 0 linesize 200 trim on trims on tab off feedback off&lt;br /&gt;
spool privilegi_esportati.sql&lt;br /&gt;
select &#039;grant &#039; || privilege || &#039; to &#039; || grantee || &#039;;&#039; from dba_sys_privs where grantee in (&#039;USER1&#039;);&lt;br /&gt;
select &#039;grant &#039; || GRANTED_ROLE || &#039; to &#039; || grantee || &#039;;&#039; from dba_role_privs where grantee in (&#039;USER1&#039;);&lt;br /&gt;
select &#039;grant &#039; || privilege || &#039; on &#039; || owner || &#039;.&amp;quot;&#039; || table_name || &#039;&amp;quot; to &#039; || grantee || &#039;;&#039; from dba_tab_privs where grantee in (&#039;USER1&#039;);&lt;br /&gt;
spool off&lt;br /&gt;
set pagesize 200 feedback on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Metodo più efficace:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set long 2000000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on&lt;br /&gt;
column ddl format a1000&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
     dbms_metadata.set_transform_param (dbms_metadata.session_transform, &#039;SQLTERMINATOR&#039;, true);&lt;br /&gt;
     dbms_metadata.set_transform_param (dbms_metadata.session_transform, &#039;PRETTY&#039;, true);&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
 &lt;br /&gt;
variable v_username VARCHAR2(30);&lt;br /&gt;
 &lt;br /&gt;
exec:v_username := upper(&#039;UTENTE01&#039;);&lt;br /&gt;
 &lt;br /&gt;
spool grants_UTENTE01.sql&lt;br /&gt;
&lt;br /&gt;
SELECT dbms_metadata.get_ddl(&#039;USER&#039;,&#039;UTENTE01&#039;) FROM dual;&lt;br /&gt;
&lt;br /&gt;
select dbms_metadata.get_granted_ddl(&#039;ROLE_GRANT&#039;, rp.grantee) AS ddl&lt;br /&gt;
  from   dba_role_privs rp&lt;br /&gt;
  where  rp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 union all&lt;br /&gt;
  select dbms_metadata.get_granted_ddl(&#039;SYSTEM_GRANT&#039;, sp.grantee) AS ddl&lt;br /&gt;
  from   dba_sys_privs sp&lt;br /&gt;
  where  sp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 union all&lt;br /&gt;
  select dbms_metadata.get_granted_ddl(&#039;OBJECT_GRANT&#039;, tp.grantee) AS ddl&lt;br /&gt;
  from   dba_tab_privs tp&lt;br /&gt;
  where  tp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
spool off;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clear screen&lt;br /&gt;
accept uname prompt &#039;Enter User Name : &#039;&lt;br /&gt;
accept outfile prompt  &#039; Output filename : &#039;&lt;br /&gt;
&lt;br /&gt;
spool &amp;amp;&amp;amp;outfile..gen&lt;br /&gt;
&lt;br /&gt;
SET LONG 20000 LONGCHUNKSIZE 20000 PAGESIZE 0 LINESIZE 1000 FEEDBACK OFF VERIFY OFF TRIMSPOOL ON&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, &#039;SQLTERMINATOR&#039;, true);&lt;br /&gt;
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, &#039;PRETTY&#039;, true);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
SELECT dbms_metadata.get_ddl(&#039;USER&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) FROM dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;SYSTEM_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;ROLE_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;OBJECT_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
&lt;br /&gt;
spool off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reverse Grants 2==&lt;br /&gt;
&lt;br /&gt;
Elenco delle grants concesse all&#039;utente. Utile quando l&#039;utente va ricreato, ad esempio in caso di import.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set long 2000000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on&lt;br /&gt;
column ddl format a1000&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
     dbms_metadata.set_transform_param (dbms_metadata.session_transform, &#039;SQLTERMINATOR&#039;, true);&lt;br /&gt;
     dbms_metadata.set_transform_param (dbms_metadata.session_transform, &#039;PRETTY&#039;, true);&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
 &lt;br /&gt;
variable v_username VARCHAR2(30);&lt;br /&gt;
 &lt;br /&gt;
exec:v_username := upper(&#039;UTENTE01&#039;);&lt;br /&gt;
 &lt;br /&gt;
spool grants_UTENTE01.sql&lt;br /&gt;
&lt;br /&gt;
SELECT dbms_metadata.get_ddl(&#039;USER&#039;,&#039;UTENTE01&#039;) FROM dual;&lt;br /&gt;
&lt;br /&gt;
select dbms_metadata.get_granted_ddl(&#039;ROLE_GRANT&#039;, rp.grantee) AS ddl&lt;br /&gt;
  from   dba_role_privs rp&lt;br /&gt;
  where  rp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 union all&lt;br /&gt;
  select dbms_metadata.get_granted_ddl(&#039;SYSTEM_GRANT&#039;, sp.grantee) AS ddl&lt;br /&gt;
  from   dba_sys_privs sp&lt;br /&gt;
  where  sp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 union all&lt;br /&gt;
  select dbms_metadata.get_granted_ddl(&#039;OBJECT_GRANT&#039;, tp.grantee) AS ddl&lt;br /&gt;
  from   dba_tab_privs tp&lt;br /&gt;
  where  tp.grantee = :v_username&lt;br /&gt;
  and    rownum = 1&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
spool off;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clear screen&lt;br /&gt;
accept uname prompt &#039;Enter User Name : &#039;&lt;br /&gt;
accept outfile prompt  &#039; Output filename : &#039;&lt;br /&gt;
&lt;br /&gt;
spool &amp;amp;&amp;amp;outfile..gen&lt;br /&gt;
&lt;br /&gt;
SET LONG 20000 LONGCHUNKSIZE 20000 PAGESIZE 0 LINESIZE 1000 FEEDBACK OFF VERIFY OFF TRIMSPOOL ON&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, &#039;SQLTERMINATOR&#039;, true);&lt;br /&gt;
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, &#039;PRETTY&#039;, true);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
SELECT dbms_metadata.get_ddl(&#039;USER&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) FROM dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;SYSTEM_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;ROLE_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
SELECT DBMS_METADATA.GET_GRANTED_DDL(&#039;OBJECT_GRANT&#039;,&#039;&amp;amp;&amp;amp;uname&#039;) from dual;&lt;br /&gt;
&lt;br /&gt;
spool off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Locked Objects=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alter session set nls_date_format=&#039;DD/MM/YYYY HH24:MI:SS&#039;;&lt;br /&gt;
&lt;br /&gt;
col object_name for a30&lt;br /&gt;
col machine for a30&lt;br /&gt;
&lt;br /&gt;
SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, s.inst_id, P.SPID, S.PROGRAM,S.USERNAME,S.MACHINE, S.PORT, &lt;br /&gt;
S.LOGON_TIME, SQ.SQL_FULLTEXT &lt;br /&gt;
FROM GV$LOCKED_OBJECT L, DBA_OBJECTS O, GV$SESSION S, GV$PROCESS P, GV$SQL SQ &lt;br /&gt;
WHERE L.OBJECT_ID = O.OBJECT_ID &lt;br /&gt;
AND (L.SESSION_ID = S.SID  and l.inst_id=s.inst_id)&lt;br /&gt;
AND (S.PADDR = P.ADDR  and s.inst_id=p.inst_id)&lt;br /&gt;
AND (S.SQL_ADDRESS = SQ.ADDRESS and s.inst_id=sq.inst_id)&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,S.MACHINE, S.PORT, &lt;br /&gt;
S.LOGON_TIME, SQ.SQL_FULLTEXT &lt;br /&gt;
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, V$PROCESS P, V$SQL SQ &lt;br /&gt;
WHERE L.OBJECT_ID = O.OBJECT_ID &lt;br /&gt;
AND (L.SESSION_ID = S.SID)&lt;br /&gt;
AND (S.PADDR = P.ADDR)&lt;br /&gt;
AND (S.SQL_ADDRESS = SQ.ADDRESS)&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==lock==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
set linesize 190&lt;br /&gt;
set pagesize 200&lt;br /&gt;
col blocker for a30&lt;br /&gt;
col sid_serial for a15&lt;br /&gt;
col blockee for a30&lt;br /&gt;
&lt;br /&gt;
col object_name for a30&lt;br /&gt;
col machine for a45&lt;br /&gt;
col osuser for a15&lt;br /&gt;
&lt;br /&gt;
select c.owner,&lt;br /&gt;
   c.object_name,&lt;br /&gt;
   c.object_type,&lt;br /&gt;
   b.sid,&lt;br /&gt;
   b.serial#,&lt;br /&gt;
   b.status,&lt;br /&gt;
   b.osuser,&lt;br /&gt;
   b.machine&lt;br /&gt;
from&lt;br /&gt;
   v$locked_object a ,&lt;br /&gt;
   v$session b,&lt;br /&gt;
   dba_objects c,&lt;br /&gt;
   v$lock l&lt;br /&gt;
where b.sid = a.session_id&lt;br /&gt;
  and a.object_id = c.object_id&lt;br /&gt;
  and l.sid=b.sid&lt;br /&gt;
  and (l.block=1 or l.request &amp;gt; 0 )&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
select&lt;br /&gt;
(select username || &#039; - &#039; || osuser from v$session where sid=a.sid) blocker,&lt;br /&gt;
a.sid || &#039;, &#039; ||&lt;br /&gt;
(select serial# from v$session where sid=a.sid) sid_serial,&lt;br /&gt;
&#039; is blocking &#039;,&lt;br /&gt;
(select username || &#039; - &#039; || osuser from v$session where sid=b.sid) blockee,&lt;br /&gt;
b.sid || &#039;, &#039; ||&lt;br /&gt;
(select serial# from v$session where sid=b.sid) sid_serial&lt;br /&gt;
from v$lock a, v$lock b&lt;br /&gt;
where a.block = 1&lt;br /&gt;
and b.request &amp;gt; 0&lt;br /&gt;
and a.id1 = b.id1&lt;br /&gt;
and a.id2 = b.id2;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select s1.username || &#039;@&#039; || s1.machine&lt;br /&gt;
|| &#039; ( SID=&#039; || s1.sid || &#039; )  is blocking &#039;&lt;br /&gt;
|| s2.username || &#039;@&#039; || s2.machine || &#039; ( SID=&#039; || s2.sid || &#039; ) &#039;&lt;br /&gt;
AS blocking_status&lt;br /&gt;
from v$lock l1, v$session s1, v$lock l2, v$session s2&lt;br /&gt;
where s1.sid=l1.sid and s2.sid=l2.sid&lt;br /&gt;
 and l1.BLOCK=1 and l2.request &amp;gt; 0&lt;br /&gt;
 and l1.id1 = l2.id1&lt;br /&gt;
 and l2.id2 = l2.id2 ;&lt;br /&gt;
set heading off&lt;br /&gt;
select &#039;SQL STATEMENT BLOCCANTI:&#039; as SQL_STATEMENT_BLOCCANTI from dual;&lt;br /&gt;
set heading on&lt;br /&gt;
select a.username,a.sid, a.serial#, b.sql_text&lt;br /&gt;
from v$session a, v$sqlarea b&lt;br /&gt;
where a.sql_address=b.address and a.sid in ( select&lt;br /&gt;
s1.sid&lt;br /&gt;
 from v$lock l1, v$session s1, v$lock l2, v$session s2&lt;br /&gt;
where s1.sid=l1.sid and s2.sid=l2.sid&lt;br /&gt;
 and l1.BLOCK=1 and l2.request &amp;gt; 0&lt;br /&gt;
 and l1.id1 = l2.id1&lt;br /&gt;
 and l2.id2 = l2.id2) ;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tablespaces Read Only==&lt;br /&gt;
&lt;br /&gt;
 select &#039;alter tablespace &#039; || tablespace_name || &#039; read only;&#039; from dba_tablespaces where contents=&#039;PERMANENT&#039; &lt;br /&gt;
  and status=&#039;ONLINE&#039; and tablespace_name not in (&#039;SYSTEM&#039;,&#039;SYSAUX&#039;);&lt;br /&gt;
  &lt;br /&gt;
 select &#039;alter tablespace &#039; || tablespace_name || &#039; read write;&#039; from dba_tablespaces where contents=&#039;PERMANENT&#039; &lt;br /&gt;
  and status=&#039;READ ONLY&#039; and tablespace_name not in (&#039;SYSTEM&#039;,&#039;SYSAUX&#039;);&lt;br /&gt;
&lt;br /&gt;
=Character Set=&lt;br /&gt;
&lt;br /&gt;
 col PROPERTY_NAME for a30&lt;br /&gt;
 col PROPERTY_VALUE for a40&lt;br /&gt;
 col DESCRIPTION for a60&lt;br /&gt;
 select * from database_properties where PROPERTY_NAME in (&#039;NLS_CHARACTERSET&#039;, &#039;NLS_NCHAR_CHARACTERSET&#039;);&lt;br /&gt;
&lt;br /&gt;
==Gestione stringhe con caratteri unicode==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SQL&amp;gt; select asciistr(&#039;Fernando, tre caffè! Olé!&#039;) as fernando from dual;&lt;br /&gt;
&lt;br /&gt;
FERNANDO&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Fernando, tre caff\00E8! Ol\00E9!&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; select unistr(&#039;Fernando, tre caff\00E8! Ol\00E9!&#039;) as fernando from dual;&lt;br /&gt;
&lt;br /&gt;
FERNANDO&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
Fernando, tre caffè! Olé!&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; select asciistr(&#039;èéà°òç½€&#039;) from dual;&lt;br /&gt;
&lt;br /&gt;
ASCIISTR(&#039;ÈÉÀ°ÒÇ½€&#039;)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
\00E8\00E9\00E0\00B0\00F2\00E7\00BD\20AC&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Redefine Online=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
set timing on&lt;br /&gt;
drop table USER.EESKFILECOMUNICAZIONE_CP;&lt;br /&gt;
purge dba_recyclebin;&lt;br /&gt;
&lt;br /&gt;
-- verifica se è utilizzabile&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_REDEFINITION.CAN_REDEF_TABLE(&#039;USER&#039;,&#039;EESKFILECOMUNICAZIONE&#039;,DBMS_REDEFINITION.CONS_USE_PK);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
-- organization index tablespace ODSSOLTBS overflow tablespace ODSSOLTBS&lt;br /&gt;
create table USER.EESKFILECOMUNICAZIONE_CP (IDSKFILE NUMBER(18),FBODY BLOB)&lt;br /&gt;
 lob(FBODY) store as securefile (enable storage in row nocache nologging deduplicate compress high tablespace ODSLOBTBS)&lt;br /&gt;
 partition by range (IDSKFILE) interval (5000000) ( partition values less than (5000000) )&lt;br /&gt;
 compress for oltp tablespace ODSLOBTBS nologging;&lt;br /&gt;
&lt;br /&gt;
-- insert /*+ append */ into USER.EESKFILECOMUNICAZIONE_CP&lt;br /&gt;
-- select * from USER.EESKFILECOMUNICAZIONE;&lt;br /&gt;
&lt;br /&gt;
alter table USER.EESKFILECOMUNICAZIONE_CP enable row movement;&lt;br /&gt;
alter session force parallel dml parallel 8;&lt;br /&gt;
alter session force parallel query parallel 8;&lt;br /&gt;
&lt;br /&gt;
EXEC DBMS_REDEFINITION.start_redef_table(uname=&amp;gt;&#039;USER&#039;, orig_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE&#039;, int_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE_CP&#039;);&lt;br /&gt;
&lt;br /&gt;
EXEC DBMS_REDEFINITION.sync_interim_table(uname=&amp;gt;&#039;USER&#039;, orig_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE&#039;, int_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE_CP&#039;);&lt;br /&gt;
&lt;br /&gt;
-- Copy dependents.&lt;br /&gt;
SET SERVEROUTPUT ON&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_num_errors PLS_INTEGER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_REDEFINITION.copy_table_dependents(&lt;br /&gt;
    uname               =&amp;gt; &#039;USER&#039;,&lt;br /&gt;
    orig_table          =&amp;gt; &#039;EESKFILECOMUNICAZIONE&#039;,&lt;br /&gt;
    int_table           =&amp;gt; &#039;EESKFILECOMUNICAZIONE_CP&#039;,&lt;br /&gt;
    copy_indexes        =&amp;gt; 1,             -- Default&lt;br /&gt;
    copy_triggers       =&amp;gt; TRUE,          -- Default&lt;br /&gt;
    copy_constraints    =&amp;gt; TRUE,          -- Default&lt;br /&gt;
    copy_privileges     =&amp;gt; TRUE,          -- Default&lt;br /&gt;
    ignore_errors       =&amp;gt; FALSE,         -- Default&lt;br /&gt;
    num_errors          =&amp;gt; l_num_errors,&lt;br /&gt;
    copy_statistics     =&amp;gt; FALSE,         -- Default&lt;br /&gt;
    copy_mvlog          =&amp;gt; FALSE);        -- Default&lt;br /&gt;
    &lt;br /&gt;
  DBMS_OUTPUT.put_line(&#039;num_errors=&#039; || l_num_errors); &lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
EXEC DBMS_REDEFINITION.finish_redef_table(uname=&amp;gt;&#039;USER&#039;, orig_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE&#039;, int_table=&amp;gt;&#039;EESKFILECOMUNICAZIONE_CP&#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Oracle]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6298</id>
		<title>Postgres Dump</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6298"/>
		<updated>2026-06-22T12:22:53Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* dump e import in un solo passaggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=dump singolo db=&lt;br /&gt;
 pg_dump -U owner_db -d db01 --compress=gzip -f dump_db01.sql.gz&lt;br /&gt;
&lt;br /&gt;
=dump e import in un solo passaggio=&lt;br /&gt;
 pg_dump -h server01.sorgente.db -U owner_database01 -d database01 | psql -U owner_database01 -h localhost -p 5432 -d database01 -b -o imp_database01.log&lt;br /&gt;
con parallelismo&lt;br /&gt;
 pg_dump -Fc -h server01.sorgente.db -U owner_database01 -d database01 | pg_restore -j 4 -U owner_database01 -h localhost -p 5432 -d database01 -b -o imp_database01.log&lt;br /&gt;
&lt;br /&gt;
=autovacuum=&lt;br /&gt;
durante la import, sul database di destinazione si attivano uno o più processi di autovacuum, per ricalcolare le statistiche. Per evitarlo si può disattivare l&#039;autovacuum sul database, e riattivarlo alla fine della import.&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6297</id>
		<title>Postgres Dump</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6297"/>
		<updated>2026-06-22T09:54:53Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=dump singolo db=&lt;br /&gt;
 pg_dump -U owner_db -d db01 --compress=gzip -f dump_db01.sql.gz&lt;br /&gt;
&lt;br /&gt;
=dump e import in un solo passaggio=&lt;br /&gt;
 pg_dump -h server01.sorgente.db -U owner_database01 -d database01 | psql -U owner_database01 -h localhost -p 5432 -d database01 -b -o imp_database01.log&lt;br /&gt;
&lt;br /&gt;
=autovacuum=&lt;br /&gt;
durante la import, sul database di destinazione si attivano uno o più processi di autovacuum, per ricalcolare le statistiche. Per evitarlo si può disattivare l&#039;autovacuum sul database, e riattivarlo alla fine della import.&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Mysql_Password&amp;diff=6296</id>
		<title>Mysql Password</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Mysql_Password&amp;diff=6296"/>
		<updated>2026-06-22T07:01:50Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Creazione utente=&lt;br /&gt;
 create user pincopallino identified with caching_sha2_password by &amp;quot;password&amp;quot;;&lt;br /&gt;
==Memorizzazione Password==&lt;br /&gt;
Per memorizzare le credenziali di connessione ad un database:&lt;br /&gt;
&lt;br /&gt;
 mysql_config_editor set --login-path=local_root --host=localhost --port=3306 --user=root --password&lt;br /&gt;
&lt;br /&gt;
il comando genera un file &amp;lt;code&amp;gt;.mylogin.cnf&amp;lt;/code&amp;gt; nella $HOME&lt;br /&gt;
se come login-path si utilizza la stringa &amp;lt;code&amp;gt;client&amp;lt;/code&amp;gt; tale connessione viene utilizzata per default.&lt;br /&gt;
&lt;br /&gt;
Per elencare tutte le connessioni memorizzate:&lt;br /&gt;
 mysql_config_editor print --all&lt;br /&gt;
&lt;br /&gt;
Per leggere un file diverso dal default:&lt;br /&gt;
 mysql_config_editor print --defaults-file=/home/user/.mylogin.cnf -all&lt;br /&gt;
&lt;br /&gt;
Quando si utilizzano le credenziali salvate:&lt;br /&gt;
 mysql --login-path=local_root&lt;br /&gt;
 &lt;br /&gt;
 mysql --defaults-file=/home/user/.mylogin.cnf --login-path=db_remoto&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Mysql]]&lt;br /&gt;
[[Categoria:OpenSource]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6295</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6295"/>
		<updated>2026-06-18T12:14:42Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use MioDB&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
===metodo online===&lt;br /&gt;
* aggiungi un nuovo file&lt;br /&gt;
 ALTER DATABASE NomeDatabase &lt;br /&gt;
 ADD FILE ( &lt;br /&gt;
    NAME = &#039;NomeNuovoFile&#039;, &lt;br /&gt;
    FILENAME = &#039;D:\NuovoPercorso\NomeNuovoFile.ndf&#039;, &lt;br /&gt;
    SIZE = 100MB, &lt;br /&gt;
    FILEGROWTH = 100MB &lt;br /&gt;
 );&lt;br /&gt;
* sposta i dati tutti nel nuovo file&lt;br /&gt;
 DBCC SHRINKFILE (&#039;NomeVecchioFile&#039;, EMPTYFILE);&lt;br /&gt;
* rimuovi il vecchio file&lt;br /&gt;
 ALTER DATABASE NomeDatabase REMOVE FILE NomeVecchioFile;&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==sessione che usa il tempdb==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.command,&lt;br /&gt;
    (su.user_objects_alloc_page_count&lt;br /&gt;
     + su.internal_objects_alloc_page_count) * 8 / 1024 AS TempDB_MB,&lt;br /&gt;
    st.text&lt;br /&gt;
FROM sys.dm_db_session_space_usage su&lt;br /&gt;
JOIN sys.dm_exec_sessions s&lt;br /&gt;
    ON su.session_id = s.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests r&lt;br /&gt;
    ON s.session_id = r.session_id&lt;br /&gt;
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st&lt;br /&gt;
WHERE s.session_id &amp;gt; 50&lt;br /&gt;
ORDER BY TempDB_MB DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Oracle_RMAN&amp;diff=6294</id>
		<title>Oracle RMAN</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Oracle_RMAN&amp;diff=6294"/>
		<updated>2026-06-18T10:45:10Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Query per job di backup==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set lines 220&lt;br /&gt;
set pages 1000&lt;br /&gt;
col cf for 9,999&lt;br /&gt;
col df for 9,999&lt;br /&gt;
col elapsed_seconds heading &amp;quot;ELAPSED|SECONDS&amp;quot;&lt;br /&gt;
col i0 for 9,999&lt;br /&gt;
col i1 for 9,999&lt;br /&gt;
col l for 9,999&lt;br /&gt;
col output_mbytes for 9,999,999 heading &amp;quot;OUTPUT|MBYTES&amp;quot;&lt;br /&gt;
col session_recid for 999999 heading &amp;quot;SESSION|RECID&amp;quot;&lt;br /&gt;
col session_stamp for 99999999999 heading &amp;quot;SESSION|STAMP&amp;quot;&lt;br /&gt;
col status for a10 trunc&lt;br /&gt;
col time_taken_display for a10 heading &amp;quot;TIME|TAKEN&amp;quot;&lt;br /&gt;
col output_instance for 9999 heading &amp;quot;OUT|INST&amp;quot;&lt;br /&gt;
select&lt;br /&gt;
  to_char(j.start_time, &#039;yyyy-mm-dd hh24:mi:ss&#039;) start_time,&lt;br /&gt;
  to_char(j.end_time, &#039;yyyy-mm-dd hh24:mi:ss&#039;) end_time,&lt;br /&gt;
  (j.output_bytes/1024/1024) output_mbytes, j.status, j.input_type,&lt;br /&gt;
  decode(to_char(j.start_time, &#039;d&#039;), 1, &#039;Sunday&#039;, 2, &#039;Monday&#039;,&lt;br /&gt;
                                     3, &#039;Tuesday&#039;, 4, &#039;Wednesday&#039;,&lt;br /&gt;
                                     5, &#039;Thursday&#039;, 6, &#039;Friday&#039;,&lt;br /&gt;
                                     7, &#039;Saturday&#039;) dow,&lt;br /&gt;
  j.elapsed_seconds, j.time_taken_display,&lt;br /&gt;
  x.cf, x.df, x.i0, x.i1, x.l,&lt;br /&gt;
  ro.inst_id output_instance&lt;br /&gt;
from v$RMAN_BACKUP_JOB_DETAILS j&lt;br /&gt;
  left outer join (select&lt;br /&gt;
                     d.session_recid, d.session_stamp,&lt;br /&gt;
                     sum(case when d.controlfile_included = &#039;YES&#039; then d.pieces else 0 end) CF,&lt;br /&gt;
                     sum(case when d.controlfile_included = &#039;NO&#039;&lt;br /&gt;
                               and d.backup_type||d.incremental_level = &#039;D&#039; then d.pieces else 0 end) DF,&lt;br /&gt;
                     sum(case when d.backup_type||d.incremental_level = &#039;D0&#039; then d.pieces else 0 end) I0,&lt;br /&gt;
                     sum(case when d.backup_type||d.incremental_level = &#039;I1&#039; then d.pieces else 0 end) I1,&lt;br /&gt;
                     sum(case when d.backup_type = &#039;L&#039; then d.pieces else 0 end) L&lt;br /&gt;
                   from&lt;br /&gt;
                     v$BACKUP_SET_DETAILS d&lt;br /&gt;
                     join v$BACKUP_SET s on s.set_stamp = d.set_stamp and s.set_count = d.set_count&lt;br /&gt;
                   where s.input_file_scan_only = &#039;NO&#039;&lt;br /&gt;
                   group by d.session_recid, d.session_stamp) x&lt;br /&gt;
    on x.session_recid = j.session_recid and x.session_stamp = j.session_stamp&lt;br /&gt;
  left outer join (select o.session_recid, o.session_stamp, min(inst_id) inst_id&lt;br /&gt;
                   from v$RMAN_OUTPUT o&lt;br /&gt;
                   group by o.session_recid, o.session_stamp)&lt;br /&gt;
    ro on ro.session_recid = j.session_recid and ro.session_stamp = j.session_stamp&lt;br /&gt;
where j.start_time &amp;gt; trunc(sysdate)-&amp;amp;NUMBER_OF_DAYS&lt;br /&gt;
order by j.start_time&lt;br /&gt;
/&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicate Database==&lt;br /&gt;
&lt;br /&gt;
[[Oracle_Duplicate_Database|Duplicate Database]]&lt;br /&gt;
&lt;br /&gt;
==Restore Point in time==&lt;br /&gt;
Restore point in time utilizando il catalogo, spfile presente, valorizzato &amp;lt;code&amp;gt;db_create_file_dest&amp;lt;/code&amp;gt; diverso dal database sorgente:&lt;br /&gt;
&lt;br /&gt;
 startup nomount force;&lt;br /&gt;
 run {&lt;br /&gt;
 set dbid XXXXXXXXXX;&lt;br /&gt;
 allocate channel c1 type disk;&lt;br /&gt;
 set until time &amp;quot;to_date(&#039;2021-06-15:01:00:00&#039;,&#039;YYYY-MM-DD:hh24:mi:ss&#039;)&amp;quot;;&lt;br /&gt;
 restore controlfile from autobackup;&lt;br /&gt;
 sql &#039;alter database mount&#039;;&lt;br /&gt;
 sql &#039;alter database disable block change tracking&#039;;&lt;br /&gt;
 set newname for database to new;&lt;br /&gt;
 restore database;&lt;br /&gt;
 switch datafile all;&lt;br /&gt;
 recover database;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Recupero schema da backup==&lt;br /&gt;
Istanza avviata con init o spfile:&lt;br /&gt;
 processes=200&lt;br /&gt;
 sga_target=10G&lt;br /&gt;
 pga_aggregate_target=2G&lt;br /&gt;
 db_block_size=8192&lt;br /&gt;
 compatible=&amp;quot;12.2.0&amp;quot;&lt;br /&gt;
 log_archive_dest_1=&amp;quot;location=+DG_ARCH&amp;quot;&lt;br /&gt;
 db_files=1000&lt;br /&gt;
 db_create_file_dest=&amp;quot;+DG_DATA&amp;quot;&lt;br /&gt;
 _system_trig_enabled=false&lt;br /&gt;
 db_name=&amp;quot;DBORA01&amp;quot;&lt;br /&gt;
 db_unique_name=&amp;quot;RECO01&amp;quot;&lt;br /&gt;
 diagnostic_dest=&amp;quot;/u01/app/oracle&amp;quot;&lt;br /&gt;
 control_files=&amp;quot;+DG_DATA/RECO01/controlfile/current.786.1075850995&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Da rman:&lt;br /&gt;
 &lt;br /&gt;
 sql &#039;alter database mount clone database&#039;;&lt;br /&gt;
 run {&lt;br /&gt;
  set until time &amp;quot;to_date(&#039;2021-06-20:03:20:00&#039;,&#039;YYYY-MM-DD:HH24:MI:SS&#039;)&amp;quot;;&lt;br /&gt;
  set newname for database to new; &lt;br /&gt;
  restore database skip forever tablespace USERS,TBS01,TBS02 ;&lt;br /&gt;
  switch datafile all;&lt;br /&gt;
  recover database skip forever tablespace USERS,TBS01,TBS02 ;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==backup archive==&lt;br /&gt;
per salvare gli ultimi archive generati, ma evitare salvataggi doppi e cancellazione degli archive dopo 1 giorno dalle generazione:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sintassi testata su rman 10.2&lt;br /&gt;
&lt;br /&gt;
 backup archivelog all not backed up 1 times to destination &amp;quot;sbt_tape&amp;quot;;&lt;br /&gt;
 backup as backupset device type sbt archivelog all not backed up 1 times;&lt;br /&gt;
 delete noprompt archivelog all backed up 1 times to device type sbt;&lt;br /&gt;
 delete noprompt archivelog all completed before &#039;sysdate-1&#039; backed up 1 times to device type sbt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Rman script windows=&lt;br /&gt;
==Template per multi retention==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
&lt;br /&gt;
for /f &amp;quot;skip=2&amp;quot; %%x in (&#039;wmic Path Win32_LocalTime get Day^,DayOfWeek /Format:List&#039;) do set %%x &amp;gt;NUL&lt;br /&gt;
&lt;br /&gt;
rem echo %Day% %DayOfWeek%&lt;br /&gt;
&lt;br /&gt;
rem Sovrascrivi per prove&lt;br /&gt;
rem set Day=1&lt;br /&gt;
rem set DayOfWeek=1&lt;br /&gt;
&lt;br /&gt;
rem echo %Day% %DayOfWeek%&lt;br /&gt;
&lt;br /&gt;
set BCK=ORD&lt;br /&gt;
if %DayOfWeek% EQU 0 set BCK=LT180&lt;br /&gt;
if %DayOfWeek% EQU 0 if %Day% GTR 7 set BCK=LT35&lt;br /&gt;
&lt;br /&gt;
echo %BCK%&lt;br /&gt;
(&lt;br /&gt;
echo spool log to %BCK%.log&lt;br /&gt;
echo list expired backup;&lt;br /&gt;
echo spool log off;&lt;br /&gt;
) &amp;gt; %BCK%.rman&lt;br /&gt;
&lt;br /&gt;
set ORACLE_SID=XXXXXXX&lt;br /&gt;
set NLS_LANG=ITALIAN_ITALY.WE8MSWIN1252&lt;br /&gt;
set NLS_DATE_FORMAT=DD-MM-YYYY HH24:MI:SS&lt;br /&gt;
&lt;br /&gt;
rman target / nocatalog cmdfile %BCK%.rman&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rman script linux=&lt;br /&gt;
==Versione multi retention==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# versione 12/09/2014 EG&lt;br /&gt;
&lt;br /&gt;
DAYW=$( date +%w )&lt;br /&gt;
case $DAYW in&lt;br /&gt;
0)&lt;br /&gt;
        LEVEL=&amp;quot; incremental level 0 &amp;quot;&lt;br /&gt;
	DAY=$( date +%d )&lt;br /&gt;
	if [ $DAY -gt 7 ]&lt;br /&gt;
	then &lt;br /&gt;
	  TAG=&amp;quot;LT35LEV0&amp;quot;&lt;br /&gt;
	  KEEP=&amp;quot; keep until time &#039;sysdate+35&#039; &amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
	  TAG=&amp;quot;LT180LEV0&amp;quot;&lt;br /&gt;
	  KEEP=&amp;quot; keep until time &#039;sysdate+180&#039; &amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
        ;;&lt;br /&gt;
*)&lt;br /&gt;
        LEVEL=&amp;quot; incremental level 1 cumulative &amp;quot;&lt;br /&gt;
	TAG=&amp;quot;LEV1&amp;quot;&lt;br /&gt;
	KEEP=&amp;quot;&amp;quot;&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
NLS_DATE_FORMAT=&#039;DD-MM-YYYY HH24:MI:SS&#039;; export NLS_DATE_FORMAT&lt;br /&gt;
NLS_LANG=&#039;ITALIAN_ITALY.WE8ISO8859P15&#039; ; export NLS_LANG&lt;br /&gt;
&lt;br /&gt;
rman target / nocatalog log /tmp/rman_${ORACLE_SID}.log &amp;lt;&amp;lt; EOF&lt;br /&gt;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO &#039;/tmp/snapcf_${ORACLE_SID}.f&#039;;&lt;br /&gt;
CONFIGURE CHANNEL DEVICE TYPE &#039;SBT_TAPE&#039; PARMS  &#039;SBT_LIBRARY=/asigra/libdsc_ora_sbt_Linux_x86_64.so,ENV=(CONNECT_INFO=/asigra/parms.txt)&#039;;&lt;br /&gt;
CONFIGURE DEFAULT DEVICE TYPE TO &#039;SBT_TAPE&#039;;&lt;br /&gt;
CONFIGURE CONTROLFILE AUTOBACKUP ON;&lt;br /&gt;
CONFIGURE BACKUP OPTIMIZATION ON;&lt;br /&gt;
&lt;br /&gt;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 22 DAYS;&lt;br /&gt;
&lt;br /&gt;
crosscheck archivelog all;&lt;br /&gt;
crosscheck backup device type sbt;&lt;br /&gt;
backup as compressed backupset &lt;br /&gt;
 archivelog all not backed up 1 times&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.arc.rman&#039;&lt;br /&gt;
   filesperset 20 delete all input;&lt;br /&gt;
&lt;br /&gt;
delete noprompt archivelog all backed up 1 times to device type sbt;&lt;br /&gt;
&lt;br /&gt;
backup as compressed backupset&lt;br /&gt;
 ${LEVEL} tag ${TAG} ${KEEP}&lt;br /&gt;
 database&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.rman&#039;&lt;br /&gt;
   filesperset 20&lt;br /&gt;
 plus archivelog not backed up 1 times&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.arc.rman&#039;&lt;br /&gt;
   filesperset 20 delete all input;&lt;br /&gt;
&lt;br /&gt;
#delete noprompt archivelog until time &#039;sysdate -1&#039; backed up 1 times to device type sbt;&lt;br /&gt;
&lt;br /&gt;
delete noprompt obsolete device type sbt;&lt;br /&gt;
delete noprompt expired backup device type sbt;&lt;br /&gt;
&lt;br /&gt;
ALLOCATE CHANNEL FOR MAINTENANCE TYPE DISK;&lt;br /&gt;
CROSSCHECK BACKUP DEVICE TYPE DISK;&lt;br /&gt;
#CROSSCHECK DATAFILECOPY ALL;&lt;br /&gt;
#DELETE NOPROMPT EXPIRED DATAFILECOPY ALL;&lt;br /&gt;
DELETE NOPROMPT OBSOLETE DEVICE TYPE DISK;&lt;br /&gt;
DELETE NOPROMPT EXPIRED BACKUP DEVICE TYPE DISK;&lt;br /&gt;
RELEASE CHANNEL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Versione semplice con recovery window==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo $PATH&lt;br /&gt;
&lt;br /&gt;
PATH=$PATH:/usr/local/bin&lt;br /&gt;
export PATH&lt;br /&gt;
&lt;br /&gt;
#(( LEV = $( date +%w )  &amp;gt; 0 ? 1 : 0 ))&lt;br /&gt;
&lt;br /&gt;
DAYW=$( date +%w )&lt;br /&gt;
DAY=$( date +%d )&lt;br /&gt;
H=$( date +%H )&lt;br /&gt;
if [ $DAYW = 0 -a $H -le 3 ]&lt;br /&gt;
then&lt;br /&gt;
  LEV=0&lt;br /&gt;
else&lt;br /&gt;
  LEV=1&lt;br /&gt;
fi&lt;br /&gt;
NLS_LANG=ITALIAN_ITALY.UTF8 ; export NLS_LANG&lt;br /&gt;
NLS_DATE_FORMAT=&#039;DD/MM/YYYY HH24:MI:SS&#039;&lt;br /&gt;
&lt;br /&gt;
DST=/tmp&lt;br /&gt;
LEVEL=&amp;quot;incremental level ${LEV}&amp;quot;&lt;br /&gt;
TAG=&#039;tag TAG00&#039;&lt;br /&gt;
&lt;br /&gt;
ORACLE_SID=$1 ; export ORACLE_SID&lt;br /&gt;
ORAENV_ASK=NO ; export ORAENV_ASK&lt;br /&gt;
. oraenv&lt;br /&gt;
unset ORAENV_ASK&lt;br /&gt;
&lt;br /&gt;
## 6 ore 600 * 72&lt;br /&gt;
&lt;br /&gt;
if lockfile -60 -r 72 /tmp/backup_rman_${ORACLE_SID}.LCK&lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
rman target / nocatalog trace ${DST}/${ORACLE_SID}_rman_${DAY}_${H}.log &amp;lt;&amp;lt; EOF&lt;br /&gt;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO &#039;${DST}/snapcf_${ORACLE_SID}.f&#039;;&lt;br /&gt;
CONFIGURE DEFAULT DEVICE TYPE TO SBT;&lt;br /&gt;
CONFIGURE CHANNEL DEVICE TYPE &#039;SBT_TAPE&#039; PARMS  &#039;SBT_LIBRARY=/asigra/libdsc_ora_sbt_Linux_x86_64.so,ENV=(CONNECT_INFO=/asigra/parms_${ORACLE_SID}.txt)&#039;;&lt;br /&gt;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT TO &#039;%F&#039;;&lt;br /&gt;
CONFIGURE CONTROLFILE AUTOBACKUP ON;&lt;br /&gt;
CONFIGURE BACKUP OPTIMIZATION ON;&lt;br /&gt;
&lt;br /&gt;
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;&lt;br /&gt;
&lt;br /&gt;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 21 DAYS;&lt;br /&gt;
&lt;br /&gt;
crosscheck archivelog all;&lt;br /&gt;
crosscheck backup device type sbt;&lt;br /&gt;
backup as compressed backupset device type sbt&lt;br /&gt;
 ${LEVEL} ${TAG}&lt;br /&gt;
 database&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.db.rman&#039;&lt;br /&gt;
   filesperset 20&lt;br /&gt;
   include current controlfile&lt;br /&gt;
 spfile&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.spfile.rman&#039;&lt;br /&gt;
 plus archivelog not backed up 1 times&lt;br /&gt;
   format &#039;ora.%d.%s.%p.%t.%u.arc.rman&#039;&lt;br /&gt;
   filesperset 20 delete all input;&lt;br /&gt;
&lt;br /&gt;
delete noprompt archivelog all backed up 1 times to device type sbt;&lt;br /&gt;
&lt;br /&gt;
delete noprompt expired backup;&lt;br /&gt;
delete noprompt obsolete;&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
rm -f /tmp/backup_rman_${ORACLE_SID}.LCK&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Oracle]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6293</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6293"/>
		<updated>2026-06-17T12:19:49Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riferimenti: [https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6292</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6292"/>
		<updated>2026-06-17T12:18:19Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
Riferimenti: [https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17|RESTORE]&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6291</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6291"/>
		<updated>2026-06-17T12:17:42Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
Riferimenti: [RESTORE|https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6290</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6290"/>
		<updated>2026-06-17T12:15:11Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riferimenti: [RESTORE|https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6289</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6289"/>
		<updated>2026-06-17T12:14:56Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riferimenti: [RESTORE | https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6288</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6288"/>
		<updated>2026-06-17T10:54:00Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6287</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6287"/>
		<updated>2026-06-17T10:53:19Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Eventualmente modificarlo:&lt;br /&gt;
 ALTER DATABASE &amp;lt;database_name&amp;gt; SET RECOVERY FULL&lt;br /&gt;
&lt;br /&gt;
Salvataggio&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per per salvare solo il transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni precedenti alla 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6286</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6286"/>
		<updated>2026-06-17T10:50:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* salvataggio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, FORMAT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6285</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6285"/>
		<updated>2026-06-17T10:49:51Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==salvataggio==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6284</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6284"/>
		<updated>2026-06-17T10:49:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* restore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==ripristino==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6283</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6283"/>
		<updated>2026-06-17T10:49:24Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* ripristino da completo. incrementali e transaction log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==restore==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo, incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6282</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6282"/>
		<updated>2026-06-17T10:49:14Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* ripristino da full incrementali e transaction log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==restore==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da completo. incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6281</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6281"/>
		<updated>2026-06-17T10:48:54Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* backup full incremental e transaction log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==restore==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===ripristino da full incrementali e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6280</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6280"/>
		<updated>2026-06-17T10:46:48Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* con spostamento di percorso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==restore==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE MioDatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===backup full incremental e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6279</id>
		<title>MSSQL backup e restore</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_backup_e_restore&amp;diff=6279"/>
		<updated>2026-06-17T10:45:41Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* caso semplice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==backup==&lt;br /&gt;
 backup database MioDatabase to disk = &#039;/backup/MioDatabase.bak&#039;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Verificare il Recovery Model del database:&lt;br /&gt;
 SELECT name,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per backup del solo transaction log:&lt;br /&gt;
 BACKUP LOG MioDatabase TO DISK = &#039;/backup/MioDatabase_20260611.trn&#039; WITH INIT, COMPRESSION&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Per verificare svuotamento del transaction log:&lt;br /&gt;
 SELECT * FROM sys.dm_db_log_space_usage;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Con versioni per 2019:&lt;br /&gt;
 DBCC SQLPERF(LOGSPACE);&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==restore==&lt;br /&gt;
===caso semplice===&lt;br /&gt;
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===con spostamento di percorso===&lt;br /&gt;
 RESTORE FILELISTONLY FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
&lt;br /&gt;
 RESTORE DATABASE Miodatabase&lt;br /&gt;
   FROM DISK = &#039;/backup/MioDatabase.bak&#039;;&lt;br /&gt;
   WITH RECOVERY,&lt;br /&gt;
   MOVE &#039;MioDatabase_Data&#039; TO &#039;/nuovo_percorso/MioDatabase_Data.mdf&#039;,&lt;br /&gt;
   MOVE &#039;MioDatabase_Log&#039; TO &#039;/nuovo_percorso/MioDatabase_Log.ldf&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===backup full incremental e transaction log===&lt;br /&gt;
Per restore database e transaction log:&lt;br /&gt;
&lt;br /&gt;
Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:&lt;br /&gt;
 RESTORE HEADERONLY FROM DISK=&#039;/backup/MioDB_log_001.trn&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_full.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore database MioDatabase from disk = &#039;/backup/MioDatabase_incremental.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log01.bak&#039; with norecovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
L&#039;ultimo backup del transaction log viene ripristinato con l&#039;opzione &amp;lt;code&amp;gt;recovery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
Per point in time:&lt;br /&gt;
 restore log MioDatabase from disk = &#039;/backup/MioDatabase_log02.bak&#039; with stopat=&#039;2026-06-10T15:30:00&#039;,recovery&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==post restore==&lt;br /&gt;
&lt;br /&gt;
 SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = &#039;MioDatabase&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
Eventualmente cambiare il compatibility level&lt;br /&gt;
 select name,compatibility_level from sys.databases&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
 alter database MioDatabase set compatibility_level=170&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6278</id>
		<title>Postgres Memoria</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6278"/>
		<updated>2026-06-17T10:38:38Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* memoria condivisa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=parametri di memoria=&lt;br /&gt;
&lt;br /&gt;
===memoria privata per processo===&lt;br /&gt;
Ogni sessione alloca la sua work_mem. Tenere conto del parametro max_connection&lt;br /&gt;
 alter system set work_mem=&#039;32MB&#039;;&lt;br /&gt;
Memoria allocata solo in caso di operazioni di manutenzione (create index, vacuumdb, etc)&lt;br /&gt;
 alter system set maintenance_work_mem=&#039;1GB&#039;;&lt;br /&gt;
Per gli oggetti temporanei&lt;br /&gt;
 alter system set temp_buffers=&#039;32MB&#039;;&lt;br /&gt;
&lt;br /&gt;
===memoria condivisa===&lt;br /&gt;
Allocare circa 1/4 della memoria di sistema.&lt;br /&gt;
 alter system set shared_buffers=&#039;8GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log Buffer&lt;br /&gt;
 alter system set wal_buffers&lt;br /&gt;
 alter system set commit_log&lt;br /&gt;
&lt;br /&gt;
===altri parametri===&lt;br /&gt;
Impostare 1/2 o 3/4 della ram del server. Non alloca memoria, è un parametro dell&#039;ottimizzatore, che tiene conto di quanta memoria usa il sistema perativo come buffer per i filesystem.&lt;br /&gt;
 alter system set effective_cache_size=&#039;12GB&#039;;&lt;br /&gt;
&lt;br /&gt;
===riferimento===&lt;br /&gt;
https://severalnines.com/database-blog/architecture-and-tuning-memory-postgresql-databases&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6277</id>
		<title>Postgres Memoria</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6277"/>
		<updated>2026-06-16T20:32:54Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* memoria privata per processo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=parametri di memoria=&lt;br /&gt;
&lt;br /&gt;
===memoria privata per processo===&lt;br /&gt;
Ogni sessione alloca la sua work_mem. Tenere conto del parametro max_connection&lt;br /&gt;
 alter system set work_mem=&#039;32MB&#039;;&lt;br /&gt;
Memoria allocata solo in caso di operazioni di manutenzione (create index, vacuumdb, etc)&lt;br /&gt;
 alter system set maintenance_work_mem=&#039;1GB&#039;;&lt;br /&gt;
Per gli oggetti temporanei&lt;br /&gt;
 alter system set temp_buffers=&#039;32MB&#039;;&lt;br /&gt;
&lt;br /&gt;
===memoria condivisa===&lt;br /&gt;
Allocare circa 1/4 della memoria di sistema.&lt;br /&gt;
 alter system set shared_buffers=&#039;4GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log Buffer&lt;br /&gt;
 alter system set wal_buffers&lt;br /&gt;
 alter system set commit_log&lt;br /&gt;
&lt;br /&gt;
===altri parametri===&lt;br /&gt;
Impostare 1/2 o 3/4 della ram del server. Non alloca memoria, è un parametro dell&#039;ottimizzatore, che tiene conto di quanta memoria usa il sistema perativo come buffer per i filesystem.&lt;br /&gt;
 alter system set effective_cache_size=&#039;12GB&#039;;&lt;br /&gt;
&lt;br /&gt;
===riferimento===&lt;br /&gt;
https://severalnines.com/database-blog/architecture-and-tuning-memory-postgresql-databases&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6276</id>
		<title>Postgres Memoria</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6276"/>
		<updated>2026-06-16T20:31:51Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* altri parametri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=parametri di memoria=&lt;br /&gt;
&lt;br /&gt;
===memoria privata per processo===&lt;br /&gt;
Ogni sessione alloca la sua work_mem. Tenere conto del parametro max_connection&lt;br /&gt;
 alter system set work_mem=&#039;32MB&#039;;&lt;br /&gt;
Memoria allocata solo in caso di operazioni di manutenzione (create index, vacuumdb, etc)&lt;br /&gt;
 alter system set maintenance_work_mem=&#039;1GB&#039;;&lt;br /&gt;
&lt;br /&gt;
 alter system set temp_buffers=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
===memoria condivisa===&lt;br /&gt;
Allocare circa 1/4 della memoria di sistema.&lt;br /&gt;
 alter system set shared_buffers=&#039;4GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log Buffer&lt;br /&gt;
 alter system set wal_buffers&lt;br /&gt;
 alter system set commit_log&lt;br /&gt;
&lt;br /&gt;
===altri parametri===&lt;br /&gt;
Impostare 1/2 o 3/4 della ram del server. Non alloca memoria, è un parametro dell&#039;ottimizzatore, che tiene conto di quanta memoria usa il sistema perativo come buffer per i filesystem.&lt;br /&gt;
 alter system set effective_cache_size=&#039;12GB&#039;;&lt;br /&gt;
&lt;br /&gt;
===riferimento===&lt;br /&gt;
https://severalnines.com/database-blog/architecture-and-tuning-memory-postgresql-databases&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6275</id>
		<title>Postgres Memoria</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6275"/>
		<updated>2026-06-16T20:28:01Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* memoria privata per processo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=parametri di memoria=&lt;br /&gt;
&lt;br /&gt;
===memoria privata per processo===&lt;br /&gt;
Ogni sessione alloca la sua work_mem. Tenere conto del parametro max_connection&lt;br /&gt;
 alter system set work_mem=&#039;32MB&#039;;&lt;br /&gt;
Memoria allocata solo in caso di operazioni di manutenzione (create index, vacuumdb, etc)&lt;br /&gt;
 alter system set maintenance_work_mem=&#039;1GB&#039;;&lt;br /&gt;
&lt;br /&gt;
 alter system set temp_buffers=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
===memoria condivisa===&lt;br /&gt;
Allocare circa 1/4 della memoria di sistema.&lt;br /&gt;
 alter system set shared_buffers=&#039;4GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log Buffer&lt;br /&gt;
 alter system set wal_buffers&lt;br /&gt;
 alter system set commit_log&lt;br /&gt;
&lt;br /&gt;
===altri parametri===&lt;br /&gt;
Impostare 1/2 o 3/4 della ram del server. Non alloca memoria, è un parametro limite.&lt;br /&gt;
 alter system set effective_cache_size=&#039;12GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===riferimento===&lt;br /&gt;
https://severalnines.com/database-blog/architecture-and-tuning-memory-postgresql-databases&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6274</id>
		<title>Postgres Memoria</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Memoria&amp;diff=6274"/>
		<updated>2026-06-16T20:26:55Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* parametri di memoria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=parametri di memoria=&lt;br /&gt;
&lt;br /&gt;
===memoria privata per processo===&lt;br /&gt;
Ogni sessione alloca la sua work:mem&lt;br /&gt;
 alter system set work_mem=&#039;32MB&#039;;&lt;br /&gt;
Memoria allocata solo in caso di operazioni di manutenzione (create index, vacuumdb, etc)&lt;br /&gt;
 alter system set maintenance_work_mem=&#039;1GB&#039;;&lt;br /&gt;
&lt;br /&gt;
 alter system set temp_buffers=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
===memoria condivisa===&lt;br /&gt;
Allocare circa 1/4 della memoria di sistema.&lt;br /&gt;
 alter system set shared_buffers=&#039;4GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log Buffer&lt;br /&gt;
 alter system set wal_buffers&lt;br /&gt;
 alter system set commit_log&lt;br /&gt;
&lt;br /&gt;
===altri parametri===&lt;br /&gt;
Impostare 1/2 o 3/4 della ram del server. Non alloca memoria, è un parametro limite.&lt;br /&gt;
 alter system set effective_cache_size=&#039;12GB&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===riferimento===&lt;br /&gt;
https://severalnines.com/database-blog/architecture-and-tuning-memory-postgresql-databases&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6273</id>
		<title>Postgres Dump</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6273"/>
		<updated>2026-06-16T15:21:59Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=dump singolo db=&lt;br /&gt;
 pg_dump -U owner_db -d db01 --compress=gzip -f dump_db01.sql.gz&lt;br /&gt;
&lt;br /&gt;
=dump e import in un solo passaggio=&lt;br /&gt;
 pg_dump -h server01.sorgente.db -U owner_database01 -d database01 | psql -U owner_database01 -h localhost -p 5432 -d database01 -b -o imp_database01.log&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Utenti&amp;diff=6272</id>
		<title>Postgres Utenti</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Utenti&amp;diff=6272"/>
		<updated>2026-06-16T15:17:41Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=esportare utenti=&lt;br /&gt;
 pg_dumpall --globals-only -U postgres -f roles.sql&lt;br /&gt;
&lt;br /&gt;
oppure&lt;br /&gt;
 pg_dumpall --roles-only -U postgres -f roles.sql&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==superuser==&lt;br /&gt;
 create role pgadmin with encrypted password &#039;XXXYYYYZZZZZ&#039;;&lt;br /&gt;
 alter role pgadmin with login;&lt;br /&gt;
 grant all privileges on database postgres to pgadmin;&lt;br /&gt;
 alter role pgadmin with createdb;&lt;br /&gt;
 alter role pgadmin with createrole;&lt;br /&gt;
 alter role pgadmin with superuser;&lt;br /&gt;
&lt;br /&gt;
==utenti sola lettura==&lt;br /&gt;
 &lt;br /&gt;
 create group pasticcio_ro;&lt;br /&gt;
 grant connect on database pasticci_db to pasticcio_ro;&lt;br /&gt;
 grant usage on schema pasticci_schema to pasticcio_ro;&lt;br /&gt;
 grant select on all tables in schema pasticci_schema to pasticcio_ro;&lt;br /&gt;
 alter default privileges in schema pasticci_schema grant select on tables to group pasticcio_ro;&lt;br /&gt;
&lt;br /&gt;
 create role ciccio_pasticcio with login encrypted password &#039;XXXYYYYZZZZZ&#039;;&lt;br /&gt;
 alter group pasticcio_ro add user ciccio_pasticcio;&lt;br /&gt;
 alter role ciccio_pasticcio set search_path=&#039;pasticci_schema&#039;;&lt;br /&gt;
&lt;br /&gt;
==utenti proprietari==&lt;br /&gt;
 create role pasticcio_app with login encrypted password &#039;XXXYYYYZZZZZ&#039;;&lt;br /&gt;
 grant all privileges on database pasticci_db to pasticcio_app;&lt;br /&gt;
 alter user pasticcio_app set search_path=&#039;pasticci_schema&#039;;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6271</id>
		<title>Postgres Dump</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Dump&amp;diff=6271"/>
		<updated>2026-06-16T10:52:13Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Creata pagina con &amp;quot;  Categoria:Database Categoria:Postgres&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Spazio_Disco&amp;diff=6270</id>
		<title>Postgres Spazio Disco</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Spazio_Disco&amp;diff=6270"/>
		<updated>2026-06-16T10:51:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
 SELECT pg_size_pretty(pg_database_size(current_database()));&lt;br /&gt;
&lt;br /&gt;
 SELECT datname AS &amp;quot;Database&amp;quot;,pg_size_pretty(pg_database_size(datname)) AS &amp;quot;Dimensione&amp;quot; FROM pg_database;&lt;br /&gt;
&lt;br /&gt;
=Tabelle=&lt;br /&gt;
 SELECT relname AS &amp;quot;Tabella&amp;quot;,&lt;br /&gt;
       pg_size_pretty(pg_total_relation_size(relid)) AS &amp;quot;Dimensione Totale&amp;quot;,&lt;br /&gt;
       pg_size_pretty(pg_relation_size(relid)) AS &amp;quot;Dimensione Dati&amp;quot;&lt;br /&gt;
 FROM pg_catalog.pg_statio_user_tables&lt;br /&gt;
 ORDER BY pg_total_relation_size(relid) DESC;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=Postgres_Spazio_Disco&amp;diff=6269</id>
		<title>Postgres Spazio Disco</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=Postgres_Spazio_Disco&amp;diff=6269"/>
		<updated>2026-06-16T10:46:52Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Creata pagina con &amp;quot;   SELECT pg_size_pretty(pg_database_size(current_database()));   SELECT datname AS &amp;quot;Database&amp;quot;,pg_size_pretty(pg_database_size(datname)) AS &amp;quot;Dimensione&amp;quot; FROM pg_database;  Categoria:Database Categoria:Postgres&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
 SELECT pg_size_pretty(pg_database_size(current_database()));&lt;br /&gt;
&lt;br /&gt;
 SELECT datname AS &amp;quot;Database&amp;quot;,pg_size_pretty(pg_database_size(datname)) AS &amp;quot;Dimensione&amp;quot; FROM pg_database;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:Postgres]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6268</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6268"/>
		<updated>2026-06-16T08:56:40Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use MioDB&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
===metodo online===&lt;br /&gt;
* aggiungi un nuovo file&lt;br /&gt;
 ALTER DATABASE NomeDatabase &lt;br /&gt;
 ADD FILE ( &lt;br /&gt;
    NAME = &#039;NomeNuovoFile&#039;, &lt;br /&gt;
    FILENAME = &#039;D:\NuovoPercorso\NomeNuovoFile.ndf&#039;, &lt;br /&gt;
    SIZE = 100MB, &lt;br /&gt;
    FILEGROWTH = 100MB &lt;br /&gt;
 );&lt;br /&gt;
* sposta i dati tutti nel nuovo file&lt;br /&gt;
 DBCC SHRINKFILE (&#039;NomeVecchioFile&#039;, EMPTYFILE);&lt;br /&gt;
* rimuovi il vecchio file&lt;br /&gt;
 ALTER DATABASE NomeDatabase REMOVE FILE NomeVecchioFile;&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6267</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6267"/>
		<updated>2026-06-16T08:54:38Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* spostamento datafiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use MioDB&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
===metodo online===&lt;br /&gt;
* aggiungi un nuovo file&lt;br /&gt;
* sposta i dati tutti nel nuovo file&lt;br /&gt;
* rimuovi il vecchio file&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6266</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6266"/>
		<updated>2026-06-16T08:52:23Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* ricalcolo statistiche per database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use MioDB&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6265</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6265"/>
		<updated>2026-06-16T08:50:23Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo rename file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6264</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6264"/>
		<updated>2026-06-16T08:50:08Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo rename file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name AS path,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6263</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6263"/>
		<updated>2026-06-16T08:48:44Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo rename file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* elencare files e percorsi:&lt;br /&gt;
 SELECT name,physical_name AS CurrentLocation,state_desc&lt;br /&gt;
 FROM sys.master_files&lt;br /&gt;
 WHERE database_id = DB_ID(N&#039;MioDB&#039;);&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6262</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6262"/>
		<updated>2026-06-16T08:46:44Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo rename file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
 mv /vecchio_percorso/miodb01.mdf /nuovo_percorso/&lt;br /&gt;
 mv /vecchio_percorso/miodb01_log.ldf /nuovo_percorso/&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6261</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6261"/>
		<updated>2026-06-16T08:45:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* metodo rename file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
* Mettere offline il database:&lt;br /&gt;
 ALTER DATABASE MioDb SET OFFLINE;&lt;br /&gt;
 GO&lt;br /&gt;
Se serve forzare transazioni in corso: &lt;br /&gt;
 ALTER DATABASE MioDB SET OFFLINE WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
* Spostare o copiare i datafile&lt;br /&gt;
* rinominare i files nel DB&lt;br /&gt;
 ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_DATA, FILENAME = &#039;/nuovo_percorso/miodb01.mdf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
  ALTER DATABASE MioDB MODIFY FILE (NAME = MioDB_LOG, FILENAME = &#039;/nuovo_percorso/miodb01_log.ldf&#039;);&lt;br /&gt;
 GO&lt;br /&gt;
* rimettere online il DB&lt;br /&gt;
 ALTER DATABASE MioDB  SET ONLINE;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6260</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6260"/>
		<updated>2026-06-16T08:27:59Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* spostamento datafiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
===metodo detach attach===&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
===metodo rename file===&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6259</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6259"/>
		<updated>2026-06-16T07:26:56Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* spostamento datafiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
Metti offline il database&lt;br /&gt;
 ALTER DATABASE MioDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sp_detach_db &#039;MioDB&#039;;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
Copia o sposta i file verso il nuovo percorso.&lt;br /&gt;
&lt;br /&gt;
Riattacca il database:&lt;br /&gt;
 CREATE DATABASE MioDB&lt;br /&gt;
 ON&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB.mdf&#039;&lt;br /&gt;
 ),&lt;br /&gt;
 (&lt;br /&gt;
    FILENAME=&#039;/nuovo_storage/MioDB_log.ldf&#039;&lt;br /&gt;
 )&lt;br /&gt;
 FOR ATTACH;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6258</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6258"/>
		<updated>2026-06-16T07:20:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* sessioni bloccate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    r.session_id,&lt;br /&gt;
    r.status,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.wait_time,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    r.cpu_time,&lt;br /&gt;
    r.total_elapsed_time / 1000 AS elapsed_seconds,&lt;br /&gt;
    t.text&lt;br /&gt;
FROM sys.dm_exec_requests r&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
WHERE r.status = &#039;suspended&#039;&lt;br /&gt;
ORDER BY r.total_elapsed_time DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6257</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6257"/>
		<updated>2026-06-15T12:52:29Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* sessioni bloccate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
FROM sys.dm_exec_sessions AS s&lt;br /&gt;
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
ORDER BY s.session_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_Esportare_Utenze&amp;diff=6256</id>
		<title>MSSQL Esportare Utenze</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_Esportare_Utenze&amp;diff=6256"/>
		<updated>2026-06-15T12:51:57Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Script TSQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SSMS==&lt;br /&gt;
Export&lt;br /&gt;
==Powershell==&lt;br /&gt;
Installare dbatools:&lt;br /&gt;
&lt;br /&gt;
 Install-Module dbatools -Force&lt;br /&gt;
&lt;br /&gt;
Esegue la copia:&lt;br /&gt;
&lt;br /&gt;
 Copy-DbaLogin -Source ServerOrigine -Destination ServerDestinazione&lt;br /&gt;
&lt;br /&gt;
Oppure:&lt;br /&gt;
&lt;br /&gt;
 Start-DbaMigration -Source &amp;quot;VecchioServer&amp;quot; -Destination &amp;quot;NuovoServer&amp;quot; -MigrationType Logins&lt;br /&gt;
&lt;br /&gt;
Per migrare anche linked server e job:&lt;br /&gt;
&lt;br /&gt;
 Start-DbaInstanceMigration -Source &amp;quot;VecchioServer&amp;quot; -Destination &amp;quot;NuovoServer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Script TSQL==&lt;br /&gt;
&lt;br /&gt;
Singolo utente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT &#039;CREATE LOGIN [&#039; + name + &#039;] WITH PASSWORD = &#039; + &lt;br /&gt;
      MASTER.sys.fn_varbintohexstr(convert(varbinary(max),LOGINPROPERTY(name, &#039;PasswordHash&#039;))) + &#039; HASHED, &lt;br /&gt;
      DEFAULT_DATABASE = [&#039; + default_database_name + &#039;];&#039;&lt;br /&gt;
FROM sys.server_principals&lt;br /&gt;
WHERE type = &#039;S&#039; -- Tipo &#039;S&#039; per utenti SQL, usa &#039;U&#039; per utenti Windows&lt;br /&gt;
AND name = &#039;NomeUtente&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tutti gli utenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SET NOCOUNT ON;&lt;br /&gt;
&lt;br /&gt;
-- 1. Genera la creazione degli Utenti (mappati sui Login)&lt;br /&gt;
SELECT &#039;CREATE USER [&#039; + dp.name + &#039;] FOR LOGIN [&#039; + l.name + &#039;]&#039; &lt;br /&gt;
       + CASE WHEN dp.default_schema_name IS NOT NULL THEN &#039; WITH DEFAULT_SCHEMA=[&#039; + dp.default_schema_name + &#039;];&#039; ELSE &#039;;&#039; END AS [-- T-SQL Script]&lt;br /&gt;
FROM sys.database_principals dp&lt;br /&gt;
INNER JOIN sys.server_principals l ON dp.sid = l.sid&lt;br /&gt;
WHERE dp.type IN (&#039;S&#039;, &#039;U&#039;, &#039;G&#039;) AND dp.name NOT IN (&#039;dbo&#039;, &#039;guest&#039;, &#039;INFORMATION_SCHEMA&#039;, &#039;sys&#039;)&lt;br /&gt;
&lt;br /&gt;
UNION ALL&lt;br /&gt;
&lt;br /&gt;
-- 2. Genera l&#039;associazione ai Ruoli del Database (es. db_owner, db_datareader)&lt;br /&gt;
SELECT &#039;ALTER ROLE [&#039; + role_dp.name + &#039;] ADD MEMBER [&#039; + member_dp.name + &#039;];&#039;&lt;br /&gt;
FROM sys.database_role_members drm&lt;br /&gt;
INNER JOIN sys.database_principals role_dp ON drm.role_principal_id = role_dp.principal_id&lt;br /&gt;
INNER JOIN sys.database_principals member_dp ON drm.member_principal_id = member_dp.principal_id&lt;br /&gt;
WHERE member_dp.name NOT IN (&#039;dbo&#039;, &#039;guest&#039;, &#039;INFORMATION_SCHEMA&#039;, &#039;sys&#039;)&lt;br /&gt;
&lt;br /&gt;
UNION ALL&lt;br /&gt;
&lt;br /&gt;
-- 3. Genera i Privilegi espliciti sugli oggetti (GRANT SELECT, EXECUTE, ecc.)&lt;br /&gt;
SELECT &lt;br /&gt;
    dp.state_desc + &#039; &#039; + dp.permission_name + &#039; ON [&#039; + &lt;br /&gt;
    s.name + &#039;].[&#039; + o.name + &#039;] TO [&#039; + p.name + &#039;];&#039;&lt;br /&gt;
FROM sys.database_permissions dp&lt;br /&gt;
INNER JOIN sys.objects o ON dp.major_id = o.object_id&lt;br /&gt;
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id&lt;br /&gt;
INNER JOIN sys.database_principals p ON dp.grantee_principal_id = p.principal_id&lt;br /&gt;
WHERE p.name NOT IN (&#039;dbo&#039;, &#039;guest&#039;, &#039;INFORMATION_SCHEMA&#039;, &#039;sys&#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Utenti Orfani===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXEC sp_MSforeachdb &#039;&lt;br /&gt;
USE [?];&lt;br /&gt;
IF &#039;&#039;?&#039;&#039; NOT IN (&#039;&#039;master&#039;&#039;, &#039;&#039;model&#039;&#039;, &#039;&#039;msdb&#039;&#039;, &#039;&#039;tempdb&#039;&#039;)&lt;br /&gt;
BEGIN&lt;br /&gt;
    DECLARE @username NVARCHAR(255);&lt;br /&gt;
    DECLARE user_cursor CURSOR FOR &lt;br /&gt;
    SELECT dp.name &lt;br /&gt;
    FROM sys.database_principals dp&lt;br /&gt;
    LEFT JOIN sys.server_principals sp ON dp.sid = sp.sid&lt;br /&gt;
    WHERE dp.type IN (&#039;&#039;S&#039;&#039;, &#039;&#039;U&#039;&#039;) &lt;br /&gt;
      AND sp.sid IS NULL &lt;br /&gt;
      AND dp.name NOT IN (&#039;&#039;dbo&#039;&#039;, &#039;&#039;guest&#039;&#039;, &#039;&#039;INFORMATION_SCHEMA&#039;&#039;, &#039;&#039;sys&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
    OPEN user_cursor;&lt;br /&gt;
    FETCH NEXT FROM user_cursor INTO @username;&lt;br /&gt;
&lt;br /&gt;
    WHILE @@FETCH_STATUS = 0&lt;br /&gt;
    BEGIN&lt;br /&gt;
        -- Tenta di rimappare l&#039;&#039;utente al login omonimo sul nuovo server&lt;br /&gt;
        IF EXISTS (SELECT 1 FROM sys.server_principals WHERE name = @username)&lt;br /&gt;
        BEGIN&lt;br /&gt;
            PRINT &#039;&#039;Riappeso utente orfano: &#039;&#039; + @username + &#039;&#039; nel database [?]&#039;&#039;;&lt;br /&gt;
            EXEC (&#039;&#039;ALTER USER [&#039;&#039; + @username + &#039;&#039;] WITH LOGIN = [&#039;&#039; + @username + &#039;&#039;]&#039;&#039;);&lt;br /&gt;
        END&lt;br /&gt;
        FETCH NEXT FROM user_cursor INTO @username;&lt;br /&gt;
    END&lt;br /&gt;
&lt;br /&gt;
    CLOSE user_cursor;&lt;br /&gt;
    DEALLOCATE user_cursor;&lt;br /&gt;
END&lt;br /&gt;
&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6255</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6255"/>
		<updated>2026-06-15T12:11:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* sessioni bloccate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    s.session_id,&lt;br /&gt;
    s.login_name,&lt;br /&gt;
    s.host_name,&lt;br /&gt;
    s.program_name,&lt;br /&gt;
    s.status AS session_status,&lt;br /&gt;
    r.start_time,&lt;br /&gt;
    r.total_elapsed_time,&lt;br /&gt;
    r.wait_type,&lt;br /&gt;
    r.blocking_session_id,&lt;br /&gt;
    st.text AS query_text&lt;br /&gt;
 FROM sys.dm_exec_sessions AS s&lt;br /&gt;
 LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id&lt;br /&gt;
 LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st&lt;br /&gt;
 WHERE s.is_user_process = 1 -- Filtra solo i processi utente (esclude quelli di sistema)&lt;br /&gt;
 ORDER BY s.session_id;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6254</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6254"/>
		<updated>2026-06-15T11:50:51Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* spostamento datafiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
&lt;br /&gt;
==sessioni bloccate==&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    r.session_id AS [Sessione Bloccata],&lt;br /&gt;
    r.blocking_session_id AS [ID Bloccante],&lt;br /&gt;
    t.text AS [Query Bloccante],&lt;br /&gt;
    w.wait_type AS [Tipo di Attesa],&lt;br /&gt;
    w.wait_duration_ms AS [Durata Attesa (ms)]&lt;br /&gt;
 FROM sys.dm_exec_requests r&lt;br /&gt;
 JOIN sys.dm_os_waiting_tasks w ON r.session_id = w.session_id&lt;br /&gt;
 CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t&lt;br /&gt;
 WHERE r.blocking_session_id &amp;lt;&amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6253</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6253"/>
		<updated>2026-06-15T09:01:58Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==shrink datafiles e log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==spostamento datafiles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6252</id>
		<title>MSSQL varie</title>
		<link rel="alternate" type="text/html" href="http://www.emigar.com/wiki/index.php?title=MSSQL_varie&amp;diff=6252"/>
		<updated>2026-06-15T08:57:26Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Elenco files e spazio occupato */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==ricalcolo statistiche per database==&lt;br /&gt;
 use miudb&lt;br /&gt;
 go&lt;br /&gt;
 EXEC sp_updatestats;&lt;br /&gt;
 go&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Elenco files e spazio occupato==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SELECT &lt;br /&gt;
    d.name AS DatabaseName,&lt;br /&gt;
    f.name AS LogicalFileName,&lt;br /&gt;
    f.physical_name AS PhysicalFilePath,&lt;br /&gt;
    f.type_desc AS FileType,&lt;br /&gt;
    cast(f.size*8.0/1024.0 as float) mb,&lt;br /&gt;
    f.max_size,&lt;br /&gt;
    f.growth&lt;br /&gt;
 FROM &lt;br /&gt;
    sys.master_files AS f&lt;br /&gt;
 INNER JOIN &lt;br /&gt;
    sys.databases AS d ON f.database_id = d.database_id&lt;br /&gt;
    order by f.type_desc,f.size;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 select type_desc,cast(sum(size)*(8.0/1024) as float) as mb,count(*) as num from sys.master_files group by type_desc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Database]]&lt;br /&gt;
[[Categoria:MS SQL Server]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>