0

如何呈现示例数据库中所有表的所有记录,下面的查询返回所有表记录计数。但我想要示例数据库中所有表的所有记录。

SELECT   TableName = o.name,
         Rows = max(i.rows)
FROM     sysobjects o
         INNER JOIN sysindexes i
           ON o.id = i.id
GROUP BY o.name
ORDER BY Rows DESC
4

1 回答 1

3

您可以使用未记录的 (*) 存储过程对数据库中的每个表运行查询:

exec sp_MSforeachtable 'select * from ?'

这将为每个表返回一个结果集。如果要将表名作为单独的列:

exec sp_MSforeachtable 'select ''?'' as TableName,* from ?'

没有简单的方法来获得一个单一的结果集,因为一般情况下,数据库中所有表的列不会相互兼容。


(*) 希望这里的危险是显而易见的。它没有记录,因此它可能会根据应用于 SQL Server 的任何服务操作而消失或更改。另一方面,我怀疑他们永远不会移除它,而且它里面没有任何特殊的魔法。对于皮带和大括号,您可能希望以不同的名称将该过程复制到您自己的数据库中,然后您可以依赖它不会被更改。

于 2013-01-10T09:28:02.533 回答