Ho un database di sviluppo di SQL Server 2005 che è una copia di 30 GB di live. Abbiamo eliminato alcuni dati non necessari in dev, il che porta lo spazio del file di dati utilizzato a 20 GB. Quindi abbiamo circa il 33% inutilizzato.
Ho bisogno di recuperare lo spazio, che ci permetterà di avere un secondo DB di sviluppo sul server (basato sulla versione ridotta); tuttavia, non posso recuperare lo spazio, ho fatto quanto segue:
La dimensione iniziale del file
SMS2_Data
è di 30 GB.DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY)
seguito da
DBCC SHRINKFILE (N'SMS2_Data' , 19500)
Nessuna gioia. Ho provato a fare un backup, creando un nuovo DB con una dimensione iniziale bassa quindi ripristinando, senza gioia poiché la dimensione iniziale viene sovrascritta. Hanno anche provato:
ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000)
Ciò ha errato, dicendo:
MODIFICA FILE non riuscito. La dimensione specificata è inferiore alla dimensione corrente.
Ho provato il 20800 e poi ho continuato a salire fino a 29000 (29GB) e ancora non mi permette di cambiarlo.
Hanno fatto lo strizzacervelli poi cambiato la modalità di recupero da FULL
a SIMPLE
e viceversa. Nessuna gioia.
Ho pensato che avesse a che fare con alcuni TEXT
campi. Ne abbiamo circa 6 in tutto il sistema. Quindi come test li ho lasciati tutti e poi ho fatto un restringimento del file e ancora nessun cambiamento.
L'unica opzione rimasta è reimportare i dati su un altro DB. Questo non è pratico, come dovrebbe essere fatto sul DB live, che comporta troppi rischi. Prendiamo semi-regolarmente una copia del DB live e sovrascriviamo dev / test. Abbiamo qualcosa come 500 tavoli. Vorrei un modo di farlo che non avrebbe il rischio di esportare dati in un nuovo DB.
Ho provato a spostare i dati in un altro file e ho copiato tutto tranne il 5% dei dati. Questo è ciò che mi ha portato a provare a eliminare tutte le colonne di testo.
Il server è in modalità compatibilità 90, ma è SP2. Ora ho fatto le seguenti 3 volte: reindicizzare tutte le tabelle, il database di backup, il file di riduzione, il database di riduzione. Ancora nessuna gioia.
EXECUTE sp_spaceused
ritorna:
database_name database_size unallocated space
SMS2Tests 31453.94 MB 13903.16 MB
reserved data index_size unused
16545568 KB 10602264 KB 4254360 KB 1688944 KB