* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 16, 2024, 09:37:50 pm

Inserisci il nome utente, la password e la durata della sessione.

58 Visitatori, 0 Utenti

Autore Topic: [OT] Compattare DB Microsoft Sql Server  (Letto 581 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
[OT] Compattare DB Microsoft Sql Server
« il: Maggio 24, 2023, 08:07:09 am »
Ciao a tutti,
mi hanno passato in DB in oggetto.
Ho fatto il ripristino, ed il DB occupava circa 1.7 Giga Bytes, il file di Log circa 300
Il DB conteneva circa 18.000 tabelle, quasi tutte contenenti dati. Di queste tabelle, ne ho cancellate circa 9.000

Arriviamo quindi alla domanda: come faccio a compattare il DB per recuperare lo spazio che prima occupavano le 9.000 tabelle che ho cancellato?
Ho visto parecchie guide, che consigliano questo:
- Aprire “Microsoft SQL Server Management Studio 18”
- Fare tasto destro sul DB, e poi Attività ==> Compatta ==> Database
 

Ci ho provato, ma la dimensione del file è diminuita di poco meno di 100 mega, quella del log niente

Grazie, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #1 il: Maggio 24, 2023, 09:59:06 am »
quando compatti devi compattare sia i dati (database e file) che il log

io uso questi script
Codice: [Seleziona]
USE [DATABASENAME]
GO
DBCC SHRINKFILE (N'DATABASENAME_log' , 0, TRUNCATEONLY)
GO

USE [DATABASENAME]
GO
DBCC SHRINKDATABASE(N'DATABASENAME' )
GO

USE [DATABASENAME]
GO
DBCC SHRINKFILE (N'DATABASENAME_file' , 0, TRUNCATEONLY)
GO
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #2 il: Maggio 24, 2023, 10:08:00 am »
Scusa, mi sono accorto adesso che in quello che ho scritto prima, mi sono dimenticato un pezzo ...

In effetti, avevo visto anche i comandi da lanciare tramite script, che poi si rifanno a quello che puoi impostare in Microsoft SQL Server Management Studio, ma c'è una cosa che non capisco, e di cui non ho trovato una spiegazione esaustiva: quel numero, dove tu hai messo 0, è spiegato qui:
https://learn.microsoft.com/it-it/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver16#target_size

Quello che non capisco è questo: io al momento ho un DB di circa un giga e 600 mega.
Se lancio i comandi che hai postato, quindi con valore 0, credo che il file venga ridotto fino al massimo alla dimensione prevista da chi lo aveva creato, che credo sia un giga e mezzo. Ho capito bene?
Volendo potrei mettere quel parametro ad esempio a 100, ma non ho capito in quel caso cosa succederebbe ai miei dati.

Provo a spiegarmi:
- supponiamo che la definizione delle tabelle, ed i dati che ci sono dentro occupino in tutto 500 mega
- lancio i comandi, mettendo come numero 100. Cosa succede? Rischio di perdere dei dati perché il valore che ho messo è troppo piccolo?

Grazie, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #3 il: Maggio 24, 2023, 10:11:09 am »
Ok, ho scritto una cavolata: nel link che ho postato prima, c'è la frase che probabilmente spiega il mio dubbio, e che prima non avevo notato:
Citazione
DBCC SHRINKFILE non compatta un file oltre le dimensioni dei dati archiviate necessarie. Ad esempio, se viene usato un file di dati da 10 MB a 7 MB, un'istruzione DBCC SHRINKFILE con un target_size di 6 riduce il file a solo 7 MB, non a 6 MB.

Ciao, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #4 il: Maggio 24, 2023, 11:37:39 am »
Niente da fare, al massimo lo riduce fino ad una dimensione di "1.776.222.208" bytes.
Oltre a quello non va ...

Vado a memoria: una decina di anni fa ho usato Firebird, e lì bastava fare un backup, creare il DB vuoto e poi ripristinare il backup sul DB vuoto per ottenere il ridimensionamento.
Funziona così anche col DB di Microsoft?

Grazie, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #5 il: Maggio 24, 2023, 12:26:55 pm »
si con firebird risolvi con backup/restore

prova a guardare nelle proprietà dei file (vedi allegato)
se clicchi sul bottone con i 3 puntini, si apre il dettaglio
probabilmente la dimensione è troppo grande, puoi cambiarla manualmente

se la modifica viene accettata, rifai la compattazione

Edit:
con MsSql il backup/restore è un po' diverso
non solo non compatta, ma si porta dietro anche i log
« Ultima modifica: Maggio 24, 2023, 12:29:03 pm da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #6 il: Maggio 24, 2023, 01:13:37 pm »
Niente da fare: mi fa fare la modifica, clicco su Ok e non da errori, ma se rientro, mi ritrovo 1694.
La cosa funziona invece sul file di log

A questo punto, credo che il problema sia quello che ho letto da qualche parte: chi ha creato il DB gli ha dato quella come dimensione minima, e sotto quel valore non ti fa scendere.

Grazie, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #7 il: Maggio 24, 2023, 02:52:45 pm »
Credo di averci capito qualcosa ...

Ecco cosa ho fatto:
- Ho attivato il profiler dul mio DB
- Entrato in “Microsoft SQL Server Management Studio 18”
- Selezionato il mio DB
- Tasto destro
- Report ==> Report standard ==> Utilizzo disco per tabella
- Quando ha finito, sono tornato nel profiler ed ho reperito la query

Ho lanciato la query, ed ho sommato la colonna "reserved"


A questo punto, ho preso la tabella col valore massimo in quella colonna e l'ho droppata

Rifacendo tutto, ho poi provato a ridurre le dimensioni del DB come mi aveva detto prima nomorelogic, e me lo ha fatto fare.
Credo, ma questa è solo una mia ipotesi che comunque la dimensione del DB sia sempre circa il doppio rispetto alla somma della colonna "reserved"

Ciao, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #8 il: Maggio 24, 2023, 05:37:09 pm »
si è possibile che l DB allochi più spazio fisico di quello che serve per motivi di prestazioni
ma questa cosa del reserved non la sapevo

nelle proprietà di cui parlavamo prima c'è anche come allocare nuovo spazio alla bisogna (in % o in MB)
forse anche quel parametro influisce, ma solo quando è il momento di ottenere nuovo spazio
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #9 il: Maggio 25, 2023, 07:55:47 am »
Mi sono appena accorto di avere il problema opposto su 2 DB che uso per fare prove: 8 mega di dati, e 120 di log  ;D :D
Oggi vedo se riesco a sistemare !

Ciao, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #10 il: Maggio 25, 2023, 09:08:37 am »
se i log non ti servono (come quasi sempre :D) puoi fare così:
1) compatta al massimo
2) vai su proprietà del DB e poi seleziona "opzioni"
sulla voce "Modello di recupero" facilmente trovi impostato "Con registrazione completa"
sostituisci con "con registrazione minima"
3) vai su proprietà / file e - per il log - togli l'espansione del file e metti le dimensioni massime

in questo modo dovresti bloccare i log ad una certa dimensione

Edit / NB:
se il DB è di tipo datawarehouse e normalmente lo vuoti completamente per ripopolarlo completamente ogni volta, non puoi evitare l'espansione automatica del log
questo perché quel tipo di transazioni sono veramente enormi e, se non c'è spazio per il log, fallisce tutto...
« Ultima modifica: Maggio 25, 2023, 09:13:11 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:[OT] Compattare DB Microsoft Sql Server
« Risposta #11 il: Maggio 25, 2023, 09:12:55 am »
Fatto, grazie !!!
Per tutti e 2, sono passato a 24 mega, di meno non mi fa fare, ma in ogni caso, è già un valore accettabile.

P.S. Sempre nelle opzioni, ho notato un "Compattazione automatica". L'ho impostato a True, e vediamo se fa il suo lavoro !!

Ciao, Mario

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 95
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 58
Total: 58

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.