sp_spaceused альтернатива в SQL 2000 - PullRequest
0 голосов
/ 13 октября 2009

Как у нас есть альтернатива для таблицы sp_helpdb sp = sysdatabases,

Есть ли у нас альтернативная таблица для sp_spaceused sp в SQL Server 2000?

Привет

Manjot

Ответы [ 3 ]

0 голосов
/ 13 октября 2009

Вы всегда можете сделать sp_helptext sp_spaceused и лично убедиться в том, что он делает, откуда он получает данные. Вы также можете запустить и отобразить план выполнения, чтобы получить почти такой же результат.

Насколько я помню, в SQL 2000 используемое пространство извлекается из информации в sysindexes .

0 голосов
/ 10 октября 2017

Вы можете использовать это:

DBCC PDW_SHOWSPACEUSED ("TableName");

чтобы получить зарезервированное пространство, пространство данных, индексное пространство, неиспользуемое пространство, PDW_NODE_ID и идентификатор распределения таблицы.

Примечание: количество строк в результате всегда равно 60 из-за некоторых внутренних настроек.

0 голосов
/ 13 октября 2009

Не совсем - в SQL Server 2005 значительно улучшено управление системами благодаря схеме системного каталога "sys" и представлениям динамического управления, но в SQL Server 2000 вы весьма ограничены.

Вы можете использовать этот скрипт, чтобы проверить и собрать информацию об используемом пространстве и представить ее красиво - но он все еще использует sp_spaceused хранимый процесс в конце:

--************************************** 
-- Name: Get SQL Table Size - Table and Index Space - Row Count 
-- Description: This Script will return the row count and the amount of 
-- disk space that each table uses within a specifed database. 
-- When returning total disk space used, it breaks it up into 3 categories... 
-- 1. The amount used by data 
-- 2. The Amount used by indexes 
-- 3. The amount of unused space 

SET NOCOUNT ON 

DECLARE @cmdstr varchar(100) 
DECLARE @Sort bit 

SELECT @Sort = 0 /* Edit this value for sorting options */ 

--Create Temporary Table 
CREATE TABLE #TempTable 
    ([Table_Name] varchar(50), 
     Row_Count int, 
     Table_Size varchar(50), 
     Data_Space_Used varchar(50), 
     Index_Space_Used varchar(50), 
     Unused_Space varchar(50) ) 

--Create Stored Procedure String 
SELECT @cmdstr = 'sp_msforeachtable ''sp_spaceused "?"''' 

--Populate Tempoary Table 

INSERT INTO #TempTable 
    EXEC(@cmdstr) 

--Determine sorting method 

IF @Sort = 0 BEGIN 
    --Retrieve Table Data and Sort Alphabetically 
    SELECT * FROM #TempTable 
    ORDER BY Table_Name 
END 
ELSE BEGIN /*Retrieve Table Data and Sort by the size of the Table*/ 
    SELECT * 
    FROM #TempTable 
    ORDER BY Table_Size DESC 
END 

--Delete Temporay Table 
DROP TABLE #TempTable
...