PDA

View Full Version : نوشتن يك برنامه Database با امنيت بالا



E_Alikhani
چهارشنبه 16 بهمن 1387, 09:26 صبح
سلام دوستان
من يك برنامه تحت شبكه ميخوام بنويسم ترجيحا با ديتابيس Access چون قرار است كه اين برنامه روي حدود 300 كامپيوتر جواب بده ولي نمي خوام روي همشون اونا نصب كنم يا براي اون يك سري كاريهايي انجام بدم كه تازه مشكل رو مشكل بياد (براي مثال اگر برنامه با SQL باشه اول SQL رو ست كنم خيلي راحت همه بتونند از اون استفاده كنند) اما مشكل اينجاست كه احتمال حذف كردن ديتابيس هست حالا دنبال يك راه حل هستم كه اگه بشه ديتابيس رو داخل يك فولدر قراربدم و به اون يك دسترسي بدم كه فقط از طريق خود برنامه به او دسترسي خواندن و نوشتن داشته باشه كسي هست اين كارو كرده باشه يا كاري شبيه اين
فقط اگه ميشه سريع
ضمنا روي فايل اكسس ميخوام پسورد بذارم (تحت شبكه) كه كسي اطلاعات اون تغيير نده (كاربرهاي مبتدي اون تغيير ندهند)

vcldeveloper
چهارشنبه 16 بهمن 1387, 17:14 عصر
Access یک بانک اطلاعاتی Local هست. درست هست که یکسری امکانات ابتدایی برای مدیریت دسترسی همزمان هم ارائه میکنه، ولی اون امکانات بدرد یک برنامه ایی که قرار هست 300 تا کلاینت داشته باشه، نمیخوره! برای همچین کاری باید از یک برنامه سرور بانک اطلاعاتی مثل MS SQL Server, Oracle, MySQL, Interbase، و غیره استفاده کرد.
در همچین برنامه هایی نه تنها اتصال 300 کلاینت راحت مدیریت میشه، کاربران هیچ وقت دسترسی مستقیم به فایل بانک اطلاعاتی ندارند، و فقط با سرور در ارتباط هستند، و سرور با فایل بانک ارتباط مستقیم دارد، پس جای نگرانی برای حذف فایل بانک توسط کلاینت ها وجود نداره.

E_Alikhani
شنبه 19 بهمن 1387, 06:57 صبح
آقاي كشاورزبا تشكر من خودم هم ميدانم كه access براي برنامه هاي تحت شبكه بزرگ خوب نيست و مشكل بوجود مي اورد اما اگر قرار باشه كه يك برنامه نوشته بشه و هر روز بخواهي روي چندتا سيستم اون را نصب بكني و يا ست بشه (اون هم برنامه اي كه فقط ورود اطلاعات در يك صفحه است) تمام وقت صرف همين كار ميشه كه روي سيستم ها برنامه نصب كني حالا اگر يك راه حلي باشه كه مثلا از SQL Server استفاده كرد بصورتي كه نياز نباشه كاربر روي سيستم كار انجام بده و داخل برنامه خودش كارهاي ارتباطي با بانك انجام بده و ارتباط برقرار بشه اون بهترين راه حل است كه من اون را نميدانم اگر شما راه حلي دارين بگين

vcldeveloper
شنبه 19 بهمن 1387, 18:24 عصر
دوست عزیز، SQL Server را روی همه سیستم ها نصب نمی کنند! بلکه آن را روی یک سیستم (سرور) نصب می کنند، و سایر سیستم ها با اتصال به آن سرور، به بانک اطلاعاتی متصل می شوند.

E_Alikhani
یک شنبه 20 بهمن 1387, 07:52 صبح
SQL Server را روی همه سیستم ها نصب نمی کنند! بلکه آن را روی یک سیستم (سرور) نصب می کنند
آقاي كشاورز ميدونم


سایر سیستم ها با اتصال به آن سرور، به بانک اطلاعاتی متصل می شوند.

مگر براي اتصال به سرور نبايد روي تك تك كلاينتها ست بشه؟

من نميخوام وقت بزارم و خودم روي تك تك كلاينتهاعمل ست رو انجام بدم (ارزش نداره بخوام وقت بزارم) دنبال راهي مي گردم كه كه نياز به ست كردن نداشته باشه يعني اينكه يك فولدر روي سرور بزارم و يك فايل exe هركي خواست استفاده كنه ديگه كاري بامن ويا كسي كه بخواد برنامه براش ست يا نصب كنه نداشته باشه (تا حالا با Access برنامه نوشتي كه با دلفي كار كنه روي تمام سيتمها جواب ميده و نيازي به خود اكسس و چيزديگري هم نداره من اينطوري ميخوام) حالا شما هي غلط املايي ميگيري كه ... اگر كسي اين كارو انجام داده بگه كه من چكار كنم

ببين يك جور ديگه سوال را ميگم
من يك فايل متني دارم كه اي پي سرور ميذارم داخل اون (روي سرور هم SQL Server نصب شده) حالا از داخل برنامه روي كلاينت چطوري وصل بشم به سرور (روي كلاينت هم هيچ تنظيم خاصي نكردم و نميخواهم هم انجام بدم(بصورت دستي) اگر هم قرار است تنظيمي انجام بشه خود برنامه كه روي كلاينت اجرا مي شه ميخوام انجام بده)

vcldeveloper
یک شنبه 20 بهمن 1387, 17:14 عصر
مگر براي اتصال به سرور نبايد روي تك تك كلاينتها ست بشه؟
چی ست بشه؟!

یک نسخه SQL Server روی یک سرور در شبکه نصب می کنید، بعد هر یک از کلاینت ها می تونند با دانستن IP سرور، نام سرور، و username\password ایی که در بانک برایشان درست کردید، به سرور وصل بشند. اگر نمی خواید برای گرفتن همون اطلاعات هم کد بنویسید، خصوصیت LoginPrompt مربوط به AdoConnection را True می کنید، تا خودش Dialog Box مربوط به اتصال را نمایش دهد. در اونجا کاربر میتونه نام سرور، نام بانک اطلاعاتی، و username\password خودش را وارد کند.