الاصدقاء الاكارم السلام عليكم و رحمة الله و بركاته تحية طيبة
في هذا التطبيق سنتحدث عن تحويل قاعدة بيانات اكسس الى sql برمجيا
حيث سنقوم بانشاء قاعدة البيانات على السيرفر و تصدير الجداول لها باستخدام SQL scripts
ملاحظة هامة : العمل سيتم على SQL 2005 وما فوق
بعد البحث و التجريب وصلت الى كود يقوم بانشاء قاعدة بيانات SQL وتصدير كافة الجداول لها
Dim ConData As New ADODB.Connection
Dim Str_Data As String
Dim Str_Use As String
Dim TableName As String
Dim Tdf As TableDef
ConData.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=HP-PC\SQLEXPRESS"
Str_Data = "Create database DB1"
Str_Use = "Use DB1"
ConData.Execute (Str_Data)
ConData.Execute (Str_Use)
For Each Tdf In CurrentDb.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
If Len(Tdf.Connect) = 0 Then
DoCmd.TransferDatabase acExport, "ODBC Database", "ODBC;Driver={SQL Server};Server=HP-PC\SQLEXPRESS" & _
";Database=DB1" & ";Trusted_Connection=Yes", acTable, Tdf.Name, Tdf.Name
End If
End If
Next
الكود السابق يقوم بانشاء قاعدة بيانات باسم DB1 ويصدر كافة الجداول لها
عظيم جدا و تمام التمام لكن هناك مشكلة صغيرة جدا
المفاتيح الاساسية و الفهارس و العلاقات لم يتم تصديرها !!!!!! وبالتالي لن تعمل قاعدة البيانات ابدا
بحثت كثيرا و حاولت تعديل الكود السابق و لكن دون جدوى
لذلك كان لا بد من البحث عن طريقة اخرى لنصل للمطلوب و الطريقة هي انشاء الجداول و المفاتيح و الفهارس و العلاقات عن طريق اكواد SQL او ما يسمى SQL scripts , سيتسائل البعض كيف ذلك ؟؟
البداية :
عند الانتهاء من تصميم قاعدة البيانات سنستخدم معالج التكبير لمرة واحدة فقط من اجل الحصول على الكود او ملف SQL scripts وبعد ذلك سنضيف الكود الى ملف ونستخدم ذلك الملف متى اردنا
نفتح قاعدة البيانات التي نرغب بتحويلها و نضغط على ادوات قاعدة البيانات ثم نختار (خادم SQL)
1- انشاء قاعدة بيانات جديدة ( في هذا المثال اسم قاعدة البيانات test SQL 1 )
2- نحدد اسم السيرفر و اسم قاعدة البيانات المطلوبة ( الاتصال موثوق ) ( التالي )
3- نحدد كافة الجداول ( التالي )
4- نحدد ( فهارس - قواعد التحقق من الصحة - افتراضيات - علاقات الجداول ) و نستخدم (مشغلات عوضا عن DRI) ( التالي )
5- نحدد (عدم اجراء اية تغييرات للتطبيق) (انهاء)
سيبدا المعالج بترحيل كافة الجداول الى السيرفر
بعد الانتهاء نغلق برنامج الاكسس و نذهب الى برنامج SQL Server Management Studio (ملاحظة هذا البرنامج لادارة قواعد البيانات و يختلف عن برنامج SQL server )
نحدد السيرفر ونختار نوع المصادقة (حسابات ويندوز) ثم اتصال سيفتح البرنامج
نختار Databases ثم نحدد قاعدة البيانات المطلوبة
نضغط بالزر الايمن للفارة و نختار من القائمة Tasks ثم Generate Scripts
تظهر نافذة جديدة نختار منها التالي ونحدد قاعدة البيانات Test SQL 1 ثم التالي
تعدل الخيارات التالية:
include if not exists = false
script defaults = false
scripts extended properties = false
scripts owner = false
scripts full-text indexes = true
scripts indexes = true
ثم التالي
نحدد (tables) ثم التالي
نحدد كافة الجداول ثم انهاء و نضغط انهاء مرة اخرى
سيظهر لنا السكريبت الخاص بانشاء الجداول و المفاتيح و الفهارس و العلاقات
ننسخ الكود بشكل كامل و نحفظه ضمن ملف نصي نسميه مثلا (Test1)
نعود الى صديقنا الاكسس
ننشئ نموذجا جديدا ونضع فيه حقلي نص باسم (tservername - tdatabasename) وزر امر
نكتب الكود التالي في زر الامر
Dim ConData As New ADODB.Connection
Dim Str_Data As String
Dim Str_Use As String
' فتح الاتصال مع السيرفر
ConData.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=" & Me.tservername
' انشاء قاعدة البيانات
Str_Data = "Create database " & Me.TDataBaseName
Str_Use = "Use " & Me.TDataBaseName
ConData.Execute (Str_Data)
ConData.Execute (Str_Use)
MsgBox "تم انشاء قاعدة البيانات بنجاح" & vbCrLf & "جاري تصدير الجداول", vbInformation + vbMsgBoxRight
' تنفيذ السكريبت ضمن قاعدة البيانات لانشاء الجداول و الفهارس و العلاقات
Shell "sqlcmd.exe -S " & Me.tservername & " -d " & Me.TDataBaseName & " -i " & CurrentProject.Path & "\test1.txt", 0
MsgBox "تم انشاء الجداول بنجاح", vbInformation
' اغلاق الاتصال
ConData.Close
طبعا الملف test1.txt يجب ان يكون في نفس مسار قاعدة البيانات
المرفق يختلف قليلا عن الشرح فهو يساعدك في اختيار السيرفر تلقائيا
اعتذر على الاطالة في الشرح
رابط البرنامج مع فيديو للشرح
http://www.mediafire.com/file/x14w1p4qbqewd4k/SQL1.rar
في هذا التطبيق سنتحدث عن تحويل قاعدة بيانات اكسس الى sql برمجيا
حيث سنقوم بانشاء قاعدة البيانات على السيرفر و تصدير الجداول لها باستخدام SQL scripts
ملاحظة هامة : العمل سيتم على SQL 2005 وما فوق
بعد البحث و التجريب وصلت الى كود يقوم بانشاء قاعدة بيانات SQL وتصدير كافة الجداول لها
Dim ConData As New ADODB.Connection
Dim Str_Data As String
Dim Str_Use As String
Dim TableName As String
Dim Tdf As TableDef
ConData.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=HP-PC\SQLEXPRESS"
Str_Data = "Create database DB1"
Str_Use = "Use DB1"
ConData.Execute (Str_Data)
ConData.Execute (Str_Use)
For Each Tdf In CurrentDb.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
If Len(Tdf.Connect) = 0 Then
DoCmd.TransferDatabase acExport, "ODBC Database", "ODBC;Driver={SQL Server};Server=HP-PC\SQLEXPRESS" & _
";Database=DB1" & ";Trusted_Connection=Yes", acTable, Tdf.Name, Tdf.Name
End If
End If
Next
الكود السابق يقوم بانشاء قاعدة بيانات باسم DB1 ويصدر كافة الجداول لها
عظيم جدا و تمام التمام لكن هناك مشكلة صغيرة جدا
المفاتيح الاساسية و الفهارس و العلاقات لم يتم تصديرها !!!!!! وبالتالي لن تعمل قاعدة البيانات ابدا
بحثت كثيرا و حاولت تعديل الكود السابق و لكن دون جدوى
لذلك كان لا بد من البحث عن طريقة اخرى لنصل للمطلوب و الطريقة هي انشاء الجداول و المفاتيح و الفهارس و العلاقات عن طريق اكواد SQL او ما يسمى SQL scripts , سيتسائل البعض كيف ذلك ؟؟
البداية :
عند الانتهاء من تصميم قاعدة البيانات سنستخدم معالج التكبير لمرة واحدة فقط من اجل الحصول على الكود او ملف SQL scripts وبعد ذلك سنضيف الكود الى ملف ونستخدم ذلك الملف متى اردنا
نفتح قاعدة البيانات التي نرغب بتحويلها و نضغط على ادوات قاعدة البيانات ثم نختار (خادم SQL)
1- انشاء قاعدة بيانات جديدة ( في هذا المثال اسم قاعدة البيانات test SQL 1 )
2- نحدد اسم السيرفر و اسم قاعدة البيانات المطلوبة ( الاتصال موثوق ) ( التالي )
3- نحدد كافة الجداول ( التالي )
4- نحدد ( فهارس - قواعد التحقق من الصحة - افتراضيات - علاقات الجداول ) و نستخدم (مشغلات عوضا عن DRI) ( التالي )
5- نحدد (عدم اجراء اية تغييرات للتطبيق) (انهاء)
سيبدا المعالج بترحيل كافة الجداول الى السيرفر
بعد الانتهاء نغلق برنامج الاكسس و نذهب الى برنامج SQL Server Management Studio (ملاحظة هذا البرنامج لادارة قواعد البيانات و يختلف عن برنامج SQL server )
نحدد السيرفر ونختار نوع المصادقة (حسابات ويندوز) ثم اتصال سيفتح البرنامج
نختار Databases ثم نحدد قاعدة البيانات المطلوبة
نضغط بالزر الايمن للفارة و نختار من القائمة Tasks ثم Generate Scripts
تظهر نافذة جديدة نختار منها التالي ونحدد قاعدة البيانات Test SQL 1 ثم التالي
تعدل الخيارات التالية:
include if not exists = false
script defaults = false
scripts extended properties = false
scripts owner = false
scripts full-text indexes = true
scripts indexes = true
ثم التالي
نحدد (tables) ثم التالي
نحدد كافة الجداول ثم انهاء و نضغط انهاء مرة اخرى
سيظهر لنا السكريبت الخاص بانشاء الجداول و المفاتيح و الفهارس و العلاقات
ننسخ الكود بشكل كامل و نحفظه ضمن ملف نصي نسميه مثلا (Test1)
نعود الى صديقنا الاكسس
ننشئ نموذجا جديدا ونضع فيه حقلي نص باسم (tservername - tdatabasename) وزر امر
نكتب الكود التالي في زر الامر
Dim ConData As New ADODB.Connection
Dim Str_Data As String
Dim Str_Use As String
' فتح الاتصال مع السيرفر
ConData.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=" & Me.tservername
' انشاء قاعدة البيانات
Str_Data = "Create database " & Me.TDataBaseName
Str_Use = "Use " & Me.TDataBaseName
ConData.Execute (Str_Data)
ConData.Execute (Str_Use)
MsgBox "تم انشاء قاعدة البيانات بنجاح" & vbCrLf & "جاري تصدير الجداول", vbInformation + vbMsgBoxRight
' تنفيذ السكريبت ضمن قاعدة البيانات لانشاء الجداول و الفهارس و العلاقات
Shell "sqlcmd.exe -S " & Me.tservername & " -d " & Me.TDataBaseName & " -i " & CurrentProject.Path & "\test1.txt", 0
MsgBox "تم انشاء الجداول بنجاح", vbInformation
' اغلاق الاتصال
ConData.Close
طبعا الملف test1.txt يجب ان يكون في نفس مسار قاعدة البيانات
المرفق يختلف قليلا عن الشرح فهو يساعدك في اختيار السيرفر تلقائيا
اعتذر على الاطالة في الشرح
رابط البرنامج مع فيديو للشرح
http://www.mediafire.com/file/x14w1p4qbqewd4k/SQL1.rar