في حال استخدام قاعدة بيانات ليتم استخدامها من قبل مستخدمين على الشبكة:
فإن تحزيم التطبيق و استخدامه عند الخادم يحتاج إلى أن تنسخ قاعدة البيانات إلى مكان آمن مثل Appdata أو mydoc, ومن ثم تقوم بعمل attach لها على السيرفر الحالي.
بالنسبة لل attach , هناك العديد من الطرق:
1-عند طريق استخدام create database statement
2- أو sys.sp_attach_db
3- أو sys.sp_attach_single_file_db
فمثلا لإستخدام الطريقة الأولى, يمكنك عمل batch file وتنفيذه عند الإنتهاء من تنصيب البرنامج:
هذا الملف سيحتوي على التالي:
PHP كود :
sqlcmd -S Server\Instance
USE [master]
GO
CREATE DATABASE [test] ON
( FILENAME = N'<path to database file>\test.mdf' ),
( FILENAME = N'<path to log file>\test_log.ldf' )
FOR ATTACH ;
GO
في حال كان السيرفر يحتوي على instance واحد و افتراضي يمكن كتابة ip السيرفر أو اسم السيرفر فقط. عند أول سطر.
طبعا يجب أن يكون لهذا المستخدم الحالي صلاحيات الولوج إلى sql server
وهكذا تكون قد نصبت برنامجك و ربطت ملفات قاعدة البيانات مع السيرفر.
أما عند جهاز الزبون فأنت لست بحاجة إلى تضمين ملفات ال database مع التحزيم, أنت بحاجة إلى تحزيم ال sql server native client الخاص بالنسخة التي تعمل عليها.
حتى يستطيع هذا الأخير من الإتصال بالسيرفر.
بالنسبة لطريقة تضمين هذا الأخير مع التحزيم, إذا لم تكن هذه الميزة موجودة في برنامج التحزيم الذي تستعمله, فيمكنك أيضا عمل batch file و تنفيذه في أحد مراحل التنصيب.
هذا ال batch file سيحتوي على script تنصيب ال sql server native client ولكن بشكل صامت كالآتي:
PHP كود :
msiexec /i <filename> /qn IACCEPTSQLNCLILICENSTERMS=YES
filename.exe هو يجب أن يكون اسم ملف ال native client الخاص بنسخة قاعدة البيانات المستخدمة.
كل ما سبق كان بالنسبة لقاعدة بيانات تستخدم من قبل عدة مستخدمين على الشبكة.
أما في حال عمل برنامج يستخدم ملفات sql server من أجل مستخدم واحد فقط و ليش للإستخدام الشبكي, فهنا يمكن أن يكون الإتصال مع ملفات قاعدة البيانات عن طريق الدلفي مباشرة
وذلك عن طريق استخدام محرك local db و كتابة ال connection string إذا كنت تستخدم ado كالآتي: (طبعا بعد نسخ ملفات ال database إلى مكان آمن كما ذكرت مسبقا).
كود :
ADOConnection1.ConnectionString :=
'Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog="";Data Source=(localdb)\v11.0;Initial File Name=' + '<path of mdf>\<name>.mdf;DataTypeCompatibility=80;Server SPN=""';
ADOConnection1.Connected := True;
v11.0, تعود إلى نسخة ال local db المستخدمة.
وهنا أيضا يجب تثبيت ملف ال native client و ملف ال engine الخاص بالنسخة المستخدمة و ذلك عن طريق ملف batch كالآتي:
PHP كود :
msiexec /i <filename> /qn IACCEPTSQLNCLILICENSETERMS=YES
msiexec /i <filename> /qn IACCEPTSQLLOCALDBLICENSETERMS=YES
ولا تنسى أن بعض أجهزة الزبائن منها 32 بت و منها 64 بت, فيجب اختيار الملفات المناسبة, وإذا كنت تواجه صعوبة في تحديد ذلك عن طريق برنامج التحزيم, يمكنك تثبيت الكل بشكل صامت و النظام سيقبل تثبيت النسخة المناسبة له تلقائيا.
وأخيرا أتمنى أن يكون هذا واضح بعض الشيء, وفق الله الجميع لما يحب و يرضى.