【问题标题】:Querying total row size in KBs for SQL Server DB based on date根据日期查询 SQL Server DB 的总行大小(KB)
【发布时间】:2014-10-01 23:12:39
【问题描述】:

我已经上下搜索了这个,但我找不到如何查询一组行。

当我在数据库中查询行本身时,这很简单。

SELECT *
FROM dbo.[tablename]
WHERE CreatedDate < '2012-12-31-00:00:00'

但我不知道如何应用 sp_spaceused 之类的东西。

【问题讨论】:

  • 我假设您正在尝试获取返回的行集的“使用空间”?除了检查每列的数据长度(这将只提供客户端上的行集的大小)之外,没有任何东西可以为您提供已使用的磁盘空间。

标签: sql sql-server date size row


【解决方案1】:

我们需要对每一列的数据大小求和,如下所示

select SUM(datalength(col1))+SUM(datalength(col2))+.. from tableName
WHERE CreatedDate < '2012-12-31-00:00:00'

这是一个动态查询,它将获取表的列,然后将一行中每一列的大小相加并求和总大小。

declare @table nvarchar(20)
declare @whereClause nvarchar(50)
declare @sql nvarchar(max)

--initialize those two values
set @table = 'tableName'
set @whereClause = ' CreatedDate < ''2012-12-31-00:00:00'' '

set @sql = 'select ' + ' sum((0'

select @sql = @sql + ' + isnull(datalength(' + name + '), 1)' 
        from sys.columns where object_id = object_id(@table)
set @sql = @sql + ')) as totalSize from ' + @table + @whereClause 

select  @sql

exec (@sql)

【讨论】:

  • 谢谢,@Rajesh,第一个查询足以满足我的需要(我无法让第二个工作),尽管我必须消除 00:00:00 才能让它工作.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 2013-09-05
  • 1970-01-01
相关资源
最近更新 更多