ورود

View Full Version : ltPessimistic و Timeout expired



farhad110
دوشنبه 07 آبان 1386, 00:38 صبح
سلام
من از دیتابیس ms sql استفاده میکنم. connectionstring رو هم با ip سیستم لوکال (127.0.0.1) تنظیم کردم.
lock type = ltPessimistic
cursor location = clUseServer
وقتی که یه برنامه روی سیستم اجرا میشه مشکلی وجود نداره. اما زمانی که همون برنامه رو دو بار اجرا میکنم و میخوام به جدول دسترسی داشته باشم، در برنامه دوم بعد از حدود 10 ثانیه پیغام Timeout expired رو میده و جدول هم active میشه اما اگر روی یکی از رکوردهای dbgrid کلیک کنم باز هم Timeout expired !
اگر lock type رو روی ltOptimistic بذارم این مشکلات وجود نداره، ولی چون میخوام رکوردها رو قفل کنم مجبورم از Pessimistic استفاده کنم.
این مشکل راه حل داره؟
تشکر

daffy_duck376
سه شنبه 15 آبان 1386, 08:48 صبح
یه سوال شما چرا با ip به SQl کانکت میشی اگه واسه شبکه کار کردنه که SQL SERVER
خودش این امکان رو به صورت خیلی عالی داره که سرور بانک رو روی شبکه خودش پیدا میکنه
اگر نه که علتشو بگو تا شاید بتونیم مشکل شما رو یه جور دیگه حل کنم

farhad110
چهارشنبه 16 آبان 1386, 00:31 صبح
یه سوال شما چرا با ip به SQl کانکت میشی
برای شبکه


اگه واسه شبکه کار کردنه که SQL SERVER
خودش این امکان رو به صورت خیلی عالی داره که سرور بانک رو روی شبکه خودش پیدا میکنه
لطفا بیشتر توضیح بده

daffy_duck376
پنج شنبه 17 آبان 1386, 21:52 عصر
شما میتوانید با ADO به SQL کانکت بشی فقط به جای نام سرور در تنظیمات برای وصل شدن به سرور یک نقطه (.) بذار که به سرور جاری سیستم کانکت بشه حالا هر اسمی که داره مهم نیست این تو سیستم سرور در سایر سیستم ها در sql ، Enterprise Manager را باز کن
روی SQL Server Group کلیک کن سرو جاری را حذف کن حال یک سرور جدید رجیستر کن
که اگر شبکه شما درست برقرار شده باشه اسم تمام SQl های شبکه هست نام SQl سرور رو انتخاب کن و انو رجیستر کن . حال روی سیتم دوم دسترسی به دیتا بیس سرور داری که میتونی راحت برنامه تو اجرا کنی بدون هیچ مشکلی اگر مشکلی داشتی من در خدمتم

farhad110
جمعه 18 آبان 1386, 01:18 صبح
شما میتوانید با ADO به SQL کانکت بشی فقط به جای نام سرور در تنظیمات برای وصل شدن به سرور یک نقطه (.) بذار که به سرور جاری سیستم کانکت بشه حالا هر اسمی که داره مهم نیست این تو سیستم سرور در سایر سیستم ها در sql ، Enterprise Manager را باز کن
روی SQL Server Group کلیک کن سرو جاری را حذف کن حال یک سرور جدید رجیستر کن
که اگر شبکه شما درست برقرار شده باشه اسم تمام SQl های شبکه هست نام SQl سرور رو انتخاب کن و انو رجیستر کن . حال روی سیتم دوم دسترسی به دیتا بیس سرور داری که میتونی راحت برنامه تو اجرا کنی بدون هیچ مشکلی اگر مشکلی داشتی من در خدمتم

دوست عزیز ممنون از توجهی که دارید. ولی زمانی که بانک روی سرور هست دیگه روی کلاینت ها نیازی به نصب sql server نیست. درسته؟
پس من به خاطر راحتی کاربری که قرار هست با برنامه کار کنه و اطلاعاتی در مورد این مسائل (تنظیمات ms server) نداره بهتره که با ip سرور کار کنم. این ip در تمام کلاینتها هنگام اجرای برنامه استفاده میشه.
یا مثال دیگه زمانی هست که بانک روی وب هست. و ما به سیستم سرور دسترسی نداریم.
پس تکلیف چیه؟
ممنون

daffy_duck376
شنبه 19 آبان 1386, 10:51 صبح
سلام دوست عزیز من چون تا حالا روی شبکه برنامه نوشتم و همیشه روی سرور دسترسی داشتم مشکلی مثل شما نداشتم هر جا که برنامه روی شبکه دیدم روی همه کلاینت ها SQl
نصب بود چون یکی از محاسن خوبش اتصال راحت به سرور بود من هم اینطوری کار کردم
در مورد کابر هم باید بگم کاربری که میتونه شبکه ر اه بندازه و معنی IP رو بدونه که انو به برنامه شما بده تا برنامه شما به اون کانکت بشه ، حتما میتونه تنظیمات شبکه SQl رو انجام بده و از روش من استفاده کنه . اما روش شما هم روشه خوبیه و لی من از اون چیزی نمی دونم . پس یه لطفی کن اگه راهشو پیدا کردی واسه من پیغام خصوصی بزار تا من هم بدونم دونستنش بد نیست . البته بگم که تو یه برنامه دیدم که با دستورات SQL سرور رو شبکه پیدا می کرد که من اون دستورات رو نمی دونم ولی اونم باید SQl روی همه سیستم ها نصب میکرد ممنون

vcldeveloper
شنبه 19 آبان 1386, 13:52 عصر
مشکلی مثل شما نداشتم هر جا که برنامه روی شبکه دیدم روی همه کلاینت ها SQl
نصب بود چون یکی از محاسن خوبش اتصال راحت به سرور بود من هم اینطوری کار کردم
خیلی جالبه که برای اتصال به SQL Server، آن را بر روی تمام کلاینت ها نصب می کنید!!!!
فقط موندم که دیتابیس رو چیکار می کنید؟! اون رو هم روی همه SQL Server های نصب شده Attach می کنید؟!! اگر هم به فرض این کار را کردید، حتما هر کلاینت فقط با داده ها روی دیتابیس نصب شده بر روی سیستم خودش کار میکند، و احتمالا بعدا این دیتابیس ها از طریق Replication داده هایشان را با هم Sync می کنند!!
البته این فرضیه ایی هست که من با توجه به جمله شما به اون رسیدم! به نظر خودتون این کار منطقی هست؟! اصلا با این روش استفاده از عبارت Server در نام SQL Server صحیح هست؟! بهتر نبود اسمش را میگذاشتند SQL Client؟!
اگر تا امروز با این روشی که گفتید برنامه نویسی شبکه می کردید، فکر کنم باید یک بازنگری کلی در روشتون انجام بدید.

farhad110
یک شنبه 20 آبان 1386, 12:50 عصر
در مورد کابر هم باید بگم کاربری که میتونه شبکه ر اه بندازه و معنی IP رو بدونه که انو به برنامه شما بده تا برنامه شما به اون کانکت بشه ، حتما میتونه تنظیمات شبکه SQl رو انجام بده و از روش من استفاده کنه
ممکن کاربر کارمند یک اداره باشه!


اما روش شما هم روشه خوبیه و لی من از اون چیزی نمی دونم
با تنظیم connectionstring به سادگی انجام میشه و در سایت بحث شده

با تشکر از شما دوست عزیز من هم با آقای کشاورز کاملا موافقم:

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

به هر حال مشکل من همچنان حل نشده باقی ماند ...

daffy_duck376
سه شنبه 22 آبان 1386, 09:19 صبح
سلام آقای کشاورز ان هایی که من دیده بودم SQl روی کلاینت ها تنها کاری که انجام میدادند
این بود که به سرور اصلی وصل شوند و اطلاعات را از اون بانک مورد نظر روی سرور بگیرند
خودشون هیچ دیتابیسی ندارن و از دیتا بیس سرور استفاده میکن حالا در هر صورت من تاحالا اینجوری بلد بودم شاید بهتر باشه که روشم رو عوض کنم با تشکر از راهنمایی شما

vcldeveloper
سه شنبه 22 آبان 1386, 11:34 صبح
سلام آقای کشاورز ان هایی که من دیده بودم SQl روی کلاینت ها تنها کاری که انجام میدادند
این بود که به سرور اصلی وصل شوند و اطلاعات را از اون بانک مورد نظر روی سرور بگیرند
خودشون هیچ دیتابیسی ندارن و از دیتا بیس سرور استفاده میکن حالا در هر صورت من تاحالا اینجوری بلد بودم شاید بهتر باشه که روشم رو عوض کنم دوست من، برای متصل شدن به SQL Server نیازی نیست که SQL Server روی تمامی Client ها نصب بشه. همین که کامپیوترها با هم شبکه بشند و همه کلاینت ها امکان ارتباط با کامپیوتر سرور (کامپیوتری که SQL Server روی آن نصب است) را داشته باشند، کافی است.

willycracker
پنج شنبه 18 تیر 1388, 16:28 عصر
سلام
روش جالبی برای پیدا کردن جوابت انتخاب کردی

اینجا 2 تا موضوع مطرح شده
1- استفاده از sql server بر روی تمام سیستمها
2- بدون نیاز به نصب sql server اتصال به پایگاه اصلی

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

willycracker
پنج شنبه 18 تیر 1388, 16:47 عصر
فراموش کردم جوابتونو بدم
اگر از ADO استفاده کردید
و از ADOConnection استفاده کردید Connectiontimeout را مقدارش را 0 کنید
میشه نامحدود.

K.Mohammadreza
پنج شنبه 15 مرداد 1388, 14:07 عصر
فکر کنم راه حل مشکل شما ساده است در يکي از پست هاي قبلي من آموزشي تحت عنوان نوشتن برنامه اي شبکه اي بصورت صحيح راه حل مشکل شما اونجاست در قسمت برنامه نويسي شبکه يا پايگاه داده جستجو کنيد يا پست هاي منو پيدا کنيد و به اون پست هم سري بزنيد مطمئنم مشکلتون حل ميشه.

K.Mohammadreza
پنج شنبه 15 مرداد 1388, 14:23 عصر
بدليل جواب اشتباه

farhad110
جمعه 16 مرداد 1388, 12:49 عصر
فکر کنم راه حل مشکل شما ساده است در يکي از پست هاي قبلي من آموزشي تحت عنوان نوشتن برنامه اي شبکه اي بصورت صحيح راه حل مشکل شما اونجاست در قسمت برنامه نويسي شبکه يا پايگاه داده جستجو کنيد يا پست هاي منو پيدا کنيد و به اون پست هم سري بزنيد مطمئنم مشکلتون حل ميشه.
حل نشد! چون آدرسی که داده بودید در دسترس نبود
به هر حال مدتهاست که از طرح این سوال گذشته. ممنون از پیگیری شما دوستان عزیز
موفق باشید