# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  سوالي در مورد ديتابيس در شبكه

## vahidmoonline

سلام ميخواستم ببينم چگونه مئ توان يك ديتابيس داشت به طوري كه clientها بتوانند اطلاعات را وارد كرده وبعد سرور بتواند اطلاعات وارد شده توسط clientها رو ببيند؟
يك سوال ديگر آيا دو clientمي تواند همزمان اطلاعات وارد يك ديتابيس كند؟

----------


## رضا عربلو

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

----------


## اقاقيا

> شما بایستی همواره مسئله همزمانی را در نظر بگیرید تا اطلاعات شما همواره معتبر یاشند.


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

----------


## Pouria.NET

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

----------


## top7news

سلام به همه عزیزان
حالا که به صورت تئوری در این مورد مسائلی رو مطرح کردین چه خوب میشه اگه همین مسایل رو با یه مثال برنامه نویسی هم مطرح کنین که نحوه انجام این کارها مشخص بشه ، منم به این مشکل برخوردم و دنبال یه راه حل مناسب هستم .

----------


## اقاقيا

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


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

----------


## اقاقيا

كسي نيست كه در اين مورد بتونه كمك كنه؟؟؟؟

----------


## top7news

سلام 
من خودم یه چندتا مطلب خوندم در مورد این همزمانی 
چیزه زیادی دستگیرم نشد که بخوام جواب سئوالتو کامل بدم ولی فکر کنم اگه بری و در مورد Transaction در ADO.Net یه چیزایی پیدا کنی به جواب سئوالت برسی

----------


## اقاقيا

> من خودم یه چندتا مطلب خوندم در مورد این همزمانی


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

----------


## top7news

سلام
اگه بخوام چیزایی که خوندم رو اینجا بذارم باید بشینم 2  3 فصل کتاب رو تایپ کنم 
ولی چشم کدهای مربوط به tansaction رو میذارم برات

----------


## top7news

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();

----------

