日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用一個T-SQL語句批量查詢數據表占用空間及其

系統 2264 0
原文: 使用一個T-SQL語句批量查詢數據表占用空間及其行數

?

要找到數據庫中數據表占用的空間和存在的行數??梢允褂胹p_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

結果如下:

使用一個T-SQL語句批量查詢數據表占用空間及其行數

把結果復制到新的窗口執行即可得到結果。

但這種方法需要人手操作不適合自動化、定時化操作。

二、使用累加字符串的方式動態生成:

因為要自動化,所以會利用數據表的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 + ']; '

??????????? FROM inserted

??????????? -- 利用 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'

?

? 使用一個T-SQL語句批量查詢數據表占用空間及其行數

使用一個T-SQL語句批量查詢數據表占用空間及其行數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中超| 婺源县| 彭阳县| 海丰县| 龙岩市| 田林县| 大埔区| 永宁县| 南和县| 陕西省| 新安县| 海林市| 阿拉善右旗| 新郑市| 迁西县| 民乐县| 湖州市| 台南县| 鹿邑县| 涿州市| 鄂伦春自治旗| 波密县| 宿迁市| 靖江市| 章丘市| 黑水县| 连南| 镇远县| 通化县| 通州市| 汤原县| 灵寿县| 教育| 长子县| 高淳县| 丰顺县| 瑞昌市| 忻州市| 绥阳县| 宣恩县| 丹东市|