يتضمن VWD2005 SQL Server 2005 Express Edition، وهو إصدار مجاني من SQL Server 2005 يستهدف المطورين غير المحترفين أو المتحمسين الذين يرغبون في إنشاء تطبيقات باستخدام حل قاعدة بيانات بسيط. نظرًا لأن SQL Server Express يدعم نموذج برمجة SQL Server الكامل، مثل SQLCLR وT-SQL والإجراءات المخزنة وطرق العرض والمشغلات وأنواع بيانات XML، فيمكنك استخدام SQL Server Express للتعرف على هذه التقنيات والتأكد من إمكانية تشغيل تطبيقاتك على الأنظمة الأساسية ذات المستوى الأعلى (مثل SQL Server Enterprise Edition). من السهل تنزيل SQL Server Express وتثبيته (حجمه أقل من 36 ميجابايت)، وهو مضمن في Visual Studio 2005 وVisual Web Developer 2005.
يتضمن Visual Studio أدوات لإدارة قواعد البيانات، مثل Database Explorer وQuery Builder، والتي يمكنك استخدامها لإدارة قواعد بيانات SQL Server Express. يدعم Visual Studio أيضًا قاعدة بيانات جديدة قائمة على الملفات لإنشاء قواعد بيانات SQL Server Express كجزء من المشروع. وفي الوقت نفسه، يوفر Visual Studio 2005 وSQL Server 2005 Express حلاً كاملاً لبناء ونشر تطبيقات الويب المعتمدة على البيانات، بما في ذلك الميزات التالية:
· عناصر بيانات مشروع قاعدة البيانات
· اتصال قاعدة البيانات المحلية
· إدارة مستعرض قاعدة البيانات
· سلاسل اتصال المسار النسبي
· دعم نشر XCopy
· دعم تصحيح الأخطاء المتكامل
توضح هذه المقالة أسلوب قاعدة البيانات المستندة إلى الملفات في Visual Studio 2005 وكيف يقوم المصمم بإنشاء قواعد البيانات هذه واستخدامها.
يوفرVisual Web Developer وDataVisual
Web Developer عددًا من الأدوات لاستخدام قواعد البيانات مع تطبيقات الويب. يمكنك استخدام مستعرض قاعدة البيانات للاتصال بقاعدة بيانات بسهولة وإنشاء رسم تخطيطي أو مخطط لقاعدة البيانات أو عرضه. يمكنك أيضًا استخدام مربع حوار منشئ الاستعلام وجدول نتائج الاستعلام للاستعلام عن قاعدة البيانات وتعبئة البيانات. يتم أيضًا توفير إنشاء قواعد بيانات جديدة (باستخدام الملفات المحلية) كعناصر بيانات المشروع.
بمجرد الاتصال بقاعدة البيانات في Visual Web Developer، يمكنك سحب وإفلات جداول قاعدة البيانات مباشرة على الصفحة لإنشاء عنصر تحكم GridView مرتبط بالبيانات. يقوم Visual Web Developer تلقائيًا بإنشاء عنصر تحكم مصدر بيانات مرتبط ويقوم بتكوين عمليات التحديد والتحديث والإدراج والحذف الخاصة به استنادًا إلى جدول البيانات. توفر لك هذه العملية السريعة الكثير من العمل المطلوب لإنشاء مصدر بيانات يدويًا، ويمكنك بسهولة استبدال GridView بعنصر تحكم مناسب مرتبط بالبيانات حسب الحاجة.
قواعد البيانات المحلية وقواعد البيانات الخاصة بالخادم
ربما تكون على دراية بقواعد البيانات المستندة إلى الخادم وسلاسل الاتصال. في هذه الحالة، يقوم خادم قاعدة البيانات (مثل SQL Server 2005) بربط اسم قاعدة البيانات بملف قاعدة البيانات الذي يحتفظ به الخادم. يمكنك الاتصال بقاعدة بيانات مستندة إلى خادم عن طريق تحديد اسم الخادم واسم قاعدة البيانات وبيانات الاعتماد، على سبيل المثال:
"server=(local)SQLExpress;database=Pubs;Integrated Security=true"
ومع ذلك، يدعم Visual Studio 2005 أيضًا مفهوم قواعد البيانات المحلية، وهو ملف يضاف إلى دليل App_Data لتطبيق الويب الحالي. من الآمن تخزين ملفات البيانات في دليل App_Data لأن محتويات هذا الدليل لن تستجيب أبدًا لطلبات المستخدم. يعد هذا الدليل أيضًا الموقع الموصى به لتخزين ملفات XML وتخزين البيانات الأخرى. تحتوي قواعد بيانات SQL Server Express الأصلية على ملحق .MDF (مثل "MyDatabase.MDF")، وهو تنسيق ملف قياسي يدعمه SQL Server. عند الاتصال بالخادم، تحتوي قاعدة البيانات أيضًا على ملف سجل مرتبط (مثل "MyDatabase_log.LDF"). يجب أن يكون موقع ملف قاعدة البيانات وملف السجل معًا.
يمكننا إرفاق قاعدة بيانات ملفات محلية تلقائيًا بـ SQL Server Express باستخدام سلسلة اتصال مسار نسبي. تضمن المسارات النسبية عدم انقطاع اتصال قاعدة البيانات عند نقل التطبيق إلى أي موقع آخر. تبدو سلسلة اتصال المسار النسبي في تطبيق الويب كما يلي:
"server=(local)SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true"
تحتوي سلسلة الاتصال أعلاه على سمتين إضافيتين إضافيتين . تحدد الخاصية AttachDbFileName موقع ملف قاعدة البيانات المرتبط بشكل حيوي بالخادم عند فتح الاتصال. على الرغم من أن هذه الخاصية يمكن أن تقبل المسار الكامل لقاعدة البيانات (على سبيل المثال، باستخدام بناء الجملة |DataDirectory|)، إلا أنه في وقت التشغيل سيتم استبدال هذا المسار بدليل App_Data الخاص بالتطبيق. ويضمن هذا أيضًا عدم انقطاع الاتصالات عند نقل التطبيق إلى موقع آخر. الخاصية الثانية هي مثيل المستخدم = صحيح، والتي تحدد كيفية قيام SQL Server Express بإرفاق قاعدة البيانات. في هذه الحالة، يقوم SQL Server Express بإنشاء عملية جديدة لربط قاعدة البيانات بالمثيل الجديد، وتشغيله كمستخدم قام بفتح الاتصال. في تطبيق ASP.NET، يكون هذا المستخدم هو حساب ASPNET المحلي أو خدمة الشبكة الافتراضية، وفقًا لنظام التشغيل. لإرفاق ملفات قاعدة البيانات المقدمة من حسابات غير المسؤولين بشكل آمن (مثل حسابات ASP.NET)، من الضروري إنشاء مثيل مستخدم SQL Server منفصل.
يرجى ملاحظة: نظرًا لأن جميع تطبيقات ASP.NET تعمل بشكل افتراضي في نفس العملية، فسوف تقوم جميع التطبيقات بإرفاق قاعدة البيانات المحلية بنفس مثيل SQL Server Express. وهذا يعني أن كافة التطبيقات لديها نفس الوصول إلى كافة قواعد البيانات المرفقة بهذا المثيل، بغض النظر عن قاعدة البيانات التي يرتبط بها التطبيق في الأصل. لعزل التطبيقات المختلفة، يجب تشغيل كل تطبيق في عملية عاملة مختلفة أو تجمع تطبيقات (في IIS 6). لهذا السبب، تهدف قاعدة بيانات SQL Server المحلية في المقام الأول إلى تسهيل التطوير وليس المقصود منها أن تحل محل قاعدة البيانات المستندة إلى الخادم في بيئة استضافة مشتركة.
نقطة أخرى مهمة هي أنه لا يُسمح لمستخدمين بالاتصال بقاعدة بيانات محلية في نفس الوقت. عند تصميم تطبيق في Visual Studio، يقوم المصمم تلقائيًا بتحرير الاتصال للتأكد من أن Visual Studio وASP.NET يمكنه مشاركة ملفات قاعدة البيانات (على سبيل المثال، عند تصحيح أخطاء تطبيق قيد التشغيل في المصمم).
إنشاء قاعدة بيانات محلية
يمكنك بسهولة إنشاء قاعدة بيانات محلية في مشروع تطبيق Visual Studio Web. نظرًا لأن Visual Studio يأتي مزودًا بتثبيت SQL Server Express، يمكنك استخدام الخطوات التالية لإنشاء قاعدة بيانات محلية وإضافة الجداول وملء البيانات.
لإنشاء قاعدة بيانات محلية:
1. انقر بزر الماوس الأيمن فوق متصفح الحلول وحدد خيار "إضافة عنصر جديد...".
2. حدد العنصر "قاعدة بيانات SQL" وحدد اسم ملف، مثل "Database.mdf".
3. يطالب Visual Studio بإضافة هذا الملف إلى دليل App_Data. انقر فوق "نعم".
4. يضيف Visual Studio هذا الملف ويتصل تلقائيًا بقاعدة البيانات باستخدام متصفح قاعدة البيانات.
لإضافة جدول بيانات إلى قاعدة البيانات المحلية:
1. انقر بزر الماوس الأيمن فوق عقدة الجداول في متصفح قاعدة البيانات وحدد خيار "إضافة جدول جديد".
2. أدخل اسم العمود ونوعه في قاعدة البيانات، وقم بشكل اختياري بتعيين خصائص العمود الأخرى في جدول الخصائص. لإعداد نموذج قاعدة بيانات جهات الاتصال، اتبع الخطوات التالية.
3. قم بتعيين اسم العمود الأول على "ContactID" ونوع البيانات على "int". قم بإلغاء تحديد خانة الاختيار "السماح بالقيم الخالية".
4. انقر بزر الماوس الأيمن فوق المربع الرمادي الموجود على يسار عمود ContactID وحدد خيار "تعيين كمفتاح أساسي".
5. في جدول "خصائص العمود" أدناه، قم بتوسيع عقدة "مواصفات المعرف" وقم بتعيين "هل هو معرف" على "نعم".
6. قم بتعيين اسم العمود الثاني على "ContactName" ونوع البيانات على "varchar(50)". اترك مربع الاختيار "السماح بالقيم الخالية" محددًا.
7. اضغط على Ctrl-S لحفظ الجدول وقم بتعيين اسم الجدول على "جهات الاتصال". انقر فوق موافق لحفظ الجدول.
8. أغلق نافذة تعريف الجدول.
لملء جدول بالبيانات:
1. انقر بزر الماوس الأيمن فوق عقدة جدول البيانات (على سبيل المثال، "جهات الاتصال") في متصفح قاعدة البيانات وحدد الخيار "إظهار بيانات الجدول".
2. أدخل البيانات الخاصة بصفوف جدول البيانات بالشكل المعروض. إذا كنت تستخدم مثال جهات الاتصال أعلاه، فيمكنك إدخال قيمة في عمود اسم جهة الاتصال وستقوم قاعدة البيانات تلقائيًا بإنشاء قيمة معرف جهة الاتصال المقابلة.
3. أغلق نافذة الجدول.
الربط بقاعدة بيانات محلية
للربط بقاعدة بيانات محلية، تحتاج إلى تكوين عنصر تحكم مصدر بيانات ASP.NET للاتصال بالملف باستخدام اتصال مسار نسبي. لربط قاعدة بيانات SQL Server Express ببساطة بعناصر التحكم SqlDataSource وGridView، استخدم الخطوات التالية:
1. انقر نقرًا مزدوجًا فوق إحدى الصفحات في "مستعرض الحلول" (على سبيل المثال، "Default.aspx"). سيفتح Visual Studio هذه الصفحة.
2. حدد علامة التبويب "عرض التصميم" الموجودة أسفل نافذة الصفحة للتبديل إلى عرض التصميم.
3. انقر نقرًا مزدوجًا فوق ملف قاعدة البيانات (على سبيل المثال "Database.mdf") في متصفح الحلول. يفتح Visual Studio متصفح قاعدة البيانات للاتصال.
4. قم بتوسيع عقدة الجداول لعرض الجداول في قاعدة البيانات.
5. قم بسحب وإفلات الجدول في مستعرض قاعدة البيانات إلى الصفحة المفتوحة في طريقة عرض التصميم. يقوم Visual Studio بإنشاء GridView منضم إلى عنصر التحكم SqlDataSource.
6. قم بتوسيع "لوحة المعاملات الذكية" لعنصر تحكم GridView وحدد الترحيل والفرز والتحرير.
7. اضغط على Ctrl-F5 لتشغيل الصفحة (بدون تصحيح الأخطاء).
يوضح المثال التالي عنصر التحكم GridView وSqlDataSource المتصل بقاعدة بيانات محلية. لتشغيل هذا المثال، يجب أن يتمتع حساب عملية ASP.NET بأذونات القراءة/الكتابة لملفات MDF وLDF في دليل ~/App_Data. عملية إعداد الأذونات هي كما يلي:
1. حدد ملف ~/App_Data/Database.MDF في متصفح Windows وحدد "خصائص".
2. حدد علامة التبويب "الأمان" وانقر فوق "إضافة".
3. انقر فوق "الموقع..."، وحدد اسم جهاز الكمبيوتر الخاص بك (في أعلى القائمة)، ثم انقر فوق "موافق".
4. في منطقة النص "اسم الكائن"، أدخل اسم حساب عملية ASP.NET. بشكل افتراضي، الاسم في IIS 6.0 هو "خدمة الشبكة" وفي IIS 5.x هو "ASPNET".
5. حدد "قراءة" و"كتابة" في عمود "السماح" وانقر على "موافق".
6. إذا كان هناك ملف LDF في دليل App_Data، فستحتاج إلى تكرار الخطوات المذكورة أعلاه لتعيين خصائص ملف LDF.
إذا كنت تستخدم Visual Studio لإنشاء تطبيق على جهاز الكمبيوتر المحلي الخاص بك، فستكون لديك الأذونات المذكورة أعلاه بشكل افتراضي في دليل App_Data. إذا كان ملف قاعدة البيانات يحتاج إلى تغيير الأذونات بعد إرفاقه، فيجب عليك أولاً إغلاق مجال التطبيق قبل أن تصبح الأذونات الجديدة نافذة المفعول.
<asp:GridViewallowSorting="True" AutoGenerateColumns="False" DataKeyNames="ContactID" DataSourceID="SqlDataSource1" ID="GridView1" runat="server">
<الأعمدة>
<asp:BoundField DataField = "معرف جهة الاتصال" HeaderText = "المعرف" ReadOnly = "True" SortExpression = "ID" />
<asp:BoundField DataField = "اسم جهة الاتصال" HeaderText = "الاسم" SortExpression = "الاسم" />
</الأعمدة>
</asp:GridView>
<asp:SqlDataSource ConnectionString = "<%$ ConnectionStrings: ContactsDatabase %>" ID = "SqlDataSource1" runat = "server" SelectCommand = "SELECT [ContactID]، [ContactName] FROM [Contacts]" OnSelected = "SqlDataSource1_Selected" ></ asp:SqlDataSource>
نشر قاعدة بيانات محلية
إحدى مزايا ملف قاعدة البيانات المحلية هو أنه يمكن أن يصاحب التطبيق، ويتم نقله كجزء من التطبيق إلى مواقع أخرى أو إلى أجهزة كمبيوتر أخرى (بالطبع يجب أن يعمل الكمبيوتر أيضًا بنظام SQL Server يعبر). عند نقل قاعدة البيانات، يجب أن يكون الملف في حالة غير مؤمّنة. يتم تأمين الملف أثناء اتصال المصمم أو التطبيق بقاعدة البيانات. لإلغاء القفل، يجب إغلاق كافة الاتصالات النشطة بقاعدة البيانات. يمكنك استخدام الأساليب التالية لإغلاق اتصال قاعدة البيانات:
· إذا قام ASP.NET بفتح الاتصال، فيمكنك إغلاق مجال التطبيق عن طريق إضافة ملف "app_offline.htm" إلى الدليل الجذر لتطبيق الويب. وتتمثل مهمتها في إغلاق مجال التطبيق (وليس العملية) وإعادة توجيه جميع طلبات التطبيق إلى هذا الملف (إرجاع رمز الاستجابة 404). إذا كنت تريد إعادة تشغيل التطبيق، فما عليك سوى حذف هذا الملف. يرجى ملاحظة أن مجرد إغلاق الاتصال في رمز الصفحة لن يؤدي إلى تحرير قفل الملف، لأنه بشكل افتراضي، يحتفظ تجمع اتصالات ADO.NET بالاتصالات النشطة.
يوفر Visual Studio ميزة نسخ الويب، والتي يمكنها نسخ ملفات التطبيق من دليل العمل إلى الخادم الهدف باستخدام xcopy أو FTP أو ملحق خادم FrontPage. يمكن أن يكون الكمبيوتر المستهدف محليًا أو بعيدًا. يمكنك استدعاء ميزة نسخ الويب عن طريق تحديد "موقع ويب > نسخ موقع ويب..." من شريط قوائم Visual Studio.
على الرغم من أنه يمكنك استخدام Copy Web أو عملية xcopy أو FTP بسيطة لنقل قاعدة البيانات، لكي يستمر التطبيق في العمل، يجب أن يقوم الكمبيوتر الهدف بتشغيل SQL Server Express (تحت نفس اسم المثيل). لقد ذكرنا سابقًا أنه نظرًا لأن جميع التطبيقات التي تعمل بنظام ASP.NET متصلة بنفس مثيل SQL، فيجب أن تثق جميع التطبيقات الموجودة على الكمبيوتر الهدف ببعضها البعض. إذا لم يتمكن أحد التطبيقات من رؤية قاعدة بيانات تطبيق آخر، فإننا نوصي باستخدام أسلوب يستند إلى الخادم (باستخدام مصادقة SQL أو تقنيات الفصل الأخرى) بدلاً من قاعدة البيانات المحلية. إذا كنت تستخدم SQL Server Express كأداة تطوير، فستحتاج إلى نسخ محتوى قاعدة بيانات SQL Server Express للعملاء كجزء من نشر الإنتاج.