PDA

View Full Version : قرار دادن اکسس بر روی شبکه بوسیله sql server



ali190
چهارشنبه 04 آذر 1388, 22:52 عصر
با سلام
در پستهای قبلی درباره تحت شبکه درآوردن اکسس مطالبی رو خوندم ، چون اولا خودم شدیداً کارم بابت این مسئله گیره و ثانیاً با توجه به تخصصی بودن بحث ، وقتی که سرچ میکنم توی سایت مطالب بصورت پراکنده بدست میاد ، آدم میمونه که باید از کجا شرو ع کنه(تقدم و تاخر کارها).بنظرم رسید که مشکلات و ابهاماتم رو با شما مطرح کنم.دو روش رو دوستان پیشنهاد کرده بودن:
1- لینک کردن جداول اکسس با sql server اصولاً به چه هدفی انجام میشه واسه اینکه اکسس تعداد کاربرانی محدودی رو ساپروت میکنه و این مشکلsql server وجود ندارد
2- جدا کردن اینتفیس برنامه اکسس و گذاشتن تیبلها در sql server
حالا در مورد این دو روش یکسری ابهامات دارم که به نتیجه ای نرسیدم

1- اصلاً چرا ما می آییم و اکسس رو از طریق sql server شبکه میکنیم (خواهشاً در ابتدا یه درک درست از sql server به ما بدید که فکر کنم با این کار 20 درصد قضیه حل بشه ، مثلاً در sql هم میشه عین اکسس فرم و گزارش ساخت؟)
2- کار صلی sql server چیه ؟آیا با اون هم میشه فرم و گزارش ساخت ؟اگر نه که پس چجور بانک اطلاعاتی هست ؟بانکی که نشه ازش گزارش و فرم طراحی کرد ، کار باهاش سخت نمیشه؟
3- اگر فایل اکسسم رو از طریق sql شبکه کنم دیگه هیچ کاربری نمیتونه اونو پاک کنه؟

4- وقتی که میخوام جداول رو بهsql server لینک بدم باید جداول اکسس رو از sql server لینک کنم یا برعکس؟
5- برای لینک باید شیفت برنامه من باز باشد تا من به link table دسترسی داشته باشم.
6- اگر این حالت رخ دهد اطلاعاتی که من از طریق فرم وارد میکنم کجا ذخیره میشه(در sql server یا اکسس)
7- تکلیف بک آپ گیری چی میشه؟من الان یه فایل اکسس رو برای 5 نفر توی یه پوشه share کردم ، هروقت که بخوام فقط از همون یه فایل بک آپ میگیرم چون جدول و تمام تشکیلات توی خودشه ولی در این حالت به چه صورت است؟آیا بک آپ من باید تحت sql server انجام گیرد.
8- چطور میشه اینترفیس رو در اکسس جدا کرد؟یا همه آبجکتها غیراز تیبل جزء اینترفیس محسوب میشود(کوئری ، فرم ، گزارش ، ماژول ، ماکرو)
9- آیا باید sql server رو هر سیستم یوزر نصب بشه یا فقط باید بر روی سیستم مادر نصب بشه.
10- بک آپ اتوماتیک چیه؟کجا ذخیره میشه
دوستان من یکی از کاربران بخش اکسس هستم .شاید برای شما جالب باشه ولی من به نمایندگی از 17 نفر از بچه ها که همگی این مشکل رو در بخش اکسس داشتن به اساتید این بخش متوسل شدیم تا بلکه این مشکل یکبار برای همیشه حل بشه.
یه خواهش دیگه اگر میشه این آموزش بصورت پله ای باشه تا ما گیج نشیممثلاً اگر میگید که یه دیتابیس در sql server درست کنید توضیح بدید چطوری؟(من sql server2000 رو نصب کردم ولی نمیدونم واسه ساخت یه دیتابیس توش بید چیکار کنم؟)وقتی میگید یه بک آپ بگیر بگید چطوری؟(فرض کنید دارید به یه آدم صفر کیلومتر در sql server درس میدید.)
وقتی میگید sql server رونصب کنید خواهشاً نحوه نصب و حتی ورژن اون رو ذکر کنید.لازم به توضیح اینکه من و بقیه بچه ها در زمینه اکسس کم و بیش حرفی برای گفتن داریم و برنامه های نوشته شده ما با اکسس آماده هست و فقط باید اونارو روی شبکه بذاریم.
باز هم خواهش میکنم این تایپیک رو حذف و یا رها نکنید.
حداقل 18 نفر چشم امیدشون به شما عزیزان هست.
اجرتون با خدا.

sia_2007
پنج شنبه 05 آذر 1388, 09:41 صبح
سلام
ببین سرورها بانک اطلاعاتی بر دو قسمند :
1- Client/Server : SQL mySql Oracle
2- Desktop : Access Fox Pro
در مدل Single User مطمئن باشید هیچ چیزی به پای Access نمیرسد.
ولی برای بیش از یک کاربر و محیط شبکه حتما باید از حالت Client/Server استفاده نمایید.
چرا ؟
فرض کنید من یک کلاینت هستم و دو کار خواندن و نوشتن دارم :
مثلا من میخواهم بدانم هر کارمند چقدر فروش داشته است.
در این صورت باید آمار کلیه کارمندان؛ و کل فروش شرکت را از طریق کابل شبکه به سیستم خودم بیاورم؛ و در آن جا محاسبه را انجام دهم.
چرا ؟
چون Access در این جا کاره ای نیست؛ چون سرور نیست و سرور واقعی فایل سرور است.
به بیان واقعی تر؛ نه تنها کل کارمندان و فروش شرکت بلکه کل فایل Access باید از طریق شبکه به سیستم من بیاید؛ تا من گزارشم را بگیرم.
حال فرض کنید در یک سیستم 10 الی 20 نفره؛ مدام فایل Access در شبکه ارسال شود؛ مگر کل پهنای باند آن سروری که فایل رویش هست چقدر است ؟
نکته جالب این جاست؛ که چون فایل جابهجا میشود؛ حتی نیازی به نصب Access روی سرور نیست.
حتی اگر نصبش هم کنیم؛ کار خاصی انجام نمیدهد.
---
حال فرض کنید که من میخواهم؛ در بانک بنویسم؛ در حین نوشتن من برق میرود؛ چون مکانیزم Access شبکه ای نیست؛ و در سرور هیچ مسئولی جز یک فایل سرور نفهم وجود ندارد؛ امکان پریدن دیتای من بسیار بسیار زیاد است.
و این خطرناک ترین قسمت قضیه است.
---
امکان دسترسی و شکستن قفل بانک نیز وجود دارد؛ چون فایل بانک Share است در یک فایل سرور.
هر چند که امنیت Access بسیار بالا رفته است.
---
در واقع در زمانی که از Access و Fox Pro برای شبکه کار میشده؛ همه ی سیستم ها UPS برق داشته اند.
و هم چنین باید کاربران فهمیده ای داشته باشی تا مدام سرور را ریست نکنند !!!
البته جدی میگم.
---
البته باز هم تاکید میکنم؛ در Single User هیچ وقت, هیچ بانکی ابدا به Access نمیرسد.
---
ولی در SQL گزارش اول را فایل سرور جواب نمیدهد؛ بلکه SQL Server به Clint ها جواب میدهد.
برای مثال خود سرور دیتا ها را پردازش کرده؛ و اگر ما مثلا 12 کارمند داشته باشیم؛ فقط 12 رکورد را روی شبکه میفرستد.
مجالش نیست که بگویم چگونه؛ ولی در SQL دیتای شما نمیپرد.
و امنیت اش بالاست.
البته در صورتی که شما بتوانید با آن درست کار کنید.
Transaction Log Backup بگیرید؛ و دیتابیس و Account ها را امن سازی کنید.
توصیه من به شما این است که حداقل یک کتاب خوب رو مطالعه فرمایید.
و سوال دوم؛ نه
SQL فقط یک Reporting Service دارد.
که آن هم به هیچ وجه به آسانی Access نیست.
فرم که اصلا ندارد.
و قبول دارم کمی سخت است.
---
حال جواب :
اگر فایل Access را پشت سر SQL قایم کنی مشکل حل میشود.
باید تمام ارجاعات شما به SQL باشد؛ انگار نه انگار که فایل Access ای وجود دارد.
در واقع اگر فقط از خود SQL استفاده نمایید بهتر است؛ (در محیط شبکه البته)؛ ولی فرض بر این است که شما مجبورید.
خب لینک دادن شما از SQL به Access است؛ به صورت زیر :
http://www.barnamenevis.org/forum/showthread.php?p=844103
جواب پنجم
برای نوشتن فکر میکنم باید از SP ها استفاده نمایید.
و این SP ها تضمین میکنند که اطلاعات در Access نوشته میشود.
---
باید از Access بک آپ بگیرید؛ ولی دیگر باید فقط یک فایل بانک داشته باشید نه این که 10 جا پخش باشد.
کفایت میکند که شما SQL را در سیستم مادر نصب نمایید.
طریقه نصب :
http://www.barnamenevis.org/forum/showthread.php?t=188007
جواب نهم.
---
توصیه من :
با Access وارد وادی شبکه نشوید.
در مورد SQL اطلاعات کافی کسب نمایید.
و بعد وارد این وادی شوید.
شما باید برای یک برنامه خوب در مورد Transaction ها و Isolation اطلاعات کافی به دست آورید.
راهتان کمی سخت است.
کمکی خواستید من در خدمتم.
من از سال بعد میخوام بزنم تو کار Access و Excel
انشاا... اون موقع جبران نمایید.

ali190
پنج شنبه 05 آذر 1388, 12:50 عصر
عمده سئوال من اینه که آیا این برنامه اکسس من قابلیت شبکه کردن از طریق اکسس رو داره؟
اگر داره خوب چطوری؟
من اون مقاله اولی رو که جناب smderfan گفته بودن رو خوندم. فقط اونجا رو متوجه نشدم که میگه جداول لینک بشن.
1-آیا باید جداول اکسس رو ا sql فراخوانی کنم؟
2-آیا نیاز به باز شدن شیفت برنامه من هست؟
3-وقتی من اطلاعات رو از طریف فرم وارد میکنم این اطلاعات کجا ذخیره میشه(تو sql یا اکسس)
4-چطور میشه یک بک آپ گرفت؟
5- آیا این بک آپی که من میگرم تحت چه فرمتی استتحت sql است یا اکسس(ای نسئوال خیلی مهمه)
6- اگر اطلاعات اکسس من توسط sql رو شبکه بره آیا بازم کاربر میتونه به اطلاعات جداول دسترسی داشته باشه و احیاناً اونارو پاک کنه یا نه؟
7- آیا نیاز به جدا کردن اینترفیس از برنامه من هست؟
میدونم سئوالاتم خیلی سخته ، ولی دیگه چیکار کنم.
خیلی ممنونم

ali190
جمعه 06 آذر 1388, 13:46 عصر
سلام
دوستان عزیز من ، خیلی سئوالام سخت؟:متفکر::اشتباه:

iran400
جمعه 06 آذر 1388, 21:11 عصر
سلام
دوستان عزیز من ، خیلی سئوالام سخت؟:متفکر::اشتباه:

سلام عليكم
يك روش اينكه كه شما فايل اكسس را روي شبكه روي يك فولدر share شده مشخص بگذاريد
مثلا \\server2\db\
سپس در برنامه بجاي اينكه آدرس مثلا c:\programfile\.. را بدهيد آدرس \\server2\db\ را قرار دهيد

برنامه را كمپايل كنيد
برنامه در تمام شبكه شما به راحتي كار خواهد كرد

ولي شما با يك مشكل بسيار حاد مواجه مي شويد كه كاربران به راحتي مي توانند فايل شما را حذف نمايند.
براي آن هم مي توان راه كاري گذاشت مثلا بر روي اون سرور يك يوزر پس ساخت سپس به اون فولدر share شده فقط دسترسي يوزر رو بدهي
سپس تو برنامه بگي با اين يوزر و پس به اين سرور لاگين بشه

ali190
شنبه 07 آذر 1388, 13:11 عصر
سلام عليكم
يك روش اينكه كه شما فايل اكسس را روي شبكه روي يك فولدر share شده مشخص بگذاريد
مثلا \\server2\db\
سپس در برنامه بجاي اينكه آدرس مثلا c:\programfile\.. را بدهيد آدرس \\server2\db\ را قرار دهيد

برنامه را كمپايل كنيد
برنامه در تمام شبكه شما به راحتي كار خواهد كرد

ولي شما با يك مشكل بسيار حاد مواجه مي شويد كه كاربران به راحتي مي توانند فايل شما را حذف نمايند.
براي آن هم مي توان راه كاري گذاشت مثلا بر روي اون سرور يك يوزر پس ساخت سپس به اون فولدر share شده فقط دسترسي يوزر رو بدهي
سپس تو برنامه بگي با اين يوزر و پس به اين سرور لاگين بشه
میشه این راه رو یکم بیشتر توضیح بدید .یعنی قدم به قدم توضیح بدید.
خواهشاً

ali190
شنبه 07 آذر 1388, 21:16 عصر
دوستان عزیز نظری در این خصوص ندارند؟

iran400
شنبه 07 آذر 1388, 21:36 عصر
میشه این راه رو یکم بیشتر توضیح بدید .یعنی قدم به قدم توضیح بدید.
خواهشاً

سلام عليكم
فكر نكنم نياز به توضيح خاصي باشه ولي خوب از اول شروع مي كنم
1- يك رايانه در شبكه كه آدرس واقعي داشته باشد كه مثلا نام آن رايانه Serverdb مي باشد
2- يك فولدر را بر روي آن Share (اشتراك) مي كنيم مثلا با نام Mydb و نام فايل اكسس هم data.mdb مي باشد.
خوب حالا در قسمت كانكشن اونجايي كه مثلا آدرس c:\m1\data.mdb را وارد مي كرديد حالا بايد \\serverdb\Mydb\data.mdb را وارد نماييد.
3- حالا برنامه را مي توانيد در تمام شبكه استفاده كنيد
البته مشكلات امنيتي سرجاش مي باشد.

ASKaffash
یک شنبه 08 آذر 1388, 09:34 صبح
سلام
چون تعداد سئوالات شما زیاد است از برهان خلف استفاده میکنم :
SQLServer قدرت اجرای فرمهای Access شما را ندارد پس اگر نمی خواهید یا نمی توانید فرمها را با یک زبان برنامه نویسی پیاده سازی کنید قید ارتباط از طریق SQLServer را بزنید
پس فقط از سرویس File Sharing شبکه باید استفاده کنید لطفا تا اینجا را جواب دهید

ali190
یک شنبه 08 آذر 1388, 12:38 عصر
ببنید دوست عزیز
میدونید علت گیج شدن من چیه؟
علتش اینه که شاید من درک درستی از نرم افزار sql ندارم .من همش sql رو به چشم اکسس میبینم.دوستان میگن برو کتاب بخون
آخه من اول باید از یه نرم افزار یه درک درست داشته باشم بعد برم دنبال کار کردنم باهاش.مثل این میمونه یه نفر بخواد با اکسس mp3 کانورت کنه؟!!!!!!!
اگر میشه شما اول یه دید درست راجع به sql بمن بدید.بعد راجع به ارتباطش با اکسس بگید.بعد بمن بگید که اصلاً میشه اکسس رو با sql تحت شبگه گذاشت؟اگر میشه چطوری؟
اصلاً چرا من اکسس رو باید با sql تحت شبکه بذارم.مگه اکسس خودش چه ضعفی داره؟(من خودم خیلی وقته با اکسس کار میکنم و لی راجع به شبکه کردنش صفر کیلومترم.)
اگر میشه اینارو بمن بگید.بعد تو پست بالا اشاره کردید که باید قید sql رو بزنم.مگه نمیشه از طریق sql جداول اکسس روimport کرد و اطلاعات ما یکضرب از طریق فرمهای اکسس بره تو sql؟
ولی مهمترین سئوالم اینه چرا اکسس با sql باید شبکه بشه؟(ضعفش چیه؟)

ASKaffash
یک شنبه 08 آذر 1388, 12:58 عصر
سلام
اکسس برای اشتراک گذاری در شبکه باید از سرویس File Shearing استفاده کند و از نظر امنیتی در خطر است ولی اراکل و اس کیو ال اینطوری نیستند از طرفی برای جلوگیری از این موضوع یک راه میانبر استفاده از Linked Server در SQLServer است که از طریق یک Provider از نوع OLE-DB میتواند شبیه سازی را انجام دهد در واقع در این حالت شما تنها با یک ConnectionString با SQLServer طرف هستید نه Access
ولی باز هم تکرار میکنم فقط به داده ها متصل میشوید و نمیتوانید فرمهای اکسس را اجرا کنید
درضمن پاسخ پست قبلی من را شفاف ارائه نکردید؟

ali190
یک شنبه 08 آذر 1388, 13:33 عصر
ببنید من میخوام مستقیماً با فرمهای اکسس ورود اطلاعات کنم.میخوام از طریق فرمهای اکسس اطلاعلات رو ببرم توی جداول SQL

ali190
یک شنبه 08 آذر 1388, 14:23 عصر
آیا میشه یه همچین کاری رو انجام داد؟

ASKaffash
یک شنبه 08 آذر 1388, 14:24 عصر
سلام
با SQLServer نمی توانید فقط با Share کردن یک فولدر د شبکه مقدور است

ali190
یک شنبه 08 آذر 1388, 14:34 عصر
پس دوستان توی این مطلب به نکته اشاره کردند که میشه:

http://barnamenevis.org/forum/showthread.php?t=191907

ali190
یک شنبه 08 آذر 1388, 14:46 عصر
اینم مقاله اون:

http://barnamenevis.org/forum/attachment.php?attachmentid=40281&d=1259092239 (http://barnamenevis.org/forum/attachment.php?attachmentid=40281&d=1259092239)

ASKaffash
یک شنبه 08 آذر 1388, 14:47 عصر
سلام
قبلا گفتم به روش برهان خلف :
یعنی به هیچ روشی شما نمی توانید فرمهای اکسس را از طریق SQLServer اجرا کنید
پس فقط به روش اشتراک گذاری MDB در یک نقطه از شبکه که هیچ ربطی به SQLServer ندارد
در ضمن در لینکی قرار دادید هیچ کس ادعا نکرده که میتوان فرمهای اکسس را از SQLSever اجرا کرد
همه موضوع جداول و ویوها را اشاره میکنند که این امر را میخواهند با Linked Server درون SQLServer انجام دهند

ASKaffash
یک شنبه 08 آذر 1388, 14:54 عصر
اینم مقاله اون:

http://barnamenevis.org/forum/attachment.php?attachmentid=40281&d=1259092239 (http://barnamenevis.org/forum/attachment.php?attachmentid=40281&d=1259092239)

سلام
این مقاله روش File Sharing را توضیح داده و از ODBC میخواهد استفاده کند و هیچ ربطی به SQLServer ندارد !

ali190
یک شنبه 08 آذر 1388, 15:07 عصر
من سرعتم خیلی پایینه به سختی ارتباط برقرار میکنم.میشه شما شمارتون رو واسه من پیغام خصوصی بذارید تا با هاتون تماس بگیرم.واقعاً من گیج شدم:عصبانی++::عصبانی++:

ASKaffash
یک شنبه 08 آذر 1388, 15:20 عصر
من سرعتم خیلی پایینه به سختی ارتباط برقرار میکنم.میشه شما شمارتون رو واسه من پیغام خصوصی بذارید تا با هاتون تماس بگیرم.واقعاً من گیج شدم:عصبانی++::عصبانی++:
سلام
پیام ارسال شد

ali190
یک شنبه 08 آذر 1388, 22:58 عصر
من باز هم در این خصوص ابهام دارم.
1-من باید جداول اکسس رو از طریق sql ایمپورت کنم یا لینک کنم (دوستان یه بار گفتن لینک ، یه بار هم گفتن ایمپورت)؟:متفکر:
آیا من باید ابتدا جداولم رو از طریق sql ایمپورت کنم بعدش همون جداولی که در sql رفت یعنی ایمپورت شد ، دوباره توسط خود اکسس لینک کنم؟آیا اینطوره؟
2-ایا sql جداول اکسس رو میفهمه؟یعنی آیا اون data type و field name که ما در اکسس تعریف کردیم قابل درک و استفاده در sql هست(آیا sql زبان اکسس رو میفهمه )
3- یه سئوال دیگه :من در sql میام در ابتدا برای هر کی یه یوزر نیم و پسورد تعریف میکنم . اینکار واسه چیه؟واسه اینه که هرکی میخواد برنامه اکسس رو باز کنه از همون یوزر و پاسورد رو میخواد یا نه؟
4- من چطور باید از این سیستم بک آپ بگیرم ؟آیا یک روش روتین داره یا باید کدنویسی کنم؟آیا میتونم تنظیم کنم تا خود sql هر چند دقیقه یکبار یکبار بک آپ بگیره؟
5- اگر من بک آپ گرفتم تحت sql میشه ؟اگر دوبار خواستم میتونم این بک آپ رو دوباره تحت اکسسس تبدیلش کنم؟
6-آخرین و درعین حال مهمترین سئوال من:
من اصولاً بخاطر کدوم ضعف اکسس دارم اون رو تحت sql شبکه میکنم؟دقیقاً هدفم از شبکه کردن اکسس با sql چیه؟مثلاً من چرا نمیتونم برنامه ام رو back end و front end کنم و اینترفیس رو به کاربران بدم و فایل حاوی جدول روی سرور بدم و یوزر ها بهش data entry کنن؟

حسین شهریاری
دوشنبه 09 آذر 1388, 10:55 صبح
سلام به کلیه دوستان

یکی از دوستان فرمودن که پایگاه داده اکسس را توی یه فولدر Share و مجددا برنامه را کامپایل کن.

باید عرض کنم قضیه خیلی ساده تر از این حرفهاست.من خودم قبلا زیاد این کارا کردم.شماکافیه برنامتونا به همان صورت معمول یعنی اینطوری که پایگاه داده شما باید کنار فایل اجرایی شما(در مسیر جاری) باشد.
یعنی موقع کانکت شدن بهتره مسیر ثابتی ندید.
به طور کلی بگم فایل اجرایی،فایل پایگاه داده و سایر ملزومات نرم افزارتونا توی فولدر قرار بدید،اون فولدر را Share کنین و کافیه یه شورتکات از روی سایر سیستمها به فایل اجرایی موجود در داخل فولدر Share شده بسازید.بهمین راحتی بود!!
اینطوری بدون هیچ اشکالی برنامه اجرا میشه.
البته شما باید مشکلات تداخل(در ثبت رکورد و ..) را خودتون با سیاستهای اعمال شده در کدنویسیتون حل کنید.

برای بک آپ گرفتن کافیه تابع سیستمی CopyFile را توی هر زبانی که هستید صدا بزنید.اگه دیده باشید خود اکسس هم برای بک آپ یه گزینه داره.جابه بدونین خود اکسس هم دقیقا فایل پایگاه داده را کپی میکنه!!!!

موفق باشید

ASKaffash
دوشنبه 09 آذر 1388, 11:48 صبح
سلام
جناب ali190 پیرو مذاکره تلفنی :
- این یک سورس ساده VB6 با SQLServer2000 (ضمیمه)
- یک لینک ساده بانک اطلاعاتی (ضمیمه)
- اینهم یک لینک بانک اطلاعاتی SQLServer :
http://barnamenevis.org/forum/showthread.php?t=106494