已经知道使用sp_spaceused可以实现我的目的,可如何得到该函数结果集中的数据呢?因为我要用这个数据作为条件来进行下面的操作。
-----------------------------------------
结果集:   列名                数据类型          描述 
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)   为数据库中的对象保留但尚未使用的空间总量。 

解决方案 »

  1.   

    --在前台中调用嘛
    rs.open "exec sp_spaceused",conn
      

  2.   

    看一下master库中的sysaltfiles表.sysaltfiles
    在特殊情况下,包含与数据库中的文件相对应的行。该表存储在 master 数据库中。列名    数据类型     描述 
    fileid  smallint     每个数据库的唯一文件标识号。 
    groupid smallint     文件组标识号。 
    size    int          文件大小(以 8 KB 页为单位)。(******) 
    maxsize int          最大文件大小(以 8 KB 页为单位)。0 值表示不增长,–1 值表示文件应一直增长到磁盘已满。 
    growth   int         数据库的增长大小。0 值表示不增长。根据状态的值,可以是页数或文件大小的百分比。如果 status 为 0x100000,则 growth 是文件大小的百分比;否则是页数。  
    status   int          仅限内部使用。 
    perf     int          保留。 
    dbid     smallint     该文件所属数据库的数据库标识号。 
    name     nchar(128)   文件的逻辑名称。 
    filename nchar(260)   物理设备的名称,包括文件的完整路径。 
      

  3.   

    to caiyajun512(cyj) :
    我想要的是制定数据库中还剩余的空间,而在sysaltfiles表中存放的是总空间,所以你的方法不适用,不过还是要谢谢你。
      

  4.   

    大家帮我看看下面的存储过程该怎么改:
    ------------------------------------------------------------------
    USE pubs
    GODECLARE 
    @Freespace FLOAT(10)DECLARE Space_cursor CURSOR 
    FOR SELECT unallocated space FROM EXEC sp_spaceusedOPEN Space_cursorFETCH NEXT FROM Space_cursor
    INTO @Freespaceif (@Freespace<1)
    PRINT '空间不足!'
    ------------------------------------------------------------------
    我的意思就是 怎么把 unallocated space 送入 @Freespace中?
      

  5.   

    看了一些帖子之后,重新改写了,可仍然有错误,请大家帮我看看
    -----------------------------------
    USE pubs
    GOCREATE TABLE #tmp
    (
    database_name varchar(18),
    database_size     varchar(18),
    unallocated_space varchar(18)
    )INSERT INTO #tmp 
    EXEC sp_spaceusedDECLARE Freespace CURSOR
    FOR 
    SELECT database_name 
    FROM #tmpOPEN FreespaceFETCH NEXT FROM Freespace WHILE @@FETCH_STATUS=0
    BEGIN
    FETCH NEXT FROM Freespace
    ENDCLOSE Freespace
    DEALLOCATE Freespace
    GODROP TABLE #tmp
    GO服务器: 消息 213,级别 16,状态 7,过程 sp_spaceused,行 196
    插入错误: 列名或所提供值的数目与表定义不匹配。
    -----------------------------------
      

  6.   

    再看看sysaltfiles表
    size    int          文件大小(以 8 KB 页为单位)。(******) 
    maxsize int          最大文件大小(以 8 KB 页为单位)。0 值表示不增长,–1 值表示文件应一直增长到磁盘已满。 
    growth   int         数据库的增长大小。0 值表示不增长。根据状态的值,可以是页数或文件大小的百分比。如果 status 为 0x100000,则 growth 是文件大小的百分比;否则是页数。  
    你指定maxsize。数据库中还剩余的空间=maxsize*8kb-size*8kb
      

  7.   

    用sp_spaceusedset nocount on
    DECLARE @logsize int
    DECLARE @bytesperpage int
    DECLARE @dbsize int
    DECLARE @pagesperMB intselect @dbsize=sum(convert(dec(15),size)) 
    from dbo.sysfiles where (status & 64 = 0) select @logsize=sum(convert(dec(15),size))    
    from dbo.sysfiles    where (status & 64 <> 0) select @bytesperpage = low    
    from master.dbo.spt_values    where number = 1     and type = 'E' select @pagesperMB = 1048576 / @bytesperpageselect  database_name = db_name(),    
    database_size = ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB'), 
    'unallocated space' = ltrim(str((@dbsize -
    (select sum(convert(dec(15),reserved))  
    from sysindexes where indid in (0,1,255)))/
     @pagesperMB,15,2)+ ' MB') ------------------------------------------------
    database_name   database_size   unallocated space  
    -------------   --------------  ------------------ 
    pubs             4.00 MB          1.02 MB
    -------------------------------------------------------你去试试!写进存储过程。
      

  8.   

    EXEC sp_spaceused @updateusage = 'True'返回两个结果集!!!!!!!
      

  9.   

    to: caiyajun512(兄弟们加油) ( ) 信誉:100 
    不错,不错,赞一个。
      

  10.   

    昨晚夜里才出差回来,所以一直没有上线,辛苦各位了,我的问题已经基本解决,不过以下几个问题还望各位继续指点一二:
      1、使用sp_spaceused获取的只是data文件的大小及可用空间大小,如何获取log文件的呢?因为在使用的后期log文件的大小是很吓人的。
      2、若将data和log文件的大小定长,会对系统的运行有影响吗?
      3、将数据库设置为“自动压缩”,其执行操作的周期是多长时间?其执行时会将我原来的数据自动删除吗?
    这些在帮助里我没有查到:S,还望大家积极讨论,分数我会加分,或再开贴的,还望各位积极参与呀!!