2009-07-10 5 views
2

Je veux supprimer un fichier maintenant soi-disant redondant dans SQL Server (2005), mais lorsque j'essaie de le supprimer, on me dit que le fichier n'est pas vide. Est-ce que quelqu'un sait d'une manière de trouver quelles données sont toujours dans ce dossier ainsi je peux faire tous les changements dont j'ai besoin pour me permettre de le laisser tomber?Comment puis-je savoir quelles tables contiennent des données dans un fichier dans SQL Server?

+0

Que voulez-vous dire par "fichier"? C'est une table ou une base de données? –

+0

@Oleg. Un fichier dans SQL Server est juste cela: un fichier sur le système d'exploitation. – gbn

+0

Comme sqlservr.exe ou master.mdf? –

Répondre

4

En supposant que vous déplaciez la table etc, vous aurez probablement besoin d'exécuter:

DBCC SHRINKFILE (MyLogicalFile, EMPTYFILE) --EMPTYFILE is the important bit!! 

Voir DBCC SHRINKFILE

Pour vérifier (ce qui est un cut'n'paste d'un script d'utilisation I utilisation):

SELECT 
    ds.[name] AS LogicalFileName, 
    OBJECT_NAME(p.object_id) AS Thing, 
    SUM(au.total_pages)/128.0 AS UsedMB, 
    df.size/128 AS FileSizeMB, 
    100.0 * SUM(au.total_pages)/df.size AS PercentUsed 
FROM 
    sys.database_files df 
    JOIN 
    sys.data_spaces ds ON df.data_space_id = ds.data_space_id 
    JOIN 
    sys.allocation_units au ON ds.data_space_id = au.data_space_id 
    JOIN 
    sys.partitions p ON au.container_id = p.hobt_id 
WHERE 
    OBJECTPROPERTYEX(p.object_id, 'IsMSShipped') = 0 
GROUP BY 
    ds.[name], OBJECT_NAME(p.object_id), df.size 
ORDER BY 
    ds.[name] 
Questions connexes