sql-server - 获取表列表的总大小

标签 sql-server sql-server-2005

我有一个非常大的产品数据库。我需要复制这个数据库来制作测试环境,但是磁盘空间不足。

但实际上不需要从包含用户数据的表中复制行,只需要那些描述功能的表。对于包含用户数据的表,我只需要复制表“描述”(列、索引、触发器...)。

如何(使用什么查询)在没有某些表数据的情况下估计数据库的大小?

最佳答案

SET NOCOUNT ON 

DBCC UPDATEUSAGE(0) 

-- DB size.
EXEC sp_spaceused

-- Table row counts and sizes.
CREATE TABLE #t 
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 

INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' 

SELECT *
FROM   #t

-- # of rows.
SELECT SUM(CAST([rows] AS int)) AS [rows]
FROM   #t

DROP TABLE #t 

*作者:Alexander Groß * Link to source

关于sql-server - 获取表列表的总大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219862/

相关文章:

java - 将相同的数据插入属于不同服务器的两个表中

sql-server - 设置ODBC Hortonworks后在SQL中添加HIVE链接服务器

sql-server-2005 - SQL (SQL Server) 中的唯一约束

c# - 数据库设计 : Custom fee/billing charge rates

sql-server - 全文搜索问题

sql - 唯一的随机整数作为主键 ID 而不是自动递增

sql-server - SQL Server 2008 脚本 - 如何从系统获取当前日期并将其存储到日期列中

sql - 如何在没有日志文件的情况下附加 MDF?

SQL 按不存在的列排序

SQL Server 2005 IsNumeric 未捕获 '0310D45'