在使用桦仔的分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)的脚本时,遇到下面一些错误

这个是因为这些表的Schema是Maint,而不是默认的dbo,造成下面这段SQL在执行EXEC sp_spaceused @tablename时出现

Msg 15009, Level 16, State 1, Procedure sp_spaceused, Line 75

The object 'xxxx' does not exist in database 'YourSQLDba' or is invalid for this operation.

DECLARE Info_cursor CURSOR

FOR

    SELECT  '[' + [name] + ']'

    FROM    sys.tables

    WHERE   type = 'U';  

 

OPEN Info_cursor  

FETCH NEXT FROM Info_cursor INTO @tablename  

 

WHILE @@FETCH_STATUS = 0

    BEGIN 

        INSERT  INTO #tablespaceinfo

                EXEC sp_spaceused @tablename  

        FETCH NEXT FROM Info_cursor  

    INTO @tablename  

    END 

修正后的脚本如下所示

CREATE TABLE #tablespaceinfo

    (

      nameinfo VARCHAR(500) ,

      rowsinfo BIGINT ,

      reserved VARCHAR(20) ,

      datainfo VARCHAR(20) ,

      index_size VARCHAR(20) ,

      unused VARCHAR(20)

    )  

 

DECLARE @tablename VARCHAR(255);  

 

DECLARE Info_cursor CURSOR

FOR

    SELECT  '[' + s.[name] +']' +'.' + '[' + t.[name] + ']'

    FROM    sys.tables t

    INNER JOIN sys.schemas s ON t.schema_id = s.schema_id 

    WHERE   type = 'U';  

 

 

OPEN Info_cursor  

FETCH NEXT FROM Info_cursor INTO @tablename  

 

WHILE @@FETCH_STATUS = 0

    BEGIN 

        INSERT  INTO #tablespaceinfo

                EXEC sp_spaceused @tablename  

        FETCH NEXT FROM Info_cursor  

    INTO @tablename  

    END 

 

CLOSE Info_cursor  

DEALLOCATE Info_cursor  

 

--创建临时表

CREATE TABLE [#tmptb]

    (

      TableName VARCHAR(50) ,

      DataInfo BIGINT ,

      RowsInfo BIGINT ,

      Spaceperrow  AS ( CASE RowsInfo

                         WHEN 0 THEN 0

                         ELSE CAST(DataInfo AS decimal(18,2))/CAST(RowsInfo AS decimal(18,2))

                       END ) PERSISTED

    )

 

--插入数据到临时表

INSERT  INTO [#tmptb]

        ( [TableName] ,

          [DataInfo] ,

          [RowsInfo]

        )

        SELECT  [nameinfo] ,

                CAST(REPLACE([datainfo], 'KB', '') AS BIGINT) AS 'datainfo' ,

                [rowsinfo]

        FROM    #tablespaceinfo

        ORDER BY CAST(REPLACE(reserved, 'KB', '') AS INT) DESC  

 

 

--汇总记录

SELECT  [tbspinfo].* ,

        [tmptb].[Spaceperrow] AS '每行记录大概占用空间(KB)'

FROM    [#tablespaceinfo] AS tbspinfo ,

        [#tmptb] AS tmptb

WHERE   [tbspinfo].[nameinfo] = [tmptb].[TableName]

ORDER BY CAST(REPLACE([tbspinfo].[reserved], 'KB', '') AS INT) DESC  

 

DROP TABLE [#tablespaceinfo]

DROP TABLE [#tmptb]

 

查看数据库表的数据量和SIZE大小的脚本修正的更多相关文章

  1. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  2. Mysql查看所有表的数据量

    ##查看所有表信息 SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'pcms-zgh20190327' ##查看各个表数据量 ...

  3. oracle查看所有表的数据量并排序

    源地址:http://blog.csdn.net/zhanggnol/article/details/6683697 select t.table_name,t.num_rows from user_ ...

  4. oracle查看所有表的数据量

    源地址:http://blog.csdn.net/zhanggnol/article/details/6683697 select t.table_name,t.num_rows from user_ ...

  5. oracle 查看所有表的数据量并排序

    select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; 还可以直接查看dblink的:select t.ta ...

  6. oracle和mysql如何快速查看每个表的数据量?

    oracle: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; mysql: use informa ...

  7. SQL查看数据库中每张表的数据量和总数据量

    查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...

  8. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  9. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

随机推荐

  1. 千呼万唤始出来:Apache Spark2.0正式发布

    我们很荣幸地宣布,自7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之前的痛点. 本文总结 ...

  2. 使用普通用户替代root来管理IEE

    环境:RHEL 6.4 + IEE 4.0.6 需求:IEE数据库之前是使用root用户部署和管理的,现在安全加固,将数据库交给普通用户iee来管理. 一.当前环境 二.安全加固 1.创建iee用户 ...

  3. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

  4. iOS中获取cell中webview的内容尺寸

    最近项目中遇到在cell中获取webView的内容的尺寸的需求 实现的思路其实很简单 就是通过执行js 获取尺寸即可 为了后面用着方便我直接封装了一个HTML的cell 起名就叫 STHTMLBase ...

  5. 文件权限及chmod使用方法

    文件权限 在linux在,由于安全控制需要,对于不同的文件有不现的权限,限制不同用户的操作权限,总共有rwxXst这一些权限,我们经常使用到的是rwx,对于文件和文件夹而言,他们代表着不同的含义 对于 ...

  6. 最基本的javascript native carousel (1)

    原理:主要运用z-index这个属性来设置图片的展示和隐藏,代码如下: <!DOCTYPE html> <html lang="en"> <head& ...

  7. JSON帮助类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. jQuery页面滚动右侧浮动导航切换

    体验效果:http://hovertree.com/texiao/jquery/49/ 效果图: 代码如下: <!DOCTYPE html> <html> <head&g ...

  9. org.hibernate.exception.SQLGrammarException: could not execute query

    SSH项目中出现了 org.hibernate.exception.SQLGrammarException: could not execute query 错误,仔细检查后发现,是把createQu ...

  10. 数三角形 bzoj 1201

    数三角形(1s 128MB)triangle [题目描述] 小苏看到一个这样的等边三角形:该等边三角形每边的长度为n且被分成n等份,于是每条边就有n-1个等分点.而整个三角形被连接两个不同边的等分点且 ...