最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于查看MSSQL 數(shù)據(jù)庫 用戶每個表 占用的空間大小

 更新時間:2013年06月21日 10:42:48   作者:  
本篇文章是對查看MSSQL數(shù)據(jù)庫用戶每個表占用的空間大小進行了詳細的分析介紹,需要的朋友參考下
最近做項目需要查看數(shù)據(jù)用戶表的大小,包括記錄條數(shù)和占用的磁盤空間數(shù)目。在網(wǎng)上找了很久其中查看MSSQL數(shù)據(jù)庫每個表占用的空間大小 相對還可以。
不過它的2、3中方法返回的數(shù)據(jù)比較多,有些是我們不關(guān)心的數(shù)據(jù),我在AdventureWorks2012數(shù)據(jù)上做的測試。其中第二種方法代碼如下:
復(fù)制代碼 代碼如下:

View Code
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --創(chuàng)建結(jié)果存儲表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空數(shù)據(jù)表
declare @tablename varchar(255) --表名稱
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select o.name
from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
and o.name not like N'#%%' order by o.name
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
--itlearner注:顯示數(shù)據(jù)庫信息
sp_spaceused @updateusage = 'TRUE'
--itlearner注:顯示表信息
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

運行效果如圖:
 
很顯然這個返回結(jié)果是錯誤的。但是它提供了一種思路,修改后的SQL語句如下:
復(fù)制代碼 代碼如下:

View Code
IF NOT EXISTS ( SELECT  *
                FROM    sys.tables
                WHERE   name = 'tablespaceinfo' )
    BEGIN
        CREATE TABLE tablespaceinfo --創(chuàng)建結(jié)果存儲表
            (
              Table_Name VARCHAR(50) ,
              Rows_Count INT ,
              reserved INT ,
              datainfo INT ,
              index_size INT ,
              unused INT
            )
    END
DELETE  FROM tablespaceinfo
 --清空數(shù)據(jù)表
CREATE TABLE #temp --創(chuàng)建結(jié)果存儲表
    (
      nameinfo VARCHAR(50) ,
      rowsinfo INT ,
      reserved VARCHAR(20) ,
      datainfo VARCHAR(20) ,
      index_size VARCHAR(20) ,
      unused VARCHAR(20)
    )
DECLARE @tablename VARCHAR(255)
 --表名稱
DECLARE @cmdsql NVARCHAR(500)
DECLARE Info_cursor CURSOR
FOR
    SELECT  '[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']' AS Table_Name
    FROM    [INFORMATION_SCHEMA].[TABLES]
    WHERE   TABLE_TYPE = 'BASE TABLE'
            AND TABLE_NAME <> 'tablespaceinfo'
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @cmdsql = 'insert into #temp exec sp_spaceused ''' + @tablename
            + ''''
        EXECUTE sp_executesql @cmdsql
        FETCH NEXT FROM Info_cursor
INTO @tablename
    END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
--itlearner注:顯示數(shù)據(jù)庫信息
--sp_spaceused @updateusage = 'TRUE'
--itlearner注:顯示表信息
UPDATE  #temp
SET     reserved = REPLACE(reserved, 'KB', '') ,
        datainfo = REPLACE(datainfo, 'KB', '') ,
        index_size = REPLACE(index_size, 'KB', '') ,
        unused = REPLACE(unused, 'KB', '')
INSERT  INTO dbo.tablespaceinfo
        SELECT  nameinfo ,
                CAST(rowsinfo AS INT) ,
                CAST(reserved AS INT) ,
                CAST(datainfo AS INT) ,
                CAST(index_size AS INT) ,
                CAST(unused AS INT)
        FROM    #temp
DROP TABLE #temp
SELECT  Table_Name ,
        Rows_Count ,
        CASE WHEN reserved > 1024
             THEN CAST(reserved / 1024 AS VARCHAR(10)) + 'Mb'
             ELSE CAST(reserved AS VARCHAR(10)) + 'KB'
        END AS Data_And_Index_Reserved ,
        CASE WHEN datainfo > 1024
             THEN CAST(datainfo / 1024 AS VARCHAR(10)) + 'Mb'
             ELSE CAST(datainfo AS VARCHAR(10)) + 'KB'
        END AS Used ,
        CASE WHEN Index_size > 1024
             THEN CAST(index_size / 1024 AS VARCHAR(10)) + 'Mb'
             ELSE CAST(index_size AS VARCHAR(10)) + 'KB'
        END AS index_size ,
        CASE WHEN unused > 1024 THEN CAST(unused / 1024 AS VARCHAR(10)) + 'Mb'
             ELSE CAST(unused AS VARCHAR(10)) + 'KB'
        END AS unused
FROM    dbo.tablespaceinfo
ORDER BY reserved DESC

運行結(jié)果如圖:

同時他的第三種方法返回的數(shù)據(jù)太多,很多是我們不怎么關(guān)心的,原SQL語句如下:
復(fù)制代碼 代碼如下:

View Code

SELECT  OBJECT_NAME(id) tablename ,
 * reserved / 1024 reserved ,
        RTRIM(8 * dpages / 1024) + 'Mb' used ,
 * ( reserved - dpages ) / 1024 unused ,
 * dpages / 1024 - rows / 1024 * minlen / 1024 free ,
        rows
FROM    sysindexes
WHERE   indid = 1
ORDER BY reserved DESC


運行結(jié)果如圖:

這里面包含一些索引信息,其實我們只關(guān)心表占用磁盤信息,修改后的SQL語句如下:
復(fù)制代碼 代碼如下:

View Code
SELECT  OBJECT_NAME(id) tablename ,
        CASE WHEN reserved * 8 > 1024 THEN RTRIM(8 * reserved / 1024) + 'MB'
             ELSE RTRIM(reserved * 8) + 'KB'
        END DataReserve ,
        CASE WHEN dpages * 8 > 1024 THEN RTRIM(8 * dpages / 1024) + 'MB'
             ELSE RTRIM(dpages * 8) + 'KB'
        END Used ,
        CASE WHEN 8 * ( reserved - dpages ) > 1024
             THEN RTRIM(8 * ( reserved - dpages ) / 1024) + 'MB'
             ELSE RTRIM(8 * ( reserved - dpages )) + 'KB'
        END unused ,
        CASE WHEN ( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 ) > 1024
             THEN RTRIM(( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 )
                        / 1024) + 'MB'
             ELSE RTRIM(( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 ))
                  + 'KB'
        END FREE ,
        rows AS Rows_Count
FROM    sys.sysindexes
WHERE   indid = 1
        AND status = 2066 -- status='18'
ORDER BY reserved DESC

運行結(jié)果如下:

有不對的地方歡迎大家拍磚!

相關(guān)文章

  • php addslashes及其他清除空格的方法是不安全的

    php addslashes及其他清除空格的方法是不安全的

    清除空格的方法是不安全的,部分原因是因為字符中的空格非常多,例如 addslashes的問題在 于黑客 可以用0xbf27來代替單引號
    2012-01-01
  • PHP常量使用的幾個需要注意的地方(謹慎使用PHP中的常量)

    PHP常量使用的幾個需要注意的地方(謹慎使用PHP中的常量)

    常量包含數(shù)字字母字符和下劃線,數(shù)字允許作為常量名。 常量名的所有字母必須大寫。類常量必須通過 const 定義為類的成員,強烈不鼓勵使用 define 定義的全局常量
    2014-09-09
  • PHP的JSON封裝、轉(zhuǎn)變及輸出操作示例

    PHP的JSON封裝、轉(zhuǎn)變及輸出操作示例

    這篇文章主要介紹了PHP的JSON封裝、轉(zhuǎn)變及輸出操作,結(jié)合實例形式分析了php常見的json封裝、解析、打印輸出相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • PHP細數(shù)實現(xiàn)提高并發(fā)能力的方法

    PHP細數(shù)實現(xiàn)提高并發(fā)能力的方法

    這篇文章主要介紹了PHP提高并發(fā)能力有哪些方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 如何使用PHP批量去除文件UTF8 BOM信息

    如何使用PHP批量去除文件UTF8 BOM信息

    如果PHP文件頭部包含BOM信息,就會輸出一個空白,在很多時候會帶來問題,比如我們session無法工作、cookie無法設(shè)置等等問題
    2013-08-08
  • PHP在linux上執(zhí)行外部命令的方法

    PHP在linux上執(zhí)行外部命令的方法

    下面小編就為大家?guī)硪黄狿HP在linux上執(zhí)行外部命令的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • PHP屏蔽過濾指定關(guān)鍵字的方法

    PHP屏蔽過濾指定關(guān)鍵字的方法

    這篇文章主要介紹了PHP屏蔽過濾指定關(guān)鍵字的方法,包含了字符串的過濾處理與數(shù)組的遍歷等技巧,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • 解讀PHP中的垃圾回收機制

    解讀PHP中的垃圾回收機制

    這篇文章主要介紹了解讀PHP中的垃圾回收機制,是否擁有GC功能是一門編程語言開發(fā)的重要關(guān)注點,需要的朋友可以參考下
    2015-08-08
  • PHP擴展程序?qū)崿F(xiàn)守護進程

    PHP擴展程序?qū)崿F(xiàn)守護進程

    守護進程就是在后臺一直運行的進程。比如我們啟動的httpd,mysqld等進程都是常駐內(nèi)存內(nèi)運行的程序。,下面我們就來探討下,如何使用php來實現(xiàn)守護進程
    2015-04-04
  • PHP 獲取某年第幾周的開始日期和結(jié)束日期的實例

    PHP 獲取某年第幾周的開始日期和結(jié)束日期的實例

    下面小編就為大家分享一篇PHP 獲取某年第幾周的開始日期和結(jié)束日期的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

铜梁县| 余庆县| 苏州市| 横峰县| 墨竹工卡县| 旺苍县| 泾川县| 西宁市| 嘉定区| 宕昌县| 景泰县| 江津市| 汤阴县| 静乐县| 陵水| 乐山市| 莱西市| 察雅县| 靖宇县| 洱源县| 论坛| 日照市| 乌什县| 永川市| 桂东县| 通辽市| 万年县| 建德市| 昌平区| 福州市| 青州市| 泗洪县| 镇坪县| 阳原县| 亳州市| 阿瓦提县| 成安县| 高碑店市| 杭锦旗| 安远县| 乐山市|