فهم حجم قواعد بيانات SQL Server الخاصة بك

في عالم إدارة قواعد البيانات، هناك سؤال شائع يطرح: كيف يمكنني تحديد الحجم الإجمالي لجميع قواعد البيانات في SQL Server؟ هذه مهمة مهمة لمديري قواعد البيانات الذين يحتاجون إلى إدارة المساحة والموارد بشكل فعال. سواء كنت مهتمًا بمراقبة نمو قاعدة البيانات، أو التخطيط للسعة، أو مجرد تتبع استخدام التخزين، فإن معرفة حجم قواعد بيانات SQL Server الخاصة بك أمر بالغ الأهمية.

يقدم SQL Server طريقة مباشرة لتوضيح الحجم الإجمالي واستخدام قواعد البيانات الخاصة بك. أدناه، سنرشدك خلال إجراء مخزن يمكنك تنفيذه للحصول على نظرة شاملة حول المساحة التي تشغلها قواعد بيانات SQL Server الخاصة بك، وذلك بشكل خاص للنسخ حتى SQL Server 2008.

الحل: إجراء مخزن

للعثور على أحجام قواعد البيانات، سنقوم بإنشاء إجراء مخزن يلخص المساحة الإجمالية المستخدمة، والمساحة المتاحة، ويقدم معلومات أساسية حول بيانات قاعدة البيانات وملفات السجل. دعنا نفصل ذلك خطوة بخطوة.

الخطوة 1: إعداد إجراء المخزن

إليك كيفية إنشاء إجراء مخزن يحمل اسم sp_SDS لتلخيص أحجام قواعد البيانات:

USE master;
GO

IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
  DROP PROCEDURE dbo.sp_SDS;
GO

CREATE PROCEDURE dbo.sp_SDS 
  @TargetDatabase sysname = NULL,     --  NULL: جميع قواعد البيانات
  @Level varchar(10) = 'Database',    -- خيارات: "Database"، "File"
  @UpdateUsage bit = 0,               -- الافتراضي عدم التحديث
  @Unit char(2) = 'MB'                -- الوحدات: ميغابايت، كيلوبايت، غيغابايت
AS

الخطوة 2: الإعداد الأولي

داخل إجراء المخزن، نقوم بإجراء فحوصات أولية وإنشاء جداول مؤقتة للاحتفاظ بمعلومات قاعدة البيانات:

  • التحقق من قاعدة البيانات المستهدفة: إذا تم طلب قاعدة بيانات معينة، فإننا نتأكد من وجودها.
  • إنشاء الجداول المؤقتة: نقوم بإنشاء جداول لتخزين إحصائيات قاعدة البيانات بما في ذلك الحجم الكلي، المساحة المستخدمة، والمساحة الحرة.

الخطوة 3: جمع معلومات قاعدة البيانات

ثم نجمع تفاصيل حول قواعد البيانات في SQL Server الخاص بنا. العناصر الرئيسية التي سنقوم بالتقاطها تشمل:

  • اسم قاعدة البيانات
  • النوع (بيانات أو سجل)
  • الاسم المنطقي
  • الحجم الكلي
  • الحجم المستخدم والمساحة الحرة

إليك كيفية الحصول على هذه البيانات:

SELECT 
  @String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
  + 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);

الخطوة 4: حساب الأحجام

بعد جمع البيانات المطلوبة، نقوم بإجراء الحسابات لتحديد نسب المساحة المستخدمة والحرة:

  • تحديث المساحة المستخدمة بناءً على الامتدادات لكل ملف.
  • حساب النسبة المئوية للمساحة المستخدمة والحرة لملفات البيانات والسجل.

الخطوة 5: عرض النتائج

أخيرًا، نقوم بتحديد وعرض المعلومات المحسوبة مرة أخرى للمستخدم:

SELECT DatabaseName AS 'Database',
  type AS 'Type',
  T AS 'Total',
  U AS 'Used',
  [U(%)] AS 'Used (%)',
  F AS 'Free',
  [F(%)] AS 'Free (%)',
  PhysicalName
FROM dbo.##Tbl_CombinedInfo 
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%') 
ORDER BY DatabaseName ASC, type ASC;

مثال على التنفيذ

لتنفيذ هذا الإجراء المخزّن، ما عليك سوى استدعائه على النحو التالي:

EXEC dbo.sp_SDS;

يمكنك أيضًا استهداف قاعدة بيانات معينة أو ضبط الوحدات للإخراج:

EXEC dbo.sp_SDS 'your_database_name', 'Database', 1, 'GB';

الخاتمة

معرفة حجم قواعد بيانات SQL Server الخاصة بك لا يساعد فقط في التخطيط الفعال للسعة ولكن أيضًا يعزز استراتيجيتك العامة في إدارة قواعد البيانات. من خلال تنفيذ الإجراء المخزن المقدم، يمكنك جمع رؤى فعالة حول قواعد بيانات SQL Server الخاصة بك، مما يضمن الأداء الأمثل وتخصيص الموارد.

لا تتردد في مشاركة تجاربك أو أي تعديلات قمت بها على النص البرمجي لتلبية احتياجاتك المحددة!