Sim*_*dri 3 sql sql-server stored-procedures
我需要为我的数据库中的所有表执行存储过程sp_spaceused.我已经使用了光标,请找到以下查询.事情是我需要在单个结果集中生成报告.对于以下查询,我得到了不同的结果.
Declare @Name Varchar(500)
Declare @GetName Cursor
Set @Getname = Cursor for
select name from sys.tables
Open @Getname
Fetch Next From @Getname into @Name
While @@Fetch_Status=0
Begin
exec sp_spaceused @Name
Fetch Next From @Getname into @Name
End
Close @GetName
Deallocate @GetName
Run Code Online (Sandbox Code Playgroud)
您可以使用类似下面的内容(数据类型可能需要调整).
编辑:请参阅Joe的答案,了解正确使用的数据类型!
create table #t
(
name sysname,
rows bigint,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)
)
EXEC sp_MSForEachtable 'insert into #t EXEC sp_spaceused ''?'''
select name,rows,reserved,data,index_size,unused
from #t
Run Code Online (Sandbox Code Playgroud)