使用一個T-SQL語句批量查詢資料表佔用空間及其行數
要找到資料庫中資料表佔用的空間和存在的行數。可以使用sp_spaceused搭配資料表的名稱。就可以產生該表耗用的空間和現有行數。
如:
USE ADVENTUREWORKS
GO
EXEC sp_spaceused [Sales.SalesOrderHeader]
GO
但如果資料庫中包含數千的資料表,如何能利用一句SQL語句來實現?
解決方法:
一、動態SQL:
先用T-SQL動態產生表示式,然後放到一個查詢中執行。如:
USE ADVENTUREWORKS
GO
SET NOCOUNT ON
SELECT 'EXEC SP_SPACEUSED ['+S.name+'.'+T. name +'];'
FROM sys.tables T INNER JOIN sys.schemas S
ON T.SCHEMA_ID=S.SCHEMA_ID
WHERE S.NAME='HumanResources'
SET NOCOUNT OFF
結果如下:
把結果複製到新的視窗執行即可得到結果。
但這種方法需要人手操作不適合自動化、定時化操作。
二、使用累加字串的方式動態生成:
因為要自動化,所以會利用資料表的INSERT觸發器,執行動態表示式。並且自動將輸入的資料表,計算結果:
--建立表,執行insert觸發器
USE AdventureWorks
GO
CREATE TABLE myTab
(
TableName VARCHAR(255)
)
GO
--建立觸發器:
CREATE TRIGGER tr2 ON myTab
AFTER INSERT
AS
DECLARE @sql VARCHAR(max)
SET @sql=''
--使用累加字串,產生語句
SELECT @sql=@sql+
'EXEC sp_spaceused ['+TableName+']; '
FROMinserted
--利用EXECUTE 執行動態語句
EXEC (@sql)
--新增指定的資料表名稱,會自動顯示資料表的使用空間:
INSERT myTab
SELECT S.name+'.'+T.name
FROM sys.tables T INNER JOIN sys.schemas S
ON T.schema_id=S.schema_id
WHERE S.name='HumanResources'
相關文章
- oracle 查詢表空間使用率的語句Oracle
- oracle查詢表空間的空間佔用情況Oracle
- T-sql語句查詢執行順序SQL
- 一個經典的查詢及其SQL語句SQL
- mysql 資料庫或者表空間使用查詢MySql資料庫
- HANA資料庫查詢大表佔用記憶體空間 for hana 2.0資料庫記憶體
- Oracle 查詢各個 “表空間/資料檔案” 的空間使用比情況Oracle
- Oracle查詢表佔磁碟空間大小及移動表空間Oracle
- 查詢操作佔用cpu很高語句
- 查詢資料庫每個表佔用的大小資料庫
- 貼一個求表空間的sql 語句SQL
- Oracle下查詢臨時表空間佔用率Oracle
- 表空間使用量查詢
- 查詢表空間使用情況
- 水煮orale22——查詢表空間使用資訊以及表空間中的每個資料檔案資訊
- oracle 表空間,臨時表空間使用率查詢Oracle
- 12c 資料泵提取建表空間語句和建表語句
- 臨時表空間被佔滿的原因查詢
- 資料庫查詢語句資料庫
- oracle表空間使用率查詢Oracle
- Oracle查詢表空間使用情況Oracle
- 查詢表空間的使用率
- 記一個實用的sql查詢語句SQL
- OEM模組審計查詢語句佔用較大資源
- 查詢數oracle據庫表空間使用率sqlOracleSQL
- 臨時表空間的空間使用情況查詢
- 計算一個表佔用的空間的大小
- 查詢sql語句執行次數SQL
- oracle表空間查詢Oracle
- 表空間大小查詢
- 表空間查詢資訊
- 查詢表空間中的extent數量
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 有關Undo表空間與回滾段的一些查詢語句記錄
- 用SQL語句檢查CPU和磁碟空間SQL
- 臨時表空間和回滾表空間使用率查詢
- 達夢資料庫表空間等空間大小查詢方法總結資料庫
- ORACLE查詢所有表空間使用情況Oracle