2013-05-10 16 views
2

我需要使用ODBC連接來查找SQL Server數據庫中可用空間的相對數量。如何使用ODBC檢索'DBCC SHOWFILESTATS'的結果?

我想嘗試使用dbcc showfilestats但它不返回任何結果。

閱讀INF: Processing DBCC Commands in ODBC applications我明白這是因爲這不是一個選擇語句。令我感到困惑的是,聲明也沒有返回任何信息(與論文相反)。

我還使用臨時表的嘗試:

declare @FileStats table 
(
    Fileid int, 
    [FileGroup] int, 
    TotalExtents int, 
    UsedExtents int, 
    Name varchar(255), 
    [FileName] varchar(max) 
) 
insert into @FileStats execute('dbcc showfilestats') 

,並選擇從該表在同一個SQLExecDirect的。

select 
    1-convert(float, sum(UsedExtents))/convert(float, sum(TotalExtents)) 
    as FreeDataSpace from @FileStats 

這隻會導致錯誤24000(並且我確信沒有其他開放語句)。

有沒有其他方法來檢索這些信息?

回答

3

顯然總有一種替代方法可以做某些事情。

什麼最終爲我工作是:

SELECT convert(float, (sum(f.size) - sum(fileproperty(f.name,'SpaceUsed'))))/sum(f.size) 
FROM sys.sysfiles f JOIN sys.database_files db_f ON f.fileid = db_f.file_id 
WHERE db_f.type = 0 

它是通過ODBC當在Management Studio執行提供了相同的結果。我原來的解決方案。