احيانا ما نوجه مشكلة وهي الرغبة في معرفة أي الجداول به اكبر عدد من السجلات ( لمعرفة سبب زياده حجم قاعدة البيانات مثلا) وبدلا من تشغيل
select count (*) from Tablename
مرة لكل جدول فضلا عن انها بطيئة نوعا ما للجداول التي بها ملايين السجلات هناك system stored procedure يسترجع عدد السجلات في اي جدول في لا وقت ( عند عدم وجود شرط)
الكود التالي يسترجع السجلات من كل الجداول
SET NOCOUNT ON Declare @TableName sysname Create Table #Tables( ID Int Identity, TableName sysname null, NoOfRows BigInt, DataSpace Bigint, IDXSpace BigInt) declare c cursor for Select Name from Sysobjects where xtype ='u' -- User tables Only open c fetch Next from c into @TableName while @@Fetch_Status =0 begin Insert #Tables(NoOfRows,DataSpace,IDXSpace) Exec sp_msTableSpace @TableName Update #Tables Set TableName = @TableName Where ID = @@Identity fetch Next from c into @TableName end close c deallocate c select * from #Tables Order By NoOfRows DESC drop table #Tables SET NOCOUNT OFF
