查看数据库表的数据量和SIZE大小的脚本修正
2016-05-12 14:31
211 查看
在使用桦仔的分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)的脚本时,遇到下面一些错误
这个是因为这些表的Schema是Maint,而不是默认的dbo,造成下面这段SQL在执行EXECsp_spaceused@tablename时出现Msg15009,Level16,State1,Proceduresp_spaceused,Line75Theobject'xxxx'doesnotexistindatabase'YourSQLDba'orisinvalidforthisoperation.
修正后的脚本如下所示
这个是因为这些表的Schema是Maint,而不是默认的dbo,造成下面这段SQL在执行EXECsp_spaceused@tablename时出现Msg15009,Level16,State1,Proceduresp_spaceused,Line75Theobject'xxxx'doesnotexistindatabase'YourSQLDba'orisinvalidforthisoperation.
DECLAREInfo_cursorCURSOR
FOR
SELECT'['+[name]+']'
FROMsys.tables
WHEREtype='U';
OPENInfo_cursor
FETCHNEXTFROMInfo_cursorINTO@tablename
WHILE@@FETCH_STATUS=0
BEGIN
INSERTINTO#tablespaceinfo
EXECsp_spaceused@tablename
FETCHNEXTFROMInfo_cursor
INTO@tablename
END
修正后的脚本如下所示
CREATETABLE#tablespaceinfo
(
nameinfoVARCHAR(500),
rowsinfoBIGINT,
reservedVARCHAR(20),
datainfoVARCHAR(20),
index_sizeVARCHAR(20),
unusedVARCHAR(20)
)
DECLARE@tablenameVARCHAR(255);
DECLAREInfo_cursorCURSOR
FOR
SELECT'['+s.[name]+']'+'.'+'['+t.[name]+']'
FROMsys.tablest
INNERJOINsys.schemassONt.schema_id=s.schema_id
WHEREtype='U';
OPENInfo_cursor
FETCHNEXTFROMInfo_cursorINTO@tablename
WHILE@@FETCH_STATUS=0
BEGIN
INSERTINTO#tablespaceinfo
EXECsp_spaceused@tablename
FETCHNEXTFROMInfo_cursor
INTO@tablename
END
CLOSEInfo_cursor
DEALLOCATEInfo_cursor
--创建临时表
CREATETABLE[#tmptb]
(
TableNameVARCHAR(50),
DataInfoBIGINT,
RowsInfoBIGINT,
SpaceperrowAS(CASERowsInfo
WHEN0THEN0
ELSECAST(DataInfoASdecimal(18,2))/CAST(RowsInfoASdecimal(18,2))
END)PERSISTED
)
--插入数据到临时表
INSERTINTO[#tmptb]
([TableName],
[DataInfo],
[RowsInfo]
)
SELECT[nameinfo],
CAST(REPLACE([datainfo],'KB','')ASBIGINT)AS'datainfo',
[rowsinfo]
FROM#tablespaceinfo
ORDERBYCAST(REPLACE(reserved,'KB','')ASINT)DESC
--汇总记录
SELECT[tbspinfo].*,
[tmptb].[Spaceperrow]AS'每行记录大概占用空间(KB)'
FROM[#tablespaceinfo]AStbspinfo,
[#tmptb]AStmptb
WHERE[tbspinfo].[nameinfo]=[tmptb].[TableName]
ORDERBYCAST(REPLACE([tbspinfo].[reserved],'KB','')ASINT)DESC
DROPTABLE[#tablespaceinfo]
DROPTABLE[#tmptb]
相关文章推荐
- PowerDesigner连接MySQL,建立逆向工程图解
- tomcat+nginx+redis实现均衡负载、session共享
- orace7.31_7.33临时表临时表,Trace日志, Insert 语句, 删除正在连接数据库的用户
- PostgresQL 数据库统计信息查看
- SQL知识点
- Ubuntu 14.04下mysql安装配置教程
- mysql语句2
- SQL创建表
- 7.30 Oracle Net管理错误
- 查询sqlserver 正在执行的sql语句的详细信息
- 查询sqlserver 正在执行的sql语句的详细信息
- 7.29 数据库函数
- SQL Server阻止保存修改表结构的解决方法
- 【转】ofbiz数据库表结构设计
- model 数据库
- Transact-SQL 语法约定 (Transact-SQL)
- 报错:Missing artifact.com.oracle:ojdbc14:10.0.2.0
- SQL生成周辅助表
- Mybatis SqlSessionTemplate 源码解析
- [mysql]throw exception