各位大侠:我这边有一个sql server2000数据库,现在的现象是从管理界面上看还有50G的空间,可是从命令查看却只有0G的空间,不知道造成这种现象的原因是什么?

解决方案 »

  1.   

    sp_spaceused
    显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。语法
    sp_spaceused [[@objname =] 'objname']
        [,[@updateusage =] 'updateusage']参数
    [@objname =] 'objname'是为其请求空间使用信息(保留和已分配的空间)的表名。objname 的数据类型是 nvarchar(776),默认设置为 NULL。[@updateusage =] 'updateusage'表示应在数据库内(未指定 objname 时)还是在特定的对象上(指定 objname 时)运行 DBCC UPDATEUSAGE。值可以是 true 或 false。updateusage 的数据类型是 varchar(5),默认设置为 FALSE。返回代码值
    0(成功)或 1(失败)结果集
    如果省略 objname,则返回两个结果集。列名 数据类型 描述 
    database_name varchar(18) 当前数据库的名称。 
    database_size varchar(18) 当前数据库的大小。 
    unallocated space varchar(18) 数据库的未分配空间。 列名 数据类型 描述 
    reserved varchar(18) 保留的空间总量。 
    Data varchar(18) 数据使用的空间总量。 
    index_size varchar(18) 索引使用的空间。 
    Unused varchar(18) 未用的空间量。 
    如果指定参数,则返回下面的结果集。列名 数据类型 描述 
    Name nvarchar(20) 为其请求空间使用信息的表名。 
    Rows char(11) objname 表中现有的行数。 
    reserved varchar(18) 为 objname 表保留的空间总量。 
    Data varchar(18) objname 表中的数据所使用的空间量。 
    index_size varchar(18) objname 表中的索引所使用的空间量。 
    Unused varchar(18) objname 表中未用的空间量。 
    注释
    sp_spaceused 计算数据和索引使用的磁盘空间量以及当前数据库中的表所使用的磁盘空间量。如果没有给定 objname,sp_spaceused 则报告整个当前数据库所使用的空间。当指定 updateusage 时,Microsoft® SQL Server™ 扫描数据库中的数据页,并就每个表使用的存储空间对 sysindexes 表作出任何必要的纠正。例如会出现这样一些情况:当除去索引后,表的 sysindexes 信息可能不是当前的。该进程在大表或数据库上可能要花一些时间运行。只有当怀疑所返回的值不正确,而且该进程对数据库中的其它用户或进程没有负面影响时,才应使用该进程。如果首选该进程,则可以单独运行 DBCC UPDATEUSAGE。权限
    执行权限默认授予 public 角色。示例
    A. 有关表的空间信息
    下例报告为 titles 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。USE pubs
    EXEC sp_spaceused 'titles'B. 有关整个数据库的已更新空间信息
    下例概括当前数据库使用的空间并使用可选参数 @updateusage。 USE pubs
    sp_spaceused @updateusage = 'TRUE'权限
    执行权限默认授予 public 角色。
      

  2.   

    我就是用的sp_spaceused 这个语句的。
    昨天分配了50G,然后从管理界面看还有100G,执行语句来查看剩下50G空间。这个应该是没有问题的。怎么可以上传图,让您看看
      

  3.   

    应该是刷新的问题试试这个:use dbname
    go
    EXEC sp_spaceused null,true
      

  4.   

    执行下面语句
    use dbname
    go
    EXEC sp_spaceused null,true对数据库有影响么?