محتويات الدورة

SQL Server / الأساسي / الدرس 1

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

كوّن تصوراً واضحاً لاتصال SQL Server قبل كتابة استعلامات الأعمال، وميّز مسؤوليات المحرك وسياق قاعدة البيانات وأدوات العميل وحدود الدفعات.

وقت القراءة التقريبي: 5 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

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

تتبّع الطلب داخل المحرك

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

يشترك العمل داخل المثيل في موارد مثل الذاكرة والمجدولات، بينما تضم كل قاعدة كائناتها وسجل معاملاتها. قد يؤثر ضغط قاعدة في غيرها من خلال الموارد المشتركة. انظر إلى الاتصال بوصفه وصولاً إلى خدمة ذات قاعدة ابتدائية، لا فتح ملف مباشرة من التطبيق. يفسر هذا التصور ضرورة تشخيص توافر الخادم وبيانات المصادقة وصلاحيات القاعدة كلّاً على حدة.

اقرأ السياق قبل التنفيذ

يصف الاستعلام التالي بيانات الجلسة بدلاً من افتراض إصدار موحّد لكل خادم. تعيد SERVERPROPERTY خصائص المثيل، وتعيد DB_NAME اسم القاعدة الحالية. تختلف النتائج حسب البيئة. سجّل إصدار المحرك الرئيسي ونسخته وقاعدته ومستوى التوافق عند مقارنة السلوك بالتوثيق. مستوى توافق القاعدة إعداد مستقل قد يحافظ على سلوك أقدم للمحسّن داخل محرك أحدث.

تعتمد صياغة الدورة على SQL Server 2019، أي الإصدار الرئيسي 15، وتوضح ميزات مختارة من SQL Server 2022 صراحة. لا تدعي أن أحدهما أحدث إصدار. تظل النسخة والمنصة والصلاحيات وخيارات القاعدة عوامل تحدد إمكان استخدام الميزات الإدارية. ورقم إصدار الأداة ليس رقم إصدار المحرك.

sql فحص البيئة بالقراءة فقط
SELECT SERVERPROPERTY('ProductVersion') AS engine_version,
       SERVERPROPERTY('Edition') AS edition,
       DB_NAME() AS database_name;
SELECT name, compatibility_level
FROM sys.databases
WHERE database_id = DB_ID();

توقّع صفوفاً تخص البيئة لا نص إصدار ثابتاً؛ وتخضع رؤية كتالوج النظام للصلاحيات.

افهم التخزين وقواعد النظام

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

اعرف أدوار قواعد النظام: تحتفظ master بمعلومات على مستوى المثيل، وتوفر model قالباً للقواعد الجديدة، وتدعم msdb مرافق مثل تاريخ SQL Server Agent، وتخدم tempdb الكائنات المؤقتة ومساحات عمل المحرك. يعاد إنشاء tempdb عند بدء الخدمة؛ فلا تحفظ فيها سجلات أعمال دائمة. تساعدك هذه المعرفة على توجيه طلبك للمسؤول المناسب دون تعديل جداول النظام.

ميّز العبارة والدفعة وGO

تنهي الفاصلة المنقوطة عبارة T-SQL. أما الدفعة فهي مجموعة عبارات ترسل معاً إلى SQL Server. تفصل GO الدفعات عندما توضع في سطر مستقل وتتعرف عليها أدوات مثل SSMS وsqlcmd؛ وهي ليست صياغة يفهمها الخادم ضمن T-SQL. إرسال نص يحتوي GO عبر مشغل قاعدة بيانات عادي يسبب مشكلة صياغة ما لم ينفذ التطبيق تقسيم النص صراحة.

تعيش المتغيرات المحلية داخل دفعتها فقط. يستطيع SELECT الأول في المثال قراءة @label، لكن SELECT بعد GO لا يستطيع ذلك. ولا تعني GO تنفيذ COMMIT أو إنهاء معاملة مفتوحة تلقائياً. يمكن لعدد التكرار بعد GO إعادة تشغيل الدفعة، لذلك لا تعتبره مجرد تنسيق بريء في نص مجهول. كذلك يفرض إنشاء الوحدات المخزنة متطلبات خاصة بالدفعات سنعود إليها لاحقاً.

sql نص للأداة يضم دفعتين
DECLARE @label nvarchar(30) = N'Training';
SELECT @label AS label;
GO
SELECT N'New batch' AS label;
الناتج المتوقع
label
Training

label
New batch

تظهر مجموعتا نتائج منفصلتان عندما ترسل الأداة الداعمة لـ GO النص؛ ولا تعتمد الدفعة الثانية على @label.

ضع حدوداً لبيئة التعلم

كل أمثلة الدورة نظرية ومعلّمة بأنها غير قابلة للتشغيل، لأنها روجعت دون تنفيذها في محرك SQL Server مؤقت. تستخدم قيماً مصطنعة، وتتطلب المقاطع الإدارية بيئة تدريب محددة صراحة وصلاحيات مناسبة. لا توجه التدريب إلى خادم تطبيق مضبوط لمجرد توافر سلسلة اتصال. اقرأ الدفعة كاملة وحدد CREATE وALTER وINSERT وUPDATE وDELETE وBACKUP وRESTORE قبل تقرير طريقة دراستها.

يتضمن سجل التعلم المفيد السؤال والصفوف المتوقعة والتعليل وافتراضات البيئة. توقّع قيم أمثلة القراءة قبل تنفيذها. وعند دراسة تعديل، فسّر مسار النجاح وكيفية استعادة الحالة عند الخطأ. إتقان الأداة مهم، لكن شبكة نتائج ظاهرة ورسالة نجاح لا تثبتان أن قاعدة العمل نُفذت بصورة صحيحة.

الأخطاء الشائعة وإصلاحها

Incorrect syntax near 'GO'.

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

Must declare the scalar variable "@label".

لماذا يحدث؟
استُخدم المتغير في دفعة أخرى.
كيف تصلحه؟
صرّح بالمتغير واستخدمه داخل الدفعة نفسها.
كيف تتجنب تكراره؟
حدد حدود النطاق أثناء مراجعة النصوص.

Invalid object name.

لماذا يحدث؟
الجلسة داخل قاعدة أخرى أو اسم الكائن غير صحيح.
كيف تصلحه؟
افحص DB_NAME() وتحقق من القاعدة واستخدم اسماً مؤهلاً بالمخطط.
كيف تتجنب تكراره؟
سجّل السياق المقصود قبل الاستعلام.

اختبر فهمك

1. يصرح نص بالمتغير @n ثم يضع GO ثم يقرأ @n. فسّر النتيجة.

اعرض الحل المشروح

ترسل الأداة دفعتين؛ ينتمي التصريح إلى الأولى، ولذلك يفشل حل المتغير في الثانية. اجمع التصريح وSELECT في دفعة واحدة؛ ولا توسّع الفاصلة المنقوطة نطاقه.

2. يعرض الخادم الإصدار الرئيسي 16 ومستوى توافق القاعدة 150. ماذا تسجّل؟

اعرض الحل المشروح

سجّل SQL Server 2022 للمحرك ومستوى التوافق 150 بصورة مستقلة. افحص متطلبات كل ميزة؛ ولا تستنتج ميزات المحسّن من إصدار العميل أو المحرك وحده.

أهم ما تعلمته

  • للاتصال سياق خادم وهوية وقاعدة وجلسة.
  • تفسر الأداة GO، بينما تنهي الفاصلة المنقوطة عبارات T-SQL.
  • الإصدار ومستوى التوافق حقيقتان منفصلتان.

المراجع الرسمية