skip to main |
skip to sidebar
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
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
---------------------------------------------------
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.
Font | Dim. Docx | Dim. PDF |
Calibri | 13 Kb | 83 Kb |
Arial | 13 Kb | 3 Kb |