如何呈现示例数据库中所有表的所有记录,下面的查询返回所有表记录计数。但我想要示例数据库中所有表的所有记录。
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
如何呈现示例数据库中所有表的所有记录,下面的查询返回所有表记录计数。但我想要示例数据库中所有表的所有记录。
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
您可以使用未记录的 (*) 存储过程对数据库中的每个表运行查询:
exec sp_MSforeachtable 'select * from ?'
这将为每个表返回一个结果集。如果要将表名作为单独的列:
exec sp_MSforeachtable 'select ''?'' as TableName,* from ?'
没有简单的方法来获得一个单一的结果集,因为一般情况下,数据库中所有表的列不会相互兼容。
(*) 希望这里的危险是显而易见的。它没有记录,因此它可能会根据应用于 SQL Server 的任何服务操作而消失或更改。另一方面,我怀疑他们永远不会移除它,而且它里面没有任何特殊的魔法。对于皮带和大括号,您可能希望以不同的名称将该过程复制到您自己的数据库中,然后您可以依赖它不会被更改。