sp_spaceused
主题上次更新时间 -- 2004 年 1 月显示当前数据库中某个表的行数、由它保留和使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。语法
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(128) 当前数据库的名称。
database_size varchar(18) 当前数据库的大小。
unallocated space varchar(18) 数据库中未保留用于数据库对象的空间。 列名 数据类型 描述
reserved varchar(18) 保留的空间总量。
data varchar(18) 数据使用的空间总量。
index_size varchar(18) 索引使用的空间总量。
unused varchar(18) 为数据库中的对象保留但尚未使用的空间总量。
如果指定了 objname,则返回针对指定表的结果集。列名 数据类型 描述
name nvarchar(128) 为其请求空间使用信息的表名。
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 角色。只有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员可以指定 @updateusage 参数。示例
A. 有关表的空间信息
下例报告为 titles 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。USE pubs
EXEC sp_spaceused 'titles'B. 有关整个数据库的已更新空间信息
下例概括当前数据库使用的空间并使用可选参数 @updateusage。 USE pubs
sp_spaceused @updateusage = 'TRUE'
主题上次更新时间 -- 2004 年 1 月显示当前数据库中某个表的行数、由它保留和使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。语法
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(128) 当前数据库的名称。
database_size varchar(18) 当前数据库的大小。
unallocated space varchar(18) 数据库中未保留用于数据库对象的空间。 列名 数据类型 描述
reserved varchar(18) 保留的空间总量。
data varchar(18) 数据使用的空间总量。
index_size varchar(18) 索引使用的空间总量。
unused varchar(18) 为数据库中的对象保留但尚未使用的空间总量。
如果指定了 objname,则返回针对指定表的结果集。列名 数据类型 描述
name nvarchar(128) 为其请求空间使用信息的表名。
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 角色。只有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员可以指定 @updateusage 参数。示例
A. 有关表的空间信息
下例报告为 titles 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。USE pubs
EXEC sp_spaceused 'titles'B. 有关整个数据库的已更新空间信息
下例概括当前数据库使用的空间并使用可选参数 @updateusage。 USE pubs
sp_spaceused @updateusage = 'TRUE'
解决方案 »
- 数据按要求分组
- 在此上下文中不允许使用名称 "运行"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。我是在函数中写的,函数可以存进去用存储过程来执行?
- 请请问大家一条SQL语句的语法错在哪里
- 同时删除两张表
- 帮帮忙 拜托
- SQL-Server200安装问题
- 怎么实现强制还原数据库?
- 在精华区中我看见如下内容"UPDATE master..sysdatabases SET status=0 WHERE name='dbname'"
- *.pbl(power builder)文件如何打开?或者是如何用?
- 如何判断是在何种情况下触发触发器
- 再谈数据库的备份?各位高手请进
- 这样的查询语句如何写?
请问,我如何得到该函数结果集中的数据呢?因为我要用这个数据作为条件来进行下面的步骤。
rs.open "exec sp_spaceused",conn
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中?
-----------------------------------
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
插入错误: 列名或所提供值的数目与表定义不匹配。
-----------------------------------
DDBC SHRINKDATABASE 的结果集又该如何来取呢?
1、使用sp_spaceused获取的只是data文件的大小及可用空间大小,如何获取log文件的呢?因为在使用的后期log文件的大小是很吓人的。
2、若将data和log文件的大小定长,会对系统的运行有影响吗?
3、将数据库设置为“自动压缩”,其执行操作的周期是多长时间?其执行时会将我原来的数据自动删除吗?
这些在帮助里我没有查到:S,还望大家积极讨论,分数我会加分,或再开贴的,还望各位积极参与呀!!