PDA

View Full Version : مشکل در دسترسی به Interbase



Mahdiseif
شنبه 16 فروردین 1382, 04:03 صبح
سلام بر دوستان

1-در برنامه ای از چند بانک از نوع Interbase استفاده میکنم ولی وقتی بیش از دو بانک open میشود با این پیغام برخورد میکنم
Maximum user count exceeded. Contact your database administrator
از سیستم تک کاربره استفاده میکنم و سرور نیست و البته نام و شماره رمز همه بانکها مشابه هم هستند. برای حل مشکل چه باید کرد؟

2-در برنامه ای از بانک Interbase استفاده کردم تا زمانی که این بانک بر روی هارد است مشکلی در فراخوانی اطلاعات ندارم .ولی وقتی بانک را روی سی دی منتقل کردم و قرار شد که اطلاعات از روی سی دی خوانده شود با این پیغام مواجه شدم
no permission for read-write access to database I:\MyTable.gdb
و در IBConsole هم نتوانستم مشخصات permissions که در همی فیلدها ' Y ' است را تغییر بدهم. مشکل را چگونه بر طرف کنم؟

با تشکر فراوان

aliasghar
یک شنبه 17 فروردین 1382, 21:38 عصر
ببخشید
من زیاد حالیم نیست ملی فکر میکنم شما از نسخه ای از INTERBASE
استفاده میکنید که محدویت دسترسی دارد و باید اون را خریداری کنید
و یا کرک اون را از اینترنت بگیرید
در مورد سوال دوم هر بار که به بانک متصل میشوید server میخواهد
data dictionary خودش که مربوط به access ها و ... را update کند که اینکار در
cd rom امکان ندارد

amirrf
دوشنبه 18 فروردین 1382, 22:00 عصر
سلام،

1. با Licenseى که بطور پیش فرض به همراه نصب InterBase به آن اضافه مى‌شود هر کاربر تنها یک ارتباط مىتواند برقرار کند،‌ در واقع User و Connection معادل هستند. اما با License هایى که از بورلند مىگیرند هر User مىتواند چند Connection همزمان به دیتابیس‌هاى مختلف داشته باشد.
راه حل: نگارش سرور را نصب کنید. بجز تفاوت در Licensing، که برای نسخه سرور اجازه برای 5 کاربر همزمان همراه با اینتربیس نصب مىشود،‌ تفاوتى میان نگارش‌هاى Desktop و Server وجود ندارد.
چرا نیاز به دستیابی همزمان به دو دیتابیس دارید؟ تقسیم جدول ها در چند دیتابیس مزیتى مانند سرعت بیشتر ندارد،‌ اگر به این دلیل تقسیم کرده‌اید. امکان تقسیم یک دیتابیس به چند فایل نیز وجود دارد.

2. Borland InterBase از دیتابیس‌هاى روى رسانه‌هاى‌ فقط-خواندنى مانند CDRom پشتیبانى مىکند. کافى است دیتابیس خود را قبل از کپى فقط-خواندنى کنید. براى‌این کار در IB Console پس از متصل شدن به دیتابیس موردنظر از منوى Database گزینه Properties را انتخاب کرده و در دیالوگ Database Properties خصوصیت Read Only را True قرار دهید.

موفق باشید

Mahdiseif
سه شنبه 19 فروردین 1382, 00:25 صبح
امیر جان سلام
1-مشوق بنده برای استفاده از دیتابیس اینتربیس و بهره برداری از امکانات بسیار عالی آن شما بودید لذا وظیفه خود میدانم بابت توصیه ها و نیز کمکهای جنابعالی در بر طرف کردن مشکلاتم صمیمانه تشکر کرده و سپاسگزاری نمایم.

2-در برنامه ای از چند بانک مختلف برای اطلاعات مختلفی استفاده میکنم که در نهایت باید بر روی سی دی عرضه شود و از طرفی بر روی ویندوز xp برنامه اینتربیس را نصب کرده و استفاده میکنم(Local server) .

3-چگونه یک دیتابیس را به چند فایل تقسیم کنم.

4-قرار است برنامه رابر روی سی دی بصورت یک برنامه کاربردی عرضه کنم.اگر از IBInstall (در دلفی تب Interbase Admin )استفاده کنم و فایل های ibinstall.dll و ibinstall.pas را در کنار exe قرار دهم دیگر نیاز به setup نیست. و بطور عموم چه فایلهایی باید در setup برنامه ها برای اجرا در سیستمهای مقصد قرار گیرد.

(ضمنا read only را true کردم مشکل حل شد.بسیار ممنون ).

با عرض پوزش

amirrf
جمعه 22 فروردین 1382, 01:55 صبح
سلام،

خواهش مىکنم،‌ اینتربیس انتخاب خوبیه.

3. تقسیم یک دیتابیس در چند فایل براى‌ حجم هاى خیلى زیاد و براى تقسیم روى چند پارتیشن کاربرد دارد. این کار را هنگام ساختن دیتابیس و با مشخص کردن چند فایل انجام مىدهید و همچنین یک دیتابیس موجود را از طریق Backup و Restore. در مستندات اینتربیس به Creating a multifile database مراجعه کنید.

4. براى استفاده بصورت Desktop نیاز است اجزاى‌ Client و Server را نصب کنید. فایلهایى که نام بردید براى‌ نوشتن و اجراى عملیات نصب مورد نیاز هستند و بجز آنها فایلهایى که قرار است نصب شوند از cd نصب اینتربیس (موجود در cd دلفى) باید بهمراه برنامه نصب شما با همان سلسله مراتب موجود باشند. در Developer's Guide از مستندات اینتربیس،‌ درباره ساختن برنامه نصب از طریق InterBase Install API و همچنین ساختن ویزاردهاى نصب از طریق TIBInstall توضیح داده شده است. یک مثال نیز در Delphi\Demos\DB\IBX\IBSilentInstall وجود دارد.
در سایت http://ibinstall.defined.net توضیحات کاملى در زمینه نصب اینتربیس و همچنین اسکریپت هایى براى بکارگیرى برنامه‌هایى مانند Wise Installer پیدا مىکنید.
من هنوز خودم این کار رو انجام نداده‌ام.

Mahdiseif
شنبه 23 فروردین 1382, 01:53 صبح
امیر سلام
مسئله نصب حل شد و تنها یک مسئله وجود دارد.
بانک من دارای رمز متفاوتی است و درصورت عدم تطابق با رمز متداول در سیستم مقصد با این پیغام unavailable database مواجه میشویم و اگر رمز را در ای بی کنسول(در سیستم مقصد) مشابه رمز بانکم قرار دهم برنامه به خوبی کار میکند
حالا من باید رمز بانکم را به حالت اصلی برگردانم یعنیmasterkey(این چیزی است که از آن فرار کرده ام) و یا اینکه راه حلی وجود دارد؟

همیشه دنبال این بوده ام که دیتابیس دارای رمز باشد ولی ظاهرا در اینتربیس داشتن رمز جدی نیست و بدرد نمیخورد. در IBconsole هر بانک اینتربیس را میشود باز کرد هرچند رمز متفاوتی داشته باشد خوب این نقض غرض است :x
واگر نشود از اطلاعات , حداقل با password محافظت کرد که ؟؟؟؟؟؟؟؟ آیا این مشکل قابل حل است؟

با عرض پوزش

amirrf
یک شنبه 24 فروردین 1382, 11:05 صبح
سلام،

پس از نصب اینتربیس و در شروع کار رمز SYSDBA را به رمز موردنظر خود تغییر دهید. نکته اینجاست که تعریف کاربران و رمزها هرگز در دیتابیس شما ذخیره نمىشوند، بلکه همگى در دیتابیس isc4.gdb نگهدارى مىشوند که یکى از فایلهاى هر سرور اینتربیس است. توجه داشته باشید هر کسى رمز SYSDBA را بداند مىتواند به دیتابیس دسترسى پیدا کند اما با تغییر آن هیچ سطح امنیتى بوجود نمىآید؛ با کپى کردن فایل GDB مىتوان آن را روى یک سرور اینتربیس دیگر به راحتی باز کرد. همچنین با داشتن دسترسى به فولدر حاوى فایل isc4.gdb مىتوان رمز SYSDBA را تغییر داد.

پس امنیت؟

اینتربیس به صورت یک سرور دیتابیس طراحى شده است که براى محافظت فایلهایش به امنیت سیستم عامل متکى است. داده درون دیتابیس‌هاى اینتربیس به هیچ صورت رمزگذارى نمی شود و فایل GDB باید با ویژگیهاى امنیتى سیستم عامل از دسترسى غیرمجاز محافظت شود. در یک کاربرد روى شبکه هیچ کس بجز DBA و اکانتى که سرور اینتربیس زیر آن اجرا مىشود هیچگونه حق دسترسى به هیچ یک از فولدرهاى حاوى فایلهاى GDB نخواهد داشت و نیازى به به اشتراک گذشتن هیچ فولدرى نیز نخواهد بود. به این ترتیب راهى براى دسترسى غیر مجاز به دیتابیس‌ها و داده‌هاى درون آنها وجود نخواهد داشت.
بدیهى است در یک کاربرد دسکتاپ که ممکن است در شرایط یا روى سیستم عامل هایى بدون پشتیبانى سطح امنیت مورد نظر اجرا شود چنین امنیتى وجود نخواهد داشت. زمانى که محافظت از داده هاى درون یک دیتابیس در یک کاربرد دسکتاپ اهمیت پیدا مىکند تنها روش قابل اطمینان انکریپت کردن داده‌ها است.

البته تکنیک هایى را مىتوان بکار برد تا کاربران معمولى که ممکن است SYSDBA و masterkey را بدانند به آسانى موفق به باز کردن دیتابیس نشوند، اما قطعا این روش‌ها براى افراد با تجربه تر به راحتى قابل نفوذ هستند.


- کدام روش نصب را بکار بردید؟

Mahdiseif
یک شنبه 24 فروردین 1382, 14:43 عصر
سلام

یکبار با استفاده از interbase desktopedtion (از روی سی دی دلفی 6 ) , یکبار هم با استفاده از اسکریپ که شما معرفی کردید.در هر دو حالت برنامه در سیستم مقصد با پیغام unavailable database مواجه شد.

در سیستم مقصد نام و رمز IBConsole را همانند دیتابیس خودم قرار دادم مشکل حل شد. ولی خوب برای برنامه ای که قرار است تکثیر شود و در اختیار کاربران زیادی قرار گیرد چه کار باید کرد؟ نوع دیتابیس را عوض کنم؟ مثلا sql server2000 ؟
و از خیر اینتربیس بگذرم؟ !!!

بانک برنامه دارای رکورد و فیلدهای زیادی است . ابتدا با DBIsam ساختم ولی سرعت پایین بود. با Access و ADO کنار آمدم تا حدی مشکل حل شد. و سپس با اینتربیس کار کردم مشکل سرعت در جستجوها اساسا حل شد ولی حالا مشکل توزیع بوجود آمده است.!!!! برای دیتابیس بی دردسر و حفظ امنیت اطلاعات چه نوعی جوابگو است؟ SQLserver2000 یا ......؟؟؟؟
از جنابعالی و نیز دیگر دوستان تقاضای راهنمایی دارم.

با تشکر

amirrf
سه شنبه 26 فروردین 1382, 00:03 صبح
سلام،

براى تغییر رمز SYSDBA نیازى نیست از IBConsole استفاده کنید. مىتوانید از طریق IBSecurityService در برنامه دلفى خود و یا از طریق برنامه خط فرمان gsec این کار را روى سرور تازه نصب شده انجام دهید و رمز آن را مطابق آنچه در نظر گرفته‌اید قرار دهید.

در کنار تغییر رمز SYSDBA، در سطح بعدی جلوگیری از بازشدن غیر مجاز دیتابیس با یک حقه مىتوانید جلوى وارد شدن SYSDBA را به دیتابیس بگیرید و از کاربر دیگری که در ابتدا تعریف مىکنید استفاده کنید. البته با هر کاربرى غیر از SYSDBA مىتوان دیتابیس را بازکرد، اما فقط SYSDBA مىتواند کاربر تعریف کند. راه نفوذ، کپى دیتابیس و استفاده از سرور دیگرى که رمز SYSDBA اش را دارند و تعریف یک کاربر جدید و بکارگیرى آن.

استفاده از دیگر دیتابیس‌هاى متداول موضوع امنیت داده‌ها را بطور کامل حل نخواهد کرد. بهتر است دیتاى مهم خود را encrypt کنید.

موفق باشید