انت هنا : قسم الحاسوب : لغات البرمجة : قواعد المعطيات

SQL    كيف تستخدم  

 

 

 

تعلم استخدام برنامج
Microsoft SQL Server 7.0

مقدمة الى قواعد البيانات المركزية

 قبل ان ابدء الشرح عن
SQL Server
اريد التحدث قليلا عن قواعد البيانات عامة وعن الفرق بينها وبين قواعد البيانات المركزية ، فكما يعلم البعض نظام ال
SQL Server
هو عبارة عن قاعدة بيانات مركزية تقوم بادارة قواعد البيانات وتوزيعها عبر شبكة الكومبيوتر

لقد بدء ظهور قواعد البيانات المركزية بشكل مكثف في نهاية الثمانينات ، طبعا هي موجودة بطريقة او باخرى منذ فترة اطول ولكن استخدامها اقتصر الى بعض المؤسسات الضخمة فقط

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

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

ومن هنا بدئت فكرة قواعد البيانات عامةً ، وكانت الفكرة ايجاد طريقة موحدة لحفظ البيانات ، وايجاد برنامج قادر على جميع انواع الاستعلامات من قاعدة البيانات ، فلو فشل برنامج السابق ، فبامكان المستخدم فتح ملف البيانات عن طريق برنامج الاستعلام الرئيسي الذي ياتي مع قاعدة البيانات واجراء كل الاستعلامات التي يحلم بها

ومن هنا ظهرت قواعد البيانات وظهرت ايضا لغة
SQL
المخصصة للاستعلام في قواعد البيانات ، وبدئت تتطور وانتقلت العديد من الشركات لاستخدامها ، نظرا لسهولة التعامل معها وسرعة برمجتها

ولكن مع زيادة حجم المؤسسات وبداية ظهور شبكات الكومبيوتر ، اصبحت قواعد البيانات بحاجة الى ان تعمل على اكثر من جهاز في نفس الوقت ، فتطورت برامج ادارة قواعد البيانات واصبحت قادرة على فتح نفس الملفات المخزنة في الجهاز المركزي من عدة اجهزة كومبيوتر في نفس الوقت ومن امثلتها
DBase
Paradox
وغيرهما

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

كما ان الاستعلامات المتزايدة على قواعد البيانات زادت من الضغط على الشبكة فكما تعلم يتطلب الاستعلام عن شخص ما ، يتطلب البحث في كل قاعدة البيانات حتى ايجاده بها

فعلى سبيل المثال : لو كان لديك جدول في قاعدة البيانات وبه معلومات عن عشرة الاف نوع من البضائع وطلبت ان من جهازك كل البضائع التي استلمت في تاريخ معين ، فعليا سيقوم جهازك باحضار العشرة الاف سجل في قاعدة البيانات الى جهاز وذلك عبر الشبكة وسيفلترهم ويفرز البيانات المطلوبة

ولكنه ضغط على الشبكة بالحصول على كل تلك المعلومات معا ، طبعا الشبكة قد تتحمل طلب او طلبين معا ، ولكن ماذا بالنسبة للبنوك مثلا ، هناك الاف السجلات وعشرات العمليات في نفس الوقت

ولذلك بدئت الحاجة الى تطوير قواعد البيانات العادية ، ومن هنا ظهرت قواعد البيانات المركزية ، فهي عبارة عن برنامج يعمل بداخل الجهاز المركزي ويخز البيانات فيه ايضا ولكن الاختلاف بينها وبين السابق ذكره ان طلب البيانات لا يتم الا من خلال البرنامج الذي يعمل في الجهاز المركزي والذي يسمى محرك قواعد البيانات المركزية ، وبذلك يكون قد تم فصل المستخدم النهائي عن الملف الرئيسي لقواعد البيانات

فلو كنت بحاجة الى استعلام معين ، فسيقوم برنامجك بطبل ذلك الاستعلام من محرك قواعد البيانات المركزية الموجود في الجهاز المركزي ، حيث بدوره سيقوم هو بالاستعلام ومن ثم يعطي النتيجة فقط للجهاز العادي الذي طلب الاستعلام وبذلك يكون قد انهى كابوس اغراق الشبكة بالبيانات

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

كما ان محرك قواعد البيانات المركزية اصبح يقوم بعمليات النسخ الاحتياطي والحفاظ على البيانات من التلف اتوماتيكيا ، وذلك بفحصها باستمرار ونسخها على اشرطة النسخ الاحتياطي واعلام مدير النظام باية مشاكل صغيرة بداخلها

وهكذا استمر تطور قواعد البيانات المركزية الى يومنا هذا وظهر العديد منها في السوق مثل

Oracle 8
SQL Server 7
IBM DB2
SYbase
Informix
Borland IntraBase

مقارنة بينMicrosoft SQL ServerوبينOracle 


عندما قررت قبل ثلاثة سنوات اعتماد نظام قواعد بيانات مركزية لاستخدمها في عملي ، كان يجب أن اختار بين اشهر الأنظمة المتوفرة في الأسواق ، وكانت في تلك الفترة
Microsoft SQL Server
و
Oracle
طبعا الخيار كان صعبا ، خصوصا لانه يتطلب وقتا كبيرا لتتقن استخدام نظام قواعد بيانات مركزية ، ولا يوجد لدي وقت لاتقن استخدام نظامين معا ، ولذلك كان على الاختيار بعناية

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

لقد كانت معظم المقارنات سابقا تتعلق بسرعة اداء محرك قاعدة البيانات المركزية والحجم البيانات الاقصى الممكن ان تستوعبه ، ولكن مع تطور التكنولوجيا المستخدمة بها ، أصبحت الفروق في السرعة بين النظم المختلفة ضئيلة للغاية ، كما ان حجم التخزين وصل الى الحدود القصوى لسعة التخزين في جهازك ، أي بمعنى اخر تستطيع تخزين بيانات في قاعدة البيانات حتى يتملئ القرص الصلب او الأقراص الصلبة الموجودة في جهازك مهما كانت سعتها
ذلك لان النظم الجديدة تستخدم تكنولوجيا معقدة لحفظ واسترجاع البيانات ، حيث تستغل المعالج ووسائط التخزين لاقصى حد ممكن

ومع ذلك فهناك العديد من النقاط التي جعلتني افضل أحدهما عن الاخر ومن اهمها

سهولة تعلم استخدام النظام ودرجة تعقيده وسرعة بناء و إدارة قواعد البيانات به

تلكفة النظام ( تلكفة الشراء ، التركيب ، الصيانة ، الاستخدام عبر الشبكة ، وغيرهما)

سهولة تعلم استخدام النظام ودرجة تعقيده وسرعة بناء وادارة قواعد البيانات به

عندما حصلت على النسخ التجريبية من النظامين السابقين وركبت كل منهنا على جهازي وبدئت الاختبارات عليه ، وجدت صعوبة كبيرة في التعود على استخدام اوراكل ، فبدء بالنسبة لي كنظام ضخم ومعقد ، حتى انني واجهت مشاكل في استخدامه لاول مرة فقد طلب مني اسم المستخدم وكلمة السر والذي تطلب مني اسبوعا لإيجادهم ، اعتقد بانه كان يفترض ان توزعهم اوراكل مع النسخة التجريبية
ثم بدئت اواجه المصاعب واحدة تلو الأخرى ، فلقد بدء لى النظام غريبا ومختلف قليلا عن ويندوس ، وقد صعقت عندما فهمت انني بحاجة الى استخدام لغة
SQL
مباشرة لانشاء الجداول والتعامل مع البيانات ، بالطبع توفر اوراكل بعض البرمجيات الاضافية اليوم للقيام بذلك ، ولكنني لم اعتاد عليها بالقدر الكافي ، حتى انني لم اعلم في ذلك الوقت اين تخزن البيانات في القرص الصلب ، وكيف اصنع قاعدة بيانات جديدة والكثير من الاسئلة الاخرى التي لم استطيع ايجاد اجابة مباشرة عليها ، فانا اعلم منذ تعليمي في الجامعة ان اوراكل هو افضل نظم قواعد البيانات الموجودة ، وتذكرت عندها
Unix
والذي كان يحاول الجميع اقناعنا بانه الافضل ، هو صحيح الافضل في نظم التشغيل ، ولكنه ممتاز لدرجة انك لا تستطيع استخدامه في المؤسسات العادية
(هذه مزحة فقط)
فانت بحاجة الى كتابة الكثير للقيام بابسط العمليات ، وهكذا كان مع اوراكل ايضا ، حيث انني علمت فيما بعد انه اساسا صمم ل
Unix
ونقل بعد ذلك الى ويندوس ن ت

ولكن الامر اختلف كثيرا عندما ركبت النسخة السابقة في ذلك الوقت من
SQL Server
وكانت 6.5 ، لقد ارتحت كثيرا منذ اول تشغيل لي لذلك البرنامج ، فوجد بانني استطيع القيام بمعظم العمليات عن طريق برنامج واحد فقط ، ففرقت بسهولة بين قواعد البيانات المختلفة ومكان تخزينها وطرق النسخ الاحتياطي الخاص بها والكثير من الامور غيرها ، وعندما طورت النظام الى النسخة السابعة ورئيت التغيرات الضخمة والتسهيلات التي وجدتها به ، ازدادت سعادتي كثيرا
فانا قادر عن طريق برنامج الادارة
Microsoft SQL Server7.0 Enterprise Manager
القيام بكل العمليات التي ارغب بها بسهولة وسرعة عالية ، حيث يقدم لي كل ما احتاج لصناعة الجداول والاستعلامات والبرامج الصغيرة وغيرها ، كما انني استطيع ان اجعله بان يقوم بالعديد من الامور الاخرى اتوماتيكيا ، مثل فحص البيانات كل ليلة ونسخها احتياطيا واخباري عن ذلك يوميا عن طريق البريد الالكتروني ، وذلك في حال تواجدي في مكان بعيد ، بل اكثر من ذلك ، فباستطاعتي توجيه الأوامر اليه مباشرة عن طريق البريد الالكتروني وذلك ان كنت مسافر مثلا.

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

اما بالنسبة للوثائق التعليمية فقد ارفقت مايكروسوفت ما يزيد عن 10 الاف صفحة من الكتب مع ذلك النظام على قرص الليزر وذلك عن طريق
SQL Server Books On-Line
كما وجدت العديد من الوثائق في مواقع مايكروسوفت على انترنت مثل
support.microsoft.com
msdn.microsoft.com/library
msdn.microsoft.com/sqlserver
كل تلك الوثائق والمستندات ساعدتني بان اتغلب على اية مشكلة كانت تحدث مع
 SQL-Server
دقائق بعد حدوثها ، عكس اوراكل والذي فشلت في ايجاد حل المشاكل التي واجهتني عند استخدامه عن طريق اوراكل في انترنت.

كل ذلك جعلني افضل
SQL-Server
كثيرا في تلك المقارنة

والبند الاخر الذي اثر كثيرا في المقارنة هي التكلفة

تلكفة النظام ( تلكفة الشراء ، التركيب ، الصيانة ، الاستخدام عبر الشبكة ، وغيرهما)

وبالمناسبة اليوم التكلفة هي العامل الاول الذي يستخدمه المقارنون بين قواعد البيانات المختلفة ، فالسعر عامل أساسي ويؤثر كثيرا في اختيار الإدارة لنظام ما عوضا عن نظام اخر وهذا ما يحدث في معظم المؤسسات الكبيرة ، فلو عرضت على المدير نظامين ، أحدهما يكلف ثلاثة الاف دولار والاخر قد يصل الى عشرة الاف دولار والاثنين قادرين على عمل العمل نفسه ، فلن يتردد باختيار الأرخص

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

ماذا اقصد بالسعر بالضبط

أولا : تكلفة النظام نفسه
عند شرائك لمحرك قواعد بيانات مركزي فان تدفع مبلغ مقابل تشغيل ذلك النظام على الجهاز المركزي لديك وهو سعر النظام
فعند مقارنة الأسعار ستجد بان
SQL Server 7
يكلفك 2000 دولار ، وذلك للنسخة الكاملة الوظائف مع إمكانية استخدامها من عشرة مستخدمين عبر الشبكة في نفس الوقت
أما اوراكل 8 فسيكلفك حوالي خمسة الاف دولار وذلك للنسخة العادية مع امكانية استخدامها من خمسة مستخدمين عبر الشبكة في نفس الوقت
(هناك بعض التعديلات الان على أسعار اوراكل في محاولة لتخفيضها ، ولكنها تبقى مرتفعة)

لن تلاحظ هنا فرق كبير في السعر عند زيارتك لموقع اوراكل الجديد في انترنت، ولكن تذكر بانك تقارن نظامين بمميزات مختلفة ، فان حاولت مساواة المميزات في كلا منهم فستجد بان اوراكل سيرتفع سعره كثيرا عكس مايكروسوفت
SQL Server 7
والذي تحصل عليه وعلى كل مميزاته بالتكلفة ذاتها ، حيث لا توجد أسعار مخبئة بداخله

ثانيا : تكلفة استخدام النظام عبر الشبكة
كما يعلم البعض لا يكفي شرائك للنظام لتعمل عليه عن طريق الشبكة ، فانت بحاجة للحصول على رخصة استخدام للنظام عبر الشبكة  وتسمى
Client Access License
حيث سيكلفك
SQL Server
تقريبا 2400 دولار لكل عشرين مستخدم عن طريق الشبكة ، 3000 دولار لعدد لانهائي من المستخدمين عن طريق إنترنت لكل جهاز
اما اوراكل فسيكلفك اكثر من ذلك بكثير ، هذا غير التكاليف المخبئة التي قد تظهر به فجأة


ثالثا : تكلفة التركيب والتشغيل والصيانة
لا أتستطيع ان أعطي أرقام لتلك التكلفة لأنها تتغير من مكان الى اخر ولكن استطيع الى ان أنبهك الى بعض النقاط وهي

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

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

رابعا : تكلفة البرامج التي ستعمل من خلالها برامجك
كما يعلم الجميع فمن الصعوبة استخدام قاعدة البيانات المركزية مباشرةً عبر الشبكة ، فنحن بحاجة الى كتابة بعض البرامج لتعمل من خلالها على قاعدة البيانات تلك
ومن لغات البرمجة التي تقدمها مايكروسوفت والتي قادرة لبناء برامج مخصصة ل
SQL Server 7
منها
Microsoft Visual Basic 6
Microsoft Access 2000 Developer
ولغات البرمجة تلك تصنع برامج ممتازة ، والاهم انه مايكروسوفت لا تطلب مبالغ إضافية عن كل نسخة تبيعها من البرنامج المنتجة من لغات البرمجة تلك ، فانت حر بتوزيعها مجانا ان شئت
بالنسبة لفيجوال بيسك فهناك مجموعة ملفات
DLL
اساسية لتشغيل البرامج التي صنعت عن طريق تلك اللغة و توزعها برامج التركيب مجانا مع برنامجك
وبالنسبة لمايكروسوفت اكسس فهناك نسخة مخصصة لتشغيل البرامج المنتجة منك وهي
Microsoft Access Runtime
وان حر بتوزيعها مع برامجك مجانا

اما فالامر عند اوراكل فيختلف ، فهي تقدم طاقم برمجيات
Oracle Developer 2000, or R:2 or R:6
وتطلب اوراكل مبلغ من المال مقابل كل نسخة تبيعها من برنامجك الذي صنعته بلغة البرمجة تلك وذلك عن طريق بيع نسخة من
Oracle Developer Runtime
مع كل نسخة تبيعها من برنامجك ، والذي لا تستطيع برامجك و التي صنعت عن طريق اوراكل ، العمل بدونها

كل النقاط السابقة تلك تؤثر كثيرا على عملية اختيارك لقاعدة البيانات المطلوبة


هناك بعض الأمور الاخرى التي تزعجني عند اوراكل مثل سياسة الترخيص مثلا ، فيحق لاوراكل ان تزورك مرة على الاقل لتدقيق عملك ، وعليك فتح قاعدة بياناتك لها للنظر فيها ، كما تمنعك اوراكل إجراء اية مقارنات على سرعة أنظمتها بدون الرجوع اليها
عكس مايكروسوفت والتي تسمح في سياسة الترخيص لديها توزيع النظام المصغر من
SQL Server 7
والمسمى
Microsoft Data Engine
مجانا مع البرامج التي تصنعها

لا اريد ان ازعجكم بمقارنات اكثر ، فانا اخترت قبل مدة
SQL Server
وهناك من اختار
Oracle
وكل واحد حر في اختياره وطريقة مقارنته

ولننتقل الى صلب الموضوع ونبدء باستخدام
Microsoft SQL Server 7.0

أجزاء Microsoft SQL Server 7 وبعض المعلومات عنها
 

أجزاء
Microsoft SQL Server 7
وبعض المعلومات عنها

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

والأجزاء هي

SQL Server Enterprise Manager

 

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

SQL Server Client Network Utility

وهو برنامج صغير يساعدك في توصيف أجهزة تحمل محرك قواعد بيانات ل
SQL Server
تجهيزا لإدارتها عن بعد عن طريق أل
Enterprise Manager
ويستخدم في حالة الحاجة إلى إدارة جهاز مركزي بعيد في شبكة أخرى كإنترنت مثلا

SQL Server Network Utility

يحدد البروتوكولات التي يمكن لمحرك قواعد البيانات من استخدامها لتوزيع البيانات على الشبكة الداخلية وعلى إنترنت

SQL Server Performance Monitor

وهي إضافة لنظام المراقبة الرئيسي الخاص ب
Windows NT
حيث تسمح لك تلك الإضافة مراقبة محرك قواعد البيانات المركزية عن طريق البرنامج السابق ، فعن طريقه تستطيع معرفة تفاصيل دقيقة عن عدد المتصلين بقاعدة البيانات في أوقات مختلفة ، أو عن حجم الضغط عليها ، عدد الطلبات ، حجمها في القرص الصلب ، الخ

SQL Server Profiler

برنامج رائع لمراقبة كافة أوامر أل
Transact SQL
المرسلة من المستخدمين إلى النظام المركزي ، فهو يعرض لك الأوامر المرسلة ووقت التنفيذ لحظة بلحظة ، و هو رائع لاستخدام المبرمجين
يمكن استخدامه لوحده أو كجزء من برنامج الإدارة الرئيسي

SQL Server Query Analyzer

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

SQL Server Service Manager

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

SQL Server Books Online

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

SQL Server OLAP

هذا نظام آخر ضخم مرفق مع
Microsoft SQL Server 7.0
ويسمح لك بناء قواعد بيانات ثلاثية الأبعاد
(كما اسميها أنا)
وذلك باستخدام الجداول والبيانات من قواعد البيانات الموجودة مسبقاً ، وذلك بهدف تحليلها والحصول على تقارير منها ، ذلك البرنامج هو  من التكنولوجيا الجديدة والتي ترفق مجانا مع
SQL Servers
وهو مكلف للغاية إن حاولت شرائه من شركات أخرى مثل اوراكل أو غيرها ، وسأقوم بشرح ذلك النظام وطريقة برمجته في المرحلة المتقدمة


هناك مجموعة أخرى من البرمجيات الصغيرة والمخصصة لمحبي استخدام شاشات
DOS
القديمة ، حيث تسمح لهم تلك البرمجيات بالقيام بعدة عمليات على النظام

كما أن هناك ثلاثة كائنات مخصصين لبرمجة النظام ، وتستطيع بواسطتهم القيام بكل ما يقوم به برنامج الإدارة المركزي وذلك بكل سهولة ، حيث تستطيع صناعة برنامج إدارة خاص بك لو رغبت بذلك

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

تلك كانت البرامج التي يتكون منها
Microsoft SQL Server 7.0
وللتذكير معظمها مدمج في برنامج الإدارة الرئيسي لهذا النظام ، أي في
Microsoft SQL Server 7.0 Enterprise Manager

 

محرك قاعدة البيانات فيMicrosoft SQL Server 7 والكثير عنه 
من الضروري التحدث قليلاً عن محرك قاعدة البيانات قبل بدئك باستخدام برنامج
Microsoft SQL Server 7.0
حيث سأحاول أن اشرح طريقة عمل ذلك المحرك وأجزائه وحدوده القصوى ، اعتقد بان ذلك معلومات مهمة على الجميع أن يعرفها ، أو على الأقل يعرف القليل عنها

يتكون المحرك الخاص بقاعدة البيانات من ثلاثة برامج معتمدة على بعضها البعض ، مع العلم أيضاً انه قادر على الاستغناء عنها والعمل لوحده ، ولكن ذلك سيقلل من مميزاته قليلاُ ، والأجزاء هي

MS SQL Server

محرك قاعدة البيانات ، وهو المسؤول عن كل العمليات على البيانات

SQL Server Agent

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

Distributed Transaction Coordinator

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


وكلاهما مخصصة للعمل على شكل
Services
وتستطيع تشغيلها وإيقافها عن طريق لوحة أيقونة أل
Services
في لوحة التحكم

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

أجزاء قاعدة البيانات

كما سنلاحظ مستقبلاً عند صناع أول قاعدة بيانات لنا ، سنلاحظ بان قاعدة البيانات تتكون من ملفين ، كل قواعد البيانات بدون استثناء
الملف الأول وامتداده
.mdf
وبه تخزن البيانات
والملف الثاني وامتداده
.ldf
وبه تخزن كل الحركات التي تتم على قاعدة البيانات

كما تستطيع قاعدة البيانات استخدام اكثر من ملف من النوع السابق معا وذلك بهدف تقسيم البيانات على عدة أقراص صلبة

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

ولكن الموضوع لا ينتهي عند ذلك الحد ، فان تستطيع الطلب من محرك قاعدة البيانات بان يقوم بإلغاء كل التعديلات التي حدثت على قاعدة البيانات في فترة معينة ، أي آخر ساعتين مثلا ، وسيقوم هو بذلك باستخدام هذا الملف ، وسيرجعها كما كانت

أنا شخصيا استفدت من تلك المميزة كثيرا ، عندما وظفت مدخل بيانات في الشركة التي اعمل بها ، فأراد أن ينهي عمله سريعا ، ودمر جزء كبير من البيانات ، فلقد ألغيت كل ما قام به آخر ساعة ونصف ، وذلك بكل بساطة

الحدود القصوى لمحرك قاعدة البيانات

هذه مقارنة حصلت عليها من ملف المساعدة وتبين الحدود القصوى لكل من النسخة 6.5 والنسخة 7.0 من نظام

 

SQL Server 6.5

SQL Server 7.0

Configuration values

Minimum

Maximum

Minimum

Maximum

affinity mask

0

2,147483,647

0

2,147,483,647

allow updates

0

1

0

1

backup buffer size

1

32

N/A

N/A

backup threads

0

32

N/A

N/A

cost threshold for parallelism

N/A

N/A

0

32,767

cursor threshold

-1

2,147483,647

-1

2,147,483,647

database size

2

10,000

N/A

N/A

default language

0

9,999

0

9,999

default sort order id

0

255

0

255

extended memory size (MB)

N/A

N/A

0

2,147,483,647

fill factor (%)

0

100

0

100

free buffers

20

524,288

N/A

N/A

hash buckets

4,999

265,003

N/A

N/A

index create memory (K)

N/A

N/A

704

1,600,000

language in cache

3

100

3

100

language neutral full-text indexing

N/A

N/A

0

1

LE threshold maximum

2

500000

N/A

N/A

LE threshold minimum

2

500000

N/A

N/A

LE threshold percent

1

100

N/A

N/A

lightweight pooling

N/A

N/A

0

1

locks

5000

2,147,483,647

5000*

2,147,483,647*

LogLRU buffers

0

2,147,483,647

N/A

N/A

logwrite sleep (ms)

-1

500

N/A

N/A

max async IO

1

1,024

1

255

max degree of parallelism

N/A

N/A

0

32

max lazywrite IO

1

1,024

N/A

N/A

max server memory (MB)

N/A

N/A

4 *

2,147,483,647*

max text repl size

0

2,147,483,647

0

2,147,483,647

max worker threads

10

1,024

10

1,024

media retention

0

365

0

365

memory

2800

1,048,576

N/A

N/A

min memory per query (K)

N/A

N/A

512

2,147,483,647

min server memory (MB)

N/A

N/A

0*

2,147,483,647*

nested triggers (bytes)

0

1

0

1

network packet size

512

32,767

4,096

65,535

open databases

5

32,767

N/A

N/A

open objects

100

2,147,483,647

0*

2,147,483,647*

priority boost

0

1

0

1

procedure cache

1

99

N/A

N/A

Protection cache size

1

8,192

N/A

N/A

query governor cost limit

N/A

N/A

0

2,147,483,647

query wait (s)

N/A

N/A

-1

2,147,483,647

RA cache hit limit

1

255

N/A

N/A

RA cache miss limit

1

255

N/A

N/A

RA delay

0

500

N/A

N/A

RA pre-fetches

1

1,000

N/A

N/A

RA slots-per-thread

1

255

N/A

N/A

RA worker threads

0

255

N/A

N/A

recovery flags

0

1

N/A

N/A

recovery interval (min)

1

32,767

0

32,767

remote access

0

1

0

1

remote conn timeout

-1

32,767

N/A

N/A

remote login timeout

0

2,147,483,647

0

2,147,483,647

remote proc trans

0

1

0

1

remote query timeout

0

2,147,483,647

0

2,147,483,647

remote sites

0

256

N/A

N/A

resource timeout

5

2,147,483,647

5

2,147,483,647

scan for startup procs

N/A

N/A

0

1

set working set size

0

1

0

1

show advanced options

0

1

0

1

SMP concurrency

-1

64

N/A

N/A

sort pages

64

511

N/A

N/A

spin counter

1

2,147,483,647

1

2,147,483,647

tempdb in RAM (MB)

0

2,044

N/A

N/A

time slice

50

1,000

50

1,000

Unicode comparison style

N/A

N/A

0

2,147,483,647

Unicode locale id

N/A

N/A

0

2,147,483,647

user connections

5

32,767

0*

32,767 (server)*

user options

0

4,095

0

4,095

* Lower or upper limit for objects allocated dynamically.


الحدود العليا

Maximum Capacity Specifications

This table specifies the maximum sizes and numbers of various objects defined in Microsoft® SQL Server™ databases, or referenced in Transact-SQL statements.

 

Maximum sizes/numbers

Object

SQL Server 6.5

SQL Server 7.0

Batch size

128 KB

65,536* Network Packet Size

Bytes per short string column

255

8000

Bytes per text, ntext, or image column

2 GB-2

2 GB-2

Bytes per GROUP BY, ORDER BY

900

8060

Bytes per index

900

900

Bytes per foreign key

900

900

Bytes per primary key

900

900

Bytes per row

1962

8060

Bytes in source text of a stored procedure

65025

Lesser of batch size or 250 MB

Clustered indexes per table

1

1

Columns in GROUP BY, ORDER BY

16

Limited only by number of bytes

Columns or expressions in a GROUP BY WITH CUBE or WITH ROLLUP statement

10

10

Columns per index

16

16

Columns per foreign key