Sql Server enormi tabelle senza righe

Ho un database del server SQL che dispone di poche tabelle con un numero di righe zero, ma occupa un totale di 10 GB di spazio. Lo vedo facendo clic destro / properties; sulle tabelle in questione (lo spazio dei dati è enorme, tra 1 e 6 GB e il count delle righe è zero su queste tabelle). Non ho idea di ciò che potrebbe causare questo problema, come suppongo che zero righe avrebbero significato lo spazio quasi zero prese.

Qualche idea?

  • Shrink il file di dati di SQL Server, ma non tutti in una volta?
  • Problema con un volume 1tb corrotto: possiamo salvare i database SQL?
  • Chiamare sp_start_job da una stored procedure
  • SQL Server 2005 albind senza log di transactions - urgente!
  • SQL Server non mi consente di accedere
  • Mirroring database in server sql 2008
  • Come posso recuperare una tabella caduta da SQL Server Express 2005?
  • ShareWebDb_log.ldf è 97 GB - Come ridurre?
  • 6 Solutions collect form web for “Sql Server enormi tabelle senza righe”

    Ribuild tutti gli indici delle tabelle, incluso l'indice cluster. Dalle Libri in linea :

    Ricostruendo una goccia di indice e ricreata l'indice. Ciò rimuove la frammentazione, recupera lo spazio su disco comprimendo le pagine in base all'impostazione del fattore di riempimento specificato o esistente e riorganizza le righe di indice in pagine contigue.

    Qualcosa di simile a:

    ALTER INDEX ALL ON [lc_db_user].[JMS_MESSAGES] REBUILD 

    DBCC SHRINKDATABASE o (più preferito) DBCC SHRINKFILE farà solo qualcosa se lo spazio è stato effettivamente liberato dalla tabella stessa. Accertarsi inoltre di avere familiarità con le problematiche associate ai file di database di restringimento . Il riepilogo esecutivo: MAI non utilizzare automaticamente la restrizione, riducendo i file solo se necessario e seguendo sempre un reindex completo per deframmentare tutti gli indici che hai appena frammentato.

    Se il database conteneva molte righe di dati, i dati sono stati eliminati dalle tabelle, il motore di database non ridurrà i file. Ci sono comandi per farlo, dovrò cercare loro.

    UPDATE: Uno che ho usato in passato è DBCC SHRINKDATABASE, qui puoi trovare i dettagli di TechNet

    Non riesco a pubblicare uno screenshot, ma quello che faccio è fare clic con il button destro del mouse sulla tabella, passare alle properties; e in "Memorizzazione":

     Data space: 2,152.883 MB FileGroup: PRIMARY Index space: 0.063 MB Partition scheme: Row count: 0 Table is partitioned: False Text filegroup: PRIMARY 

    Quando faccio SELECT * sul tavolo non ottengo risultati.

    Ecco lo script CREATE (c'è un field image)

     CREATE TABLE [lc_db_usr].[JMS_MESSAGES]( [MESSAGEID] [int] NOT NULL, [DESTINATION] [varchar](150) NOT NULL, [TXID] [int] NULL, [TXOP] [char](1) NULL, [MESSAGEBLOB] [image] NULL, PRIMARY KEY CLUSTERED ( [MESSAGEID] ASC, [DESTINATION] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

    Questo è un po 'strano ma funziona:

    Inserisci una colonna fittizia come prima colonna della tabella, quindi salva la tabella.

    Infine, eliminare la nuova colonna e salvare nuovamente la tabella.

    Ora avrai sicuramente 0 byte utilizzati.

    Noel Paricollo

    Un altro modo per affrontare questo tipo di problema è usare l'istruzione TRUNCATE TABLE:

     TRUNCATE TABLE [lc_db_usr].[JMS_MESSAGES] 

    Ciò tuttavia funziona solo su tavole non referenziate da un vincolo FOREIGN KEY.

    Per ulteriori informazioni: http://msdn.microsoft.com/en-us/library/ms177570.aspx

    prova questo:

     alter table table_name rebuild; 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.