SqlServer 查询某数据库下的所有表的物理空间和行数 语句和存储
1方法查询的没有2方法结果集多. 1.select 表名=a.name,记录数=b.rows ? 2. ? ? --1274笔 --?SP_SQLSERVER_TABLE?@DATABASENAME CREATE PROCEDURE SP_SQLSERVER_TABLE @DATABASENAME ? NVARCHAR(20) AS BEGIN DECLARE @PAR ?NVARCHAR(50) DECLARE @Sql ?NVARCHAR(1000) SELECT @DATABASENAME=@DATABASENAME+'..SysObjects' IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('tempdb..##TEMP_TBL')) DROP TABLE ##TEMP_TBL CREATE TABLE ##TEMP_TBL(TableName ?NVARCHAR(50)) IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('tempdb..##TEMP_TAB')) DROP TABLE ##TEMP_TAB CREATE TABLE ##TEMP_TAB(NAME ?NVARCHAR(50),ROWS INT,RESERVED NVARCHAR(50),DATA NVARCHAR(50),INDEXSIZE NVARCHAR(50),UNUSED NVARCHAR(50) ) set @Sql ?= ?'SELECT Name ? FROM ?' ?+ @DATABASENAME + ' ?WHERE XType=''U'' ORDER BY Name ' INSERT INTO ##TEMP_TBL EXEC SP_EXECUTESQL @Sql DECLARE @NAME ?NVARCHAR(50) DECLARE P_CUR CURSOR FOR SELECT TableName FROM ##TEMP_TBL OPEN P_CUR FETCH NEXT FROM P_CUR INTO @NAME WHILE(@@FETCH_STATUS=0) BEGIN INSERT INTO ##TEMP_TAB EXEC sp_spaceused @NAME FETCH NEXT FROM P_CUR INTO @NAME END CLOSE P_CUR DEALLOCATE P_CUR SELECT * FROM ##TEMP_TAB ORDER BY ROWS DROP TABLE ##TEMP_TBL DROP TABLE ##TEMP_TAB END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |