giovedì 9 ottobre 2014

Estrarre il giorno della settimana dalla data da linea di comando

Certe volte è necessario, direttamente da linea di comando, inserire nel nome di un file il giorno della settimana, per esempio per distinguere i backup.

Sfortunatamente il comando DATE non visualizza il giorno della settimana se non modificando a livello di sistema il formato della data, ma la modifica potrebbe creare altri problemi ad altri programmi.

Di seguito il comando, da inserire in un batch, che restituisce in una variabile di sistema il giorno della settimana. Variabile da utilizzare nel formare il nome del file.
for /F %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /format:list ^| findstr "=" ') DO (set %%A )
Il comando attribuisce alla variabile DayofWeek il giorno della settimana. Esempio mercoledi = 3.

Di seguito un semplice batch per la copia distinta per giorno della settimana di un database di SqlServer

-------------------------------

rd /s /q c:\backupSQL
md c:\backupSQL
sqlcmd -U user -P password -S server -i c:\backupSQL.txt

for /F %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /format:list ^| findstr "=" ') DO (set %%A )


echo > \\nas\backupSQL\SIGLAPP-%DayOfWeek:~0,1%.BAK

xcopy c:\backupSQL\SIGLAPP.BAK \\nas\backupSQL\SIGLAPP-%DayOfWeek:~0,1%.BAK /Y


----------------------------------

NB. La riga "echo > \\nas\backupSQL\SIGLAPP-%DayOfWeek:~0,1%.BAK" crea il file di destinazione perchè altrimenti l'xcopy non trovando la destinazione si ferma chiedendo se si tratta di file o directory.

Testato su Windows Server 2012 e Windows 8.

fonte : http://stackoverflow.com/questions/11364147/setting-a-windows-batch-file-variable-to-the-day-of-the-week



Ricostruzione indici su Sql Server (REBUILD INDEX)

Sulle versioni Express di SqlServer non è presente la manutenzione del database dove è possibile fare un rebuild di tutti gli indici del database.

Di seguito uno script da eseguire manualmente o inserire nello script di backup.

Lo script fa un rebuild di tutti gli indici di tutti i database user, escludendo quindi i database di sistema.

fonte : http://www.mssqltips.com/sqlservertip/1367/sql-server-script-to-rebuild-all-indexes-for-all-tables-and-all-databases/

---------------------------------------------------
DECLARE @Database VARCHAR(255)  
DECLARE @Table VARCHAR(255)  
DECLARE @cmd NVARCHAR(500)  
DECLARE @fillfactor INT

SET @fillfactor = 90

DECLARE DatabaseCursor CURSOR FOR  
SELECT name FROM master.dbo.sysdatabases  
WHERE name NOT IN ('master','msdb','tempdb','model','distribution')  
ORDER BY 1  

OPEN DatabaseCursor  

FETCH NEXT FROM DatabaseCursor INTO @Database  
WHILE @@FETCH_STATUS = 0  
BEGIN  

   SET @cmd = 'DECLARE TableCursor CURSOR FOR SELECT ''['' + table_catalog + ''].['' + table_schema + ''].['' +
  table_name + '']'' as tableName FROM [' + @Database + '].INFORMATION_SCHEMA.TABLES
  WHERE table_type = ''BASE TABLE'''  

   -- create table cursor  
   EXEC (@cmd)  
   OPEN TableCursor  

   FETCH NEXT FROM TableCursor INTO @Table  
   WHILE @@FETCH_STATUS = 0  
   BEGIN  
       IF (@@MICROSOFTVERSION / POWER(2, 24) >= 9)
       BEGIN
           -- SQL 2005 or higher command
           SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
           EXEC (@cmd)
       END
       ELSE
       BEGIN
          -- SQL 2000 command
          DBCC DBREINDEX(@Table,' ',@fillfactor)  
       END

       FETCH NEXT FROM TableCursor INTO @Table  
   END  

   CLOSE TableCursor  
   DEALLOCATE TableCursor  

   FETCH NEXT FROM DatabaseCursor INTO @Database  
END  
CLOSE DatabaseCursor  
DEALLOCATE DatabaseCursor 


---------------------------------------------------






venerdì 3 ottobre 2014

Creazione documento PDF con Word - Attenzione ai font

Quando viene creato un PDF da Microsoft Word è necessario prestare attenzione al font utilizzato all'interno del documento altrimenti il documento PDF generato avrà una dimensione maggiore del previsto.
Questo perchè se il font utilizzato non è fra quelli predefiniti dallo standard PDF, Word incorpora il font dentro il file PDF.

Come si può notare dalla tabella, utilizzando il font standard di Word ( Calibri ), il file PDF risultante ha una dimensione di 83 Kb.
Utilizzando il font Arial, il file PDF risultante ha una dimensione di soli 3 Kb.


FontDim. DocxDim. PDF
Calibri13 Kb83 Kb
Arial13 Kb3 Kb