بدست آوردن لیست جداول بانک همراه با تعداد سطرهای موجود در آن
 
   SQL Server
   ۷۵۰۸
   این مقاله حاوی فایل ضمیمه نمی باشد
   محمد سلیم آبادی
   ۱۳۸۹/۴/۹
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

حتما اتفاق افتاده است که بخواهید لیست جداول همراه با تعداد سطرهای موجود در آنها را بدست آورید.
اگر بخواهیم تعداد سطرهای یک جدول مشخص را بدست آوریم ساده ترین و شناخته ترین روش گرفتن یک
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 نتیجه ی مطلوب را بدست می آورد می توانید به این لینک مراجعه کنید.