実際、システムの組み込みストアド プロシージャ sp_spaceused を使用する限り、テーブル関連の情報を取得できます
例: sp_spaceused 'tablename'
以下は、便宜上、現在のすべてのストアド プロシージャを保存することを目的としています。指定されたテーブル内のテーブル関連情報
CREATE PROCEDURE get_tableinfo AS
存在しない場合 (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') および OBJECTPROPERTY(id, N') IsUserTable') = 1)
create table tablespaceinfo -- 結果格納テーブルの作成
(nameinfo varchar(50) 、
rowsinfo int 、reserved varchar(20) 、
datainfo varchar(20) 、
Index_size varchar(20) 、
used varchar(20))
tablespaceinfoからのdeleteデータテーブルを明確にする
declare@tablename varchar(255) - テーブル名
declare@cmdsql varchar(500)
dbo.sysobjects o から、OBJECTPRO PERTY (o.id, N'IsTable') = 1
および o.name が N'#%%' と異なる場合は、o.name で並べ替えます
Info_cursor を開く
Info_cursor から次を取得する
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
存在する場合 (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
sp_executesql を実行
N 'insert into tablespaceinfo exec sp_spaceused @tbname' ,
N'@tbname varchar(255)',
@tbname = @tablename
Info_cursor から NEXT を取得
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_カーソル
GO
ストアドプロシージャの実行
exec get_tableinfo
Query ストアドプロシージャ実行後の結果
select *
from tablespaceinfo
order by Cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) int として) 記述
http://www.bkjia.com/PHPjc/631066.html
www.bkjia.com
http://www.bkjia.com/PHPjc/631066.html