我的一个DB已经越来越接近允许的大小.
为了找出包含最大数据的表,我使用了以下查询:
exec sp_MSforeachtable @command1="print '?' exec sp_spaceused '?'"
它返回了包含最大数据的罪魁祸首表.
下一步,我想根据大小清理行.为此,我想根据大小订购行.
如何使用查询实现此目的?有没有工具可以做到这一点?
解决方法
这将按行大小给出一个行列表,只需相应地设置@table和@idcol(如同写入它将针对Northwind示例运行)
declare @table varchar(20) declare @idcol varchar(10) declare @sql varchar(1000) set @table = 'Employees' set @idcol = 'EmployeeId' set @sql = 'select ' + @idcol +',(0' select @sql = @sql + ' + isnull(datalength(' + name + '),1)' from syscolumns where id = object_id(@table) set @sql = @sql + ') as rowsize from ' + @table + ' order by rowsize desc' exec (@sql)