الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حجم البيانات الفعلي داخل قاعدة البيانات

بدأه محمد فؤاد تركي في 3 فبراير 2012 · 3 رد · 565 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الزملاء

السلام عليكم ورحمة الله وبركاتة

اريد تقرير او استعلام يقوم باعطائي معلومات عن المساحة الفعلية للبيانات داخل قاعدةالبيانات لمتابعة حجم الزيادة الفعلية للبيانات داخل الجداول.... مثال

استخدم الكثير من الاوامر التي تساعدني علي جلب معلومات عن قاعدة البيانات .....

sp_spaceused

sp_helpdb

SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'ARA_AX09_DB_L01'
GO

لكن هذا كلة لا يفي بالغرض لاني اريد ان اعرف الزيادة الحقيقية للبيانات

مثال

جدول حركات المخازن عدد الصفوف الان = 20000 بعد شهر سيصل مثلا الي 20500 وهكذا ،،،

ومن خلال الاستعلام عن مساحة قاعدة البيانات لاتعطيني قراءة منضبطة حيث ان المساحة الموجوده داخل خصائص قاعدة البيانات هي مساحة Pages والذي احددها بنفسي كما هو موضح بالصورة

هذا بالاضافة الي ان مساحة قاعدة البيانات تشمل مساحة Indexes,Data, Unused space فكيف استخلص مساحة البيانات فقط دون عن الباقي

ارجو ان اكون قد وضحت طلبي

post-46243-059550400 1328266042_thumb.jp

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 3 فبراير 2012 في 13:51

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

لقد وجدت Script علي الانترنت من خلال بحثي يقوم بجلب جميع جداول قاعدة البيانات ويعرض Number of Rows واعتقد انني بحاجة لتغيير طريقة تفكيري حيث انني يجب ان استعلم عن البيانات علي اساس عدد السجلات داخل كل جدول ليس بالمساحة لان لو افترضنا ان هناك جدول يحتوي علي Row واحد فهذا الصف يحجز 8 k وهو مساحة الــ page يعني كل 1 ميجا بايت = 128 صفحة

علي العموم انا شايف من خلال الــ Script أدناه اني اتابع عدد صفوف كل جدول علي حدة وبعدين افكر اعمل ايه في الجداول اللي مساحتها كبيرة لتقسيمها

أنا بفكر معاكم ولو عندكم اي اقتراحات تانية افيدونا بالله عليكم

-- Declare variables
DECLARE @Table_Size TABLE
(
[Table_Name] NVARCHAR(200)
, [Number_of_Rows] NVARCHAR(100)
, [Reserved_Space] NVARCHAR(100)
, [Data_Space] NVARCHAR(100)
, [Index_Size] NVARCHAR(100)
, [Unused_Space] NVARCHAR(100)
)
DECLARE @Table_Name NVARCHAR(200)
-- Select first table
SELECT TOP 1 @Table_Name = (TABLE_SCHEMA + '.' + TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY (TABLE_SCHEMA + '.' + TABLE_NAME)
-- loop thorugh rest of the tables
WHILE ( @@ROWCOUNT != 0 )
BEGIN
INSERT INTO @Table_Size
EXEC sp_spaceused @objname = @Table_Name
PRINT @Table_Name
SELECT TOP 1 @Table_Name = (TABLE_SCHEMA + '.' + TABLE_NAME )
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND @Table_Name < (TABLE_SCHEMA + '.' + TABLE_NAME)
ORDER BY (TABLE_SCHEMA + '.' + TABLE_NAME)
END
-- Display end results
SELECT * FROM @Table_Size where Number_of_Rows <> 0 ORDER BY Table_Name

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

جرب هذه الاكواد

select sum(length)
from syscolumns
where id = object_id('dbo.NGO_Main')
-----------------------------------------------
select SUM(sc.length)  
from syscolumns sc  
inner join systypes st on sc.xtype = st.xtype  
where id = object_id('dbo.NGO_Main')
-- SELECT [dbo].[available_tablerowsize] ('dbo.NGO_Main')
---------------------------------------------
Select * into #mytables from INFORMATION_SCHEMA.columns

select * from #mytables

drop table #mytables
------------------------------------------------
EXEC ('DBCC SHOWCONTIG WITH TABLERESULTS')
--------------------------------------------------
exec sp_help 'dbo.NGO_Main'
---------------------------------------------------
#4

بارك الله فيك أخي الكريم كريم

الاكواد كويسة لكنها تدور في نفس محور الاكواد التي ارسلتها من قبل عموما الموضوع مطروح للمناقشة لطرح العديد من الافكار الاخري

وشكراً جزيلا لك

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

مواضيع مشابهة