找出驱动器上存储SQL表的位置

时间:2013-12-09 21:06:11

标签: sql sql-server sql-server-2008 ssms

我在数据库中有一些巨大的表。它们分为多个文件组。我通过右键单击并查看数据库属性来检查这些文件组的位置。但其中一些文件组存储在多个驱动器上。

基本上我有一个存储在文件组ARCHIVE上的表ABC,存储在D:\ Archive,E:\ Archive,H:\ Archive等等。有没有办法可以找出ABC存储在驱动器上的位置?

我需要这个信息,因为其中一个驱动器已满,我不确定哪些不必要的表存储在它上面所以我可以摆脱它们。我正在使用SSMS 2008。

2 个答案:

答案 0 :(得分:1)

似乎表可以存在于文件组中的多个数据文件中。所以我不确定你是否能真正找到表存储在驱动器上的位置,因为它可以存储在多个数据文件的各个部分中。

来源:https://dba.stackexchange.com/a/42680

  

文件组中的对象将使用文件组中的所有数据文件。任何   FG1中的表同样驻留在Datafile1,Datafile2和Datafile3上。如果   您需要控制创建不同文件组所需的位置。   要从文件组中删除文件,请使用DBCC SHRINKFILE EMPTYFILE

答案 1 :(得分:0)

看一下我写的小实用程序存储过程,以获取详细的数据库信息。

http://craftydba.com/?p=3905

它基本上在每个数据库上都有一个sp_heldb。它在有限数量的数据库上使用游标。

大量信息。如果您只想要文件信息,请将呼叫更改为

select * from sys.dastabase_files

(可选)将信息写入临时表,例如我的usp_who2实用程序。

http://craftydba.com/wp-content/uploads/2011/09/usp-who2.txt

然后,您可以使用SELECT语句对数据进行切片和切块。

PS:Aaron有一个很好的建议,干净的房子在运行之前。