حتما اتفاق افتاده است که بخواهید
لیست جداول همراه با تعداد سطرهای موجود در آنها را بدست آورید.
اگر بخواهیم تعداد سطرهای یک جدول مشخص را بدست آوریم ساده ترین و شناخته ترین روش
گرفتن یک query به شکل زیر است:
SELECT COUNT(*) AS row_cnt FROM table_name ;
اگر تعداد سطرهای جدول مورد نظر ما بیش
از range نوع int باشد اجرای
query با شکست مواجه خواهد شد. برای رفع این مشکل کافیست از تابع
SUM و CAST استفاده کنیم. دقیقا
شبیه به query زیر:
SELECT SUM(CAST(1 AS BIGINT)) AS row_cnt FROM table_name ;
زمانی که سطرهای زیادی در جدول موجود
باشد ممکن است کوئری روش مناسبی نباشد. چون برای بدست آوردن تعداد سطرها بایستی کل
سطرهای جدول خوانده شوند. ما می توانیم از
stored
procdedure سیستمی زیر برای بدست آوردن تعداد سطرهای جدول همراه با
یکسری اطلاعات مفید دیگری استفاده کنیم:
EXEC sp_spaceused 'table_name'
;
و با کمک stored procedure
زیر که خود آن را ایجاد کرده
ام می توانیم تمام جداول
(در یک بانک مشخص) را همراه با تعداد سطرهای آنها
را با کمک
sp سیستمی قبلی بدست آوریم:
CREATE PROC row_cnt AS
BEGIN
DECLARE @sql VARCHAR(MAX) = ''
SET @sql = '' ;
SELECT @sql += ' EXEC sp_spaceused ' + QUOTENAME(TABLE_NAME, CHAR(39))
FROM INFORMATION_SCHEMA.TABLES ;
DECLARE @t TABLE
(table_name varchar(50),
rows int,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)) ;
INSERT @t EXEC (@sql) ;
SELECT table_name, rows FROM @t
ORDER BY rows DESC ;
END ;
برای آشنایی با روش دیگر که با کمک
پروسیجر ذخیره شده ی سیستمی غیر مستند شده ی sp_msforeachtable
نتیجه ی مطلوب را بدست می آورد می توانید به
این لینک مراجعه کنید.