PDA

View Full Version : سوالي در مورد ديتابيس در شبكه



vahidmoonline
سه شنبه 07 خرداد 1387, 22:49 عصر
سلام ميخواستم ببينم چگونه مئ توان يك ديتابيس داشت به طوري كه clientها بتوانند اطلاعات را وارد كرده وبعد سرور بتواند اطلاعات وارد شده توسط clientها رو ببيند؟
يك سوال ديگر آيا دو clientمي تواند همزمان اطلاعات وارد يك ديتابيس كند؟

رضا عربلو
سه شنبه 07 خرداد 1387, 23:41 عصر
شما هنگامی که یک دیتابیس سرور همانند SQL Server داشته باشید تمامی افراد شبکه که مجوزهای لازم را دارند می توانند اطلاعات را ببینند. در مورد چگونگی اش سوال بسیار کلی است و از حوصله این انجمن آفلاین خارج است.
در مورد اینکه آیا دو کلاینت می توانند همزمان اطلاعات وارد دینابیس کنند، جواب بلی است و شما بایستی همواره مسئله همزمانی را در نظر بگیرید تا اطلاعات شما همواره معتبر یاشند.

اقاقيا
چهارشنبه 08 خرداد 1387, 13:36 عصر
شما بایستی همواره مسئله همزمانی را در نظر بگیرید تا اطلاعات شما همواره معتبر یاشند.

با سلام
اگه ممكنه راجب مسئله همزماني بيشتر توضيح بدين...

Pouria.NET
چهارشنبه 08 خرداد 1387, 16:29 عصر
برای در نظر گرفتن همزمانی Concurrency این را باید در نظر بگیری که زمانی که دو یا بیشتر کاربر همزمان خواستند یک رکورد داده ای را ویرایش کنند کدام کاربر عملیاتش در پایگاه داده commit شود.
بعبارت دیگر مثلا اولین نفر که خواست ویرایش کند کل رکورد lock شود تا بقیه کاربران دسترسی به آن رکورد نداشته باشند؟ و یا هر کاربری هر تغییری که داد توسط کاربر بعدی overwrite شود و یا در صورتی مقداری از یک رکورد قابل تغییر باشد که از زمان شروع ویرایش توسط کاربر حاضر، توسط سایر کاربران تغییر نکرده باشد؟
این مسائل باید بررسی شود و بعد از ابزارهای مناسب برای اعمال سیاستهای مورد نظر استفاده شود.

top7news
چهارشنبه 08 خرداد 1387, 17:02 عصر
سلام به همه عزیزان
حالا که به صورت تئوری در این مورد مسائلی رو مطرح کردین چه خوب میشه اگه همین مسایل رو با یه مثال برنامه نویسی هم مطرح کنین که نحوه انجام این کارها مشخص بشه ، منم به این مشکل برخوردم و دنبال یه راه حل مناسب هستم .

اقاقيا
شنبه 11 خرداد 1387, 08:39 صبح
برای در نظر گرفتن همزمانی Concurrency این را باید در نظر بگیری که زمانی که دو یا بیشتر کاربر همزمان خواستند یک رکورد داده ای را ویرایش کنند کدام کاربر عملیاتش در پایگاه داده commit شود.
بعبارت دیگر مثلا اولین نفر که خواست ویرایش کند کل رکورد lock شود تا بقیه کاربران دسترسی به آن رکورد نداشته باشند؟ و یا هر کاربری هر تغییری که داد توسط کاربر بعدی overwrite شود و یا در صورتی مقداری از یک رکورد قابل تغییر باشد که از زمان شروع ویرایش توسط کاربر حاضر، توسط سایر کاربران تغییر نکرده باشد؟
این مسائل باید بررسی شود و بعد از ابزارهای مناسب برای اعمال سیاستهای مورد نظر استفاده شود.

با سلام..
اگه ممكنه اين توضيحات رو با يك مثال كاملتر كنيد..
راستش من هنوز نميدونم دقيقا بايد چي كار كنم...:متفکر:

اقاقيا
شنبه 11 خرداد 1387, 16:07 عصر
كسي نيست كه در اين مورد بتونه كمك كنه؟؟؟؟

top7news
شنبه 11 خرداد 1387, 16:24 عصر
سلام
من خودم یه چندتا مطلب خوندم در مورد این همزمانی
چیزه زیادی دستگیرم نشد که بخوام جواب سئوالتو کامل بدم ولی فکر کنم اگه بری و در مورد Transaction در ADO.Net یه چیزایی پیدا کنی به جواب سئوالت برسی

اقاقيا
یک شنبه 12 خرداد 1387, 09:35 صبح
من خودم یه چندتا مطلب خوندم در مورد این همزمانی


سلام
ميتونيد اين مطالب رو اينجا هم بذاريد...؟؟؟
اگه شما يا هريك از دوستان در اين مورد مثال يا مطلبي بذارن ممنون ميشم....

top7news
یک شنبه 12 خرداد 1387, 10:01 صبح
سلام
اگه بخوام چیزایی که خوندم رو اینجا بذارم باید بشینم 2 3 فصل کتاب رو تایپ کنم
ولی چشم کدهای مربوط به tansaction رو میذارم برات

top7news
یک شنبه 12 خرداد 1387, 11:25 صبح
sqlconnection connection1 = new sqlconnection;
connection1.open();
sqlcommand command1 = newsqlcommand(“…”);
sqltransaction trans1 = connection1.BeginTransaction();
command1.transaction = trans1;
command1.executeNonQuery();
command1.Dispose();

dialogResult res1 = MessageBox.show(“….”,MessageBoxButton yesNo);
if(res1 == dialogResult.Yes)
{
Trans1.Commit();
}
Else
{
Trans1.Rollback();
}
Connection1.close();