PDA

View Full Version : گفتگو: استفاده اکسس در شبکه



dadsara
سه شنبه 09 تیر 1388, 12:55 عصر
سلام
ضمن تشکر از تمامی دوستان ، به استحضار می رسانم من یک نرم افزار دارم (فرض کنید دبیرخانه) در حال حاضر 15000 رکورد دارد و سیستم عامل سرور من Win 2003 ( ورک گروپ ) می باشد تعدادی کاربر بطور مداوم از این نرم افزار استفاده می کنند ( هر کاربر بواسطه وظیفه : جهت پاسخگوئی ، تهیه لیست ارسال مراسلات ، ایجاد ، تصحیح و . . . ) تمام قسمتهای برنامه نیز با استفاده از رکوردست و دستورات VB تهیه شده است از جمله :حذف رکورد ، جستجو ، چاپ ، ایجاد ، تصحیح و . . .
مشکلی که در حال حاضر دارم این است که اولین کاربر می تواند به راحتی وارد برنامه شود و عملیات خود را انجام دهد ولی زمانی که تعداد کاربران از دومی میگذرد فقط هنگام لود شدن فرمها زمان زیادی (حدود 15 ثانیه) صرف می شود
- در حال حاضر جداول روی سرور(Share) است و در کلاینتها جداول لینک شده اند ولی فرمها و ماژولها و . . . برروی خود کلاینت نصب می باشد
من می خواهم پیشنهاد عزیزانی که درخصوص آیا:( بانک در SQL باشد و از اکسس پروجکت استفاده شود یا بانک در SQL باشد و با اکسس معمولی آنرا لینک کنیم و یا . . . ؟ بدانم
- ضمنا توضیح بدهم قبلا در اینخصوص تاپیکهای متعددی ایجاد شده و تقریبا هیچکدام به نتیجه کاربردی ، منطقی و قابل قبولی نرسیده است

HAMRAHSOFT.IR
سه شنبه 09 تیر 1388, 14:56 عصر
بنظر من هم ميشه در هر صورت بانك را SQL بايد باشه . ولي در خصوص اينك اكسس باشه يا اكسس پروچكت نظر شخصي من اكسس پرو چكت چون هم اميت نصبت به اكسس بهتر و هم تحت شبكه براحتي بصورت هاي مختلف ميشه باهش كار كرد

alirezabahrami
سه شنبه 09 تیر 1388, 16:14 عصر
بنظر من هم ميشه در هر صورت بانك را SQL بايد باشه . ولي در خصوص اينك اكسس باشه يا اكسس پروچكت نظر شخصي من اكسس پرو چكت چون هم اميت نصبت به اكسس بهتر و هم تحت شبكه براحتي بصورت هاي مختلف ميشه باهش كار كرد
آقا دادسرا سلام!
در خصوص مزيت هاي اكسس پروجكت نسبت به اكسس ، در لينك هاي زير توسط اساتيد بزرگوار توضيحاتي داده شده است . ببينيد بد نيست .
موفق باشيد

http://barnamenevis.org/forum/showthread.php?t=36555 (http://barnamenevis.org/forum/showthread.php?t=36555)

http://barnamenevis.org/forum/showthread.php?t=62188 (http://barnamenevis.org/forum/showthread.php?t=62188)

nabeel
سه شنبه 09 تیر 1388, 21:14 عصر
دوست گرامی , Dadsara
سلام

به نظر من معماری مناسب FrontEnd/BackEnd مبتنی بر همون Access Database هستش ولیکن ارجاع به اطلاعات با استفاده از DAO/ADO باید صورت بگیره
من تصور میکنم شبهاتی در خصوص استفاده جامع از Access Project به وجود اومده که این امر تداعی میشه , که الزاماً در طراحی Client Server باید تمام توجه رو به مهاجرت از Access Database به سمت دیگر معماریهای موجود معطوف کنیم .
خیلی از کاربرها یا با این بخش از اکسس احتمالاً بیگانه هستند و یا میزان اثر گذاری اون رو مطلع نیستند که از کنار اون به سادگی میگذرن و در هیچ جایی سخنی از اون به میون نمیارن ( طراحان مایکروسافت یک Page tab کامل رو به این بخش اختصاص دادن , اونهم با انبوهی از تنظیمات متفاوت )


Tools>Options>Advanced

توصیه میکنم شما در وحله اول ( و یا شاید به عنوان تنها اقدام مورد نیاز جهت رفع مشکل شما ) , تنظیمات این بخش رو متناسب با شرایط دقیق پروژه خودتون تغییر بدید تا شاهد افزایش کارایی در مواقع فعالیت بحرانی سیستم خودتون باشید . ( متاسفانه با توجه به شریط متفاوت امکان ارائه یک فرمول ثابت وجود نداره )

در حال حاضر فکر میکنم با دو تنظیم زیر کار رو شروع کنید :

برداشتن تیک کنار گزینه Open Database Using Record Level Locking
افزایش زمان ODBC refresh interval

توضیح : از صحت اعمال تغییرات با تست نمودن چند باره برنامه اطمینان حاصل کنید .
اعمال تغییرات رو با دقت انجام بدید ( زیاد تیونینگ کردن یک موتور باعث ترکیدن سر سیلندر موتور میشه )
وتوجه داشته باشید که تنظیمات اولیه رو در جایی یادداشت کنید

در این بخش نیازی به گفتگو در خصوص دو معماری دیگه نمیبینم مگه الزامی به وجود بیاد .

در مجموع در حال حاضر با توجه به شرایطی که از پروژه خودتون ارائه کردید نیازی به تغییر پلتفرم نیست

توضیح : در خصوص رکوردست هم منظور من این کاربردهای خاص استفاده ازرکوردست نبوده , شما از طریق محدود کردن ارجاعات درخواست اطلاعات به بخش Server ( محدود کردن قلمرو اطلاعات مد نظر ) , میتونید در دیتابیسهای بزرگ , حجم اطلاعات مبادله شده در سطح شبکه رو کاهش بدید .
Query ها در سطح Client اجرا میشن ولیکن Connection ها در سمت Server , اجرای Query در سمت Client موجب یک Transfer کامل منابع اطلاعات و در نهایت گزینش اونها در سمت Client میشه .

نکات ریز افزایش کارایی اونقدر زیاده که هر یک از اونها شما رو قدمی به سمت یک سیستم کارآمدتر پیش میبره که شاید نیازی به مطرح کردن اونها در این بخش وجود نداشته باشه .

موفق باشید

dadsara
چهارشنبه 10 تیر 1388, 08:22 صبح
سلام

افزایش زمان ODBC refresh interval
جناب Nabeel من مدت زمان را به 5000 رساندم
آیا در افزایش زمان محدودیتی می باشد

نکات ریز افزایش کارایی اونقدر زیاده که هر یک از اونها شما رو قدمی به سمت یک سیستم کارآمدتر پیش میبره
اگر در خصوص مطلب فوق مواردی را ارائه فرمائید باعث بهبود روند کار می گردد

nabeel
چهارشنبه 10 تیر 1388, 10:30 صبح
Dadsara عزيز
سلام
پارامتر ODBC refresh interval عددي بين 1 تا 32766 ثانيه رو ميپذيره توضيح اينكه عدد صفر رو جهت غير فعال كردن اين خصيصه ميتونيد به كار ببريد
ولي در استفاده از اون موارد زير رو مد نظر قرار بديد
افزايش زمان در ديتابيسهايي كه ميزان تراكنش اطلاعات در داخل اونها بالاست و اطلاعات هر لحظه به روز رساني ميشن ، ميتونه مشكلاتي رو در اطلاعات قابل مشاهده در داخل كلاينتها به وجود بياره ، اين پارامتر رو با توجه به سرعت به روز رساني اطلاعات تغيير بديد ( سرعت به روز رساني و يا تغيير در اطلاعات پايينتر = refresh interval بالاتر )
البته هنوز نگفتيد كه آيا تغيير پارامترهاي عنوان شده در پست قبلي تونست در داخل فايل شما بهبودي رو به همراه داشته باشه و يا نه .
ترجيح ميدم بخش آخر سئوال رو در صورت پاسخ دهي به سئوال عنوان شده بالايي ، خدمتتون عرض كنم .
چرا كه اگه پارمترهاي فوق هيچ تاثيري نداشته باشه ، در اون صورت يك مقدار پاسخ فرضي هم متفاوت خواهد بود .

موفق باشيد

saeed razaee
چهارشنبه 10 تیر 1388, 10:39 صبح
سلام
من قبلاً به صورت كامل در اين خصوص توضيح دادم لطاً جستجو كنيد يا اينكه فكر مي كنم لينك آن در وبلاگ خودم به آدرس زير وجود داشته باشد.

dadsara
چهارشنبه 10 تیر 1388, 10:49 صبح
سلام
ضمن تشکر از حسن توجه جناب Nabeel

برداشتن تیک کنار گزینه Open Database Using Record Level Locking
عمل فوق انجام شد و آن قسمت که مربوط به بازنشدن فایل بود درست شد

سرعت به روز رساني و يا تغيير در اطلاعات پايينتر = refresh interval بالاتر
منظور از عبارت فوق این است که اگر قصد داریم سرعت به روز رسانی بیشتر باشد باید عدد مربوطه کمتر باشد ؟

dadsara
چهارشنبه 10 تیر 1388, 10:58 صبح
سلام
من قبلاً به صورت كامل در اين خصوص توضيح دادم لطاً جستجو كنيد يا اينكه فكر مي كنم لينك آن در وبلاگ خودم به آدرس زير وجود داشته باشد.
سلام
دوست عزیز ، اگر منظور جنابعالی پست شماره 3 تاپیک زیر می باشد
باید به عرض جنابعالی برسانم در آنجا نیز هیچ توضیحی موجود نیست بلکه مطلب به سایت "شرکت سامانه آوران عصر دانایی " ارجاع شده است . در سایت فوق نیز من عبارت جستجو را پیدا نکردم
http://barnamenevis.org/forum/showthread.php?t=144071

nabeel
چهارشنبه 10 تیر 1388, 11:58 صبح
سلام

شما ممكنه يه فايلي ساخته باشيد كه تغيير و تحول در اطلاعات موجود در داخل اون در واحد زمان خيلي زياده ( به هر نحوي ميخواد باشه ، ويرايش ، حذف ، اضافه و ... ) در اين حالت بالا بردن بيش از حد فاصله زماني ODBC refresh interval ميتونه منجر به ايجاد اشكال در اطلاعات موجود در داخل كلاينتها بشه .
پايين آوردن عدد منجر به افزايش ترافكي شبكه و به تبع اون كاهش سرعت ميشه .
در مواقعي اين پارامتر رو كاهش ميديم سرعت و ميزان ورود و خروج اطلاعات زياد باشه
به طور مثال در يك نرم افزار خريد و فروش موجود در داخل يك سوپر ماركت با 10 فروشنده افزايش زمان ميتونه باعث ايجاد مشكلات عديده اي در سيستم اطلاعاتي بشه
لطفاً يكي از عبارات استفاده شده در كانكشنهاتون رو جهت بررسي بيشتر بنويسيد .
اي كاش دوستاني كه مخالف استفاده از Access Database هستن ( در سطح پروژه جاري ) دلايلشون رو ارائه كنن تا موضوع واضحتر بشه .
موفق باشيد

dadsara
چهارشنبه 10 تیر 1388, 12:40 عصر
سلام
همانگونه که قبلا نیز عرض کردم من از لینک استفاده کرده ام و از کانکشن استرینگ در قسمت VBA استفاده نکرده ام
تصور بنده این است اگر فرمی جهت لود شدن زمان بگیرد باید عملیات پیچیده ای داخل Form_load نوشته شده باشد درصورتیکه من فقط مطابق زیر تعدادی از کلیدها را غیرفعال نموده ام و در باقی فرمها اصلا کدی برای فرم لود نوشته نشده است
** ضمنا سوال اینجاست که اگر مشکل در نوشتن کدها باشد چرا زمانی که فقط یک کاربر با برنامه کار می کند سرعت خوب است **

Me.Save.Enabled = False
Me.Command69.Enabled = False
Me.Command71.Enabled = False
Me.Command86.Enabled = False
Me.Command104.Enabled = False
DoCmd.Maximize

nabeel
چهارشنبه 10 تیر 1388, 13:14 عصر
سلام


تمام قسمتهای برنامه نیز با استفاده از رکوردست و دستورات VB تهیه شده است

من با توجه به اين جمله فكر كردم كه شما از كانكشن استفاده كرديد كه نمونه كد ارائه شده فعلي متاسفانه هيچ ارتباطي با اين مبحث نداشت

يك توضيح : در معناي كلي Link و ارتباط به يك ركورد ست هم ارز هستند ( نتيجه عمليات مذكور رو عرض ميكنم )

من عرض نكردم مشكل موجود در داخل كدها منجر به كاهش سرعت شده ( گو اينكه به صورت بالقوه اين امر ميتونه اتفاق بيفته ، البته نه در كدهاي ارائه شده از سوي شما )
استفاده از روش Link Table به صورت كلي منجر به كاهش كارايي ميشه ( چه در حالت اجرا بر روي سرور و يا اجرا بر روي خود كامپيوتر كاربر )

علت اين امر كه با كاهش سرعت پس از ورود چند كاربر مواجه ميشيد رو باز هم در همون بخش تنظيمات ، ميتونيد پاسخش رو پيدا كنيد ، اكسس با ورود هر كاربر به برنامه كليه تنظيمات رو بررسي و اجرا ميكنه .
مهمترين عمليات انجام شده در اين حالت توسط اكسس بررسي record locking هستش
پي نوشت : به جز خط آخر كدهايي كه در داخل رويداد On Load نوشتيد ، بقيه كدها اضافه هستند
تنظيم مربوطه رو در داخل خود تنظيمات دكمه فعال كنيد

حالا اجازه بديد شايد بقيه دوستان تونستن شما رو متقاعد كنن كه معماري كلي رو تغيير بديد

موفق باشيد

dadsara
چهارشنبه 10 تیر 1388, 13:54 عصر
سلام

پس از ورود چند كاربر مواجه ميشيد
حتی اگر یک کاربر وارد شده باشد سرعت برای کاربر دومی به بعد فقط هنگام لود شدن فرم کند است
این در حالیست که بعد از لود شدن فرم سرعت خوب است

nabeel
چهارشنبه 10 تیر 1388, 16:03 عصر
سلام


حتی اگر یک کاربر وارد شده باشد سرعت برای کاربر دومی به بعد فقط هنگام لود شدن فرم کند است
این در حالیست که بعد از لود شدن فرم سرعت خوب است

دوست گرامي ، مطالب قبلي هم كه عرض كردم تعارضي با اين موضوع نداشت
فرمها قاعدتاً در هنگام باز شدن اقدام به برقراري ارتباط و بارگذاري اطلاعات ميكنند ، خب طبيعيه كه شما بيشترين تاخير رو هم در همين بخش ملاحظه ميكنيد ، در واقع عمليات چك و بازرسي در همون هنگام دسترسي به اطلاعات و فواصل زماني به روز رساني به انجام ميرسه .

اگه اطلاعاتي در خصوص دو مقوله DAO/ADO نداريد ، قاعدتاً بايد دو پلتفرم ديگه رو فراموش كنيد تا اينكه با اصول پياده سازي يكي از اين دو آشنا بشيد .

ظاهراً كه از DAO/ADO استفاده نكرديد ، در Record Source تا حد ممكن به صورت مستقيم از جدول استفاده كنيد ، در صورت عدم امكان از Query و در نهايت در صورتي كه مجبور شديد از عبارات SQL

با توجه به نوع ديتا بيستون بررسي كنيد ببينيد آيا ميشه برخي جدوال رو به صورت لينك نشده مورد استفاده قرار داد يا نه ؟
بررسي كنيد كه آيا امكان كاهش حجم اطلاعات تبادلي از طريق برقراري روابط بين جدوال وجود داره يا نه ؟
بررسي كنيد كه آيا نوع اطلاعات موجود در داخل فيلدها به درستي و به اندازه انتخاب شده يا نه ؟
و ...

يه كم فرصت بديد تا دوستاني كه توصيه به استفاده از روشهاي ديگه كردن بيان و در صورتي كه صلاح ميدونن در خصوص تئوريشون توضيحات بيشتري براتون بدن ، شايد نيازي به هيچ يك از اين كارهايي كه تا اين لحظه عنوان كردم نداشته باشيد و شاهد يك تغيير مسير اساسي از سوي شما باشيم .
در دو لينك معرفي شده هم ، برخي كلي گوييهايي انجام پذيرفته كه يا برخي نگارندگان نحوه اجراي اون رو در اكسس نميدونستن و يا قصد در كم رنگ جلوه داده بخشي از اون قابليتها داشتن .
در مجموع براي من جالبه كه بدونم چه جوري بدون دونستن ساختار فايل كسي كه سئوال رو مطرح كرده ، ميشه به راحتي بر روي دو سيستم خط كشيد و يكي ديگه رو پيروز ميدان جلوه داد ! اين سئواليه كه خود من هم به دنبالش هستم و اميدوارم بتونم به پاسخ اين سئوال برسم !
اگه با تغيير كلي معماريتون مواجه شديم ، اگه عمري باقي بود در اون بخش هم در خدمت شما هستم .
هر يك از سه سيستم موجود نقائصي رو با خودشون به همراه مياره كه انتخاب از بين اين سه با توجه به نوع و سطح پروژه معمولاً تنها يك گزينه و يك انتخاب هستش .
پاس و پاس كاري بين سيستمهاي مختلف وقتي كه هنوز از كل قابليتهاي بالقوه اكسس استفاده به عمل نيومده به نظر منطقي نمياد و به غير از اتلاف وقت هيچ چيزي رو براتون در بر نداره .

مساله !! : هيچ يك از اين مشكلاتي كه شما عنوان كرديد در حالت اتصال بقيه محيطهاي برنامه نويسي با فايل اكسس وجود نداره ( و يا نه با اين شدت ) . به طور مثال اتصال بين VB و Access ، حالا بيايد يه سئوال از خودتون داشته باشيد كه چرا وقتي اكسس رو با اكسس ارتباط ميديم دچار افت كارايي ميشيم !
پاسخ اين سئوال همون چيزيه كه مخالفين ديتا بيس Access بايد به صورت فني به اون پاسخ بدن تا شما بتونيد در انتخاب بين سه سيستم مطرح شده دچار انحراف نشيد .

موفق باشيد

dadsara
سه شنبه 13 مرداد 1388, 10:00 صبح
سلام
هنوز منتظر نظر دوستان هستم

elham_sharifi
چهارشنبه 14 مرداد 1388, 09:16 صبح
سلام دوستان
من یک فایل حسابداری Access دارم که جدیدا توی شبکه گذاشتم ولی نفر اول که وصل میشه دیگه فایل قفل می شه و بقیه نمی تونن تغییرات بدن راه حل عملی و سریع می خوام.
با تشکر

alirezabahrami
چهارشنبه 14 مرداد 1388, 10:25 صبح
سلام دوستان
من یک فایل حسابداری Access دارم که جدیدا توی شبکه گذاشتم ولی نفر اول که وصل میشه دیگه فایل قفل می شه و بقیه نمی تونن تغییرات بدن راه حل عملی و سریع می خوام.
با تشکر

با سلام


از راههای زیر استفاده کن :

طراحی برنامه در حالت Front End / Back End
از طریق ایجاد سطح دسترسی فایل اکسس (ورک گروپ)

در زمینه های فوق در دو لینک زیر بطور مبسوط توسط اساتید بزرگوار توضیح داده شده است.

http://barnamenevis.org/forum/showthread.php?t=145259
http://barnamenevis.org/forum/showthread.php?t=142135
موفق باشید