نمایش نتایج 1 تا 11 از 11

نام تاپیک: ثبت همزمانی اطلاعات در محیط شبکه

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    ثبت همزمانی اطلاعات در محیط شبکه

    سلام وصبح همه دوستان به خیر
    من می خوام در محیط شبکه وقتی یکی از کاربران داره رکوردی را تغییر می ده برای کاربر دیگه ان رکورد قفل بشه
    از google سرچ کردم سایت زیر را پیدا کردم . کوئری ها درسته ولی نمی دونم چطوری عمل می کنه که مطمئن شوم درسته یا نه(روش استفاده)؟؟؟
    http://stackoverflow.com/questions/3...orm-a-row-lock

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام
    از Transaction استفاده کن.

    صبا صبوحی

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    سلام
    از Transaction استفاده کن.

    صبا صبوحی
    بیشتر توضیح بدید

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام
    با ایجاد یک Transaction عملیات خودتون رو توی اون محدوده کنترل می‌کنید و جداول هم برای دیگران
    قفل می‌شن. در پایان با Commit کردن کارهایی که انجام دادین تو دیتابیس نهایی می‌شه و در صورت
    Rollback کردن هم دیتابیس بدون تغییر می‌مونه.
    توضیح بیشتر رو در انجمن SQL جستجو کنید.

    صباصبوحی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    ممنون خانم صبوحی لطف کردید
    اما فکر کنم منظور من را متوجه نشدید . ببنید من می خوام وقتی کاربر داره یه رکورد کار می کنه ان را تا مدتی که ان کاربر داره ویرایش می کنه قفل تا در این مدت کسی دیگه اینکار را انجام نده و یا (مثال دیگه: یه کاربر فرمی جهت اضافه کردن رکورد جدید باز کرده و کاربر 2 هم همینطور یعنی همزمان 2 کاربر فرمی با شناسه 20 باز کردن برای اضافه رکورد جدید تو این مدت کاربر 1 اطلاعتش را ثبت می کنه و رکورد 20 در دیتابیس اضافه می شه و وقتی کاربر 2 می خواد اضافه کنه از انجایی که ثبت و ویرایش من یکی هست و روی این دکمه نوشتم اگر این شناسه وجود عمل ویرایش و در غیرانصورت عمل اینسرت رخ بدهد در اینصورت کاربر 2 رکورد 20 را ویرایش می کنه به جای اضافه کردن)

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام
    این به طراحی دیتامدل شما مربوط می‌شه. اگه منظورت از اون عدد 20 Id جدول‌ها هست که باید با Identity حلش کنی.
    و اگه فیلد دیگه‌ای هست که قراره یکتا باشه، با Unique Index جلوی این مشکل رو بگیر.

    اگه می‌خوای جلوی ویرایش موازی یک سطر رو بگیری می‌تونی از TimeStamp استفاده کنی.
    و در آخر این که من آقای صبوحی هستم :)

    صبا صبوحی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    ببخشید اقای صبوحی
    اما متوجه کار TimeStamp چیه
    در ضمن دو تا رکورد همزمان توسط دوکاربر ویرایش نشه.کلا همون اول جلوی اینکار را بگیرم به طور مثال وقتی کاربر یک شناسه 5 را برای ویرایش باز کردند کسی دیگه نتونه تاز زمانی کاربر یک کار تموم نشده این شناسه را برای ویرایش باز کنه
    یا ایتنکه دو کاربر همزمان می خواهند رکورد جدید ثبت کنند برای هردو شناسه مثلا 20 در نظر گرفنه میشه هر دو قضد ثبت رکورد جدید دارند اما وقتی کاربر یک روی دکمه ثبت کلیک می کنه اطلاعاتش به دیتابیس اضافه می شه ولی وقتی کاربر دو روی دکمه ثبت کلیک می کنه از انجایی این شناسه قبلا ثبت شده بود عملیات ویرایش رخ می ده


    متوجه منظورم شدید؟؟؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام
    1.TimeStamp
    زمان‌هایی پیش میاد که رکوردی وجود داره. کاربر 1 رکورد رو برای ویرایش باز می‌کنه. بعد کاربر 2 هم همون رکورد رو برای ویرایش باز می‌کنه.
    کاربر 1 تغییر می‌ده و ذخیره می‌کنه. کاربر 2 هم تغییر می‌ده و می‌خواد ذخیره کنه.
    این یکی از مشکلات رایج در بانک‌های اطلاعاتی هست که در این صورت اگر جلوش رو نگیرین، کاربر 2 تغییرات کاربر 1 رو بازنویسی می‌کنه.
    حالت بدترش اینه که کاربر 1 رکورد رو حذف کنه و کاربر 2 بخواد تغییرات رو ذخیره کنه.
    یک راه حل برای این مورد استفاده از TimeStamp هست. وقتی یک ستون از نوع TimeStamp به جدول اضافه کنید. زمان ذخیره اطلاعات یک
    عدد به صورت خودکار توش نوشته می‌شه. ( این ستون اصلاً در اختیار شما نیست ). هنگام ویرایش شما اول رکورد رو می‌خونید. بعد کاربر
    ویرایش می‌کنه و هنگامی که می‌خواین کار ذخیره رو انجام بدین، می‌تونین TimeStamp رکورد موجود در Database رو بخونید. اگه رکورد نبود
    که می‌فهمین، کاربر دیگه‌ای رکورد رو حذف کرده. و اگر مقدار متفاوت بود، باز متوجه می‌شین که رکورد توسط کاربر دیگه‌ای ویرایش شده و
    اگر مقدارش با TimeStamp اولیه‌ای که خودتون خوندین یکی بود، با خیال راحت رکورد رو ذخیره می‌کنین.

    2. اگر رکورد رو Lock کنین. ( مثلاً با باز کردن و باز نگه‌داشتن یک Transaction ) اگر کاربر دیگه‌ای بخواد لیست اقلام رو بگیره ( مثلاً لیست کاربران )
    گیر می‌کنه و احتمالاً فکر می‌کنه سیستمش Hang کرده! پس این کار اشتباهی هست، دنبال این روش نرین.
    و اگر بخواین توی جدولتون با یه flag یا چیزی شبیه به اون باز شدن برای ویرایش رو علامت‌گذاری کنین که دیگه خیلی بدتره، فرض کنید کاربر 1
    رکورد رو برای ویرایش باز کنه، بعد به هر دلیلی دستگاهش Reset بشه. . . . رکورد علامت خورده برای ویرایش و . . . این روش هم اشتباهه.

    3. امکان نداره برای دو کاربر یک شناسه در نظر گرفته بشه، خیالتون از این راحت باشه. ( فرض می‌کنم منظورتون از شناسه همون Id جدول باشه که
    از نوع Identity ) هست. خود Sql Server این رو مدیریت می‌کنه و بر عهده‌ی شما نیست.

    صبا صبوحی

  9. #9
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    در ضمن اگر لینک آموزشی برای TimeStamp دارید برام بفرستید اخه من سرچ کردم بیشتر موارد php را دیدم

  10. #10
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام
    1. اگر Id شما صفر بود یعنی Add و در غیر این صورت می‌شه Edit
    2. لینک آموزشی دیگه لازم نداره. یه نوع داده در Sql هست. شما یه ستون به دیتابیس خودت اضافه می‌کنی از جنس TimeStamp
    هیچ کار دیگه‌ای هم لازم نداره. بقیه‌ی کارها رو خود Sql انجام می‌ده.
    فقط چند تا نکته.
    * مقدار TimeStamp با هر عمل ( ایجاد رکورد یا ویرایش رکورد ) مقدار جدید می‌گیره
    * مقدار TimeStamp از جنس عدد هست.
    * مقدار TimeStamp در تمام جدول‌هایی که این ستون را دارند مقدار یکتا دارد.
    * شما امکان ویرایش این مقدار رو ندارید، فقط می‌تونید مقدارش رو بخونید.

    صبا صبوحی

  11. #11
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: ثبت همزمانی اطلاعات در محیط شبکه

    سلام خیلی ممنون از پاسخ خوبتون
    من از یک دکمه برای ثبت و ویرایش استفاده می کنم که به این صورت هم کد نوشته شده . ابتدا بررسی می کنه شناسه که در حال حاضر کاربر باز کرده اگر وجود داره ویرایش و در غیر اینصورت اضافه می کند . (یعنی مشخص نکردم که الان کاربر من در حال ویرایش هست یا اضافه کردن)

تاپیک های مشابه

  1. همزمانی ثبت اطلاعات در محیط شبکه
    نوشته شده توسط zohre66 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: چهارشنبه 15 مرداد 1393, 10:46 صبح
  2. پاسخ: 22
    آخرین پست: دوشنبه 12 دی 1390, 07:20 صبح
  3. سوال: تبادل اطلاعات از طریق FTP در محیط شبکه
    نوشته شده توسط ali190 در بخش برنامه نویسی در 6 VB
    پاسخ: 29
    آخرین پست: سه شنبه 29 آذر 1390, 17:17 عصر
  4. ثبت اطلاعات از طریق شبکه در یک سرور
    نوشته شده توسط gabrieleb در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 07 مرداد 1389, 00:17 صبح
  5. یه مشکل برای ثبت رکورد و همزمانی اطلاعات
    نوشته شده توسط alireza244 در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: جمعه 27 مرداد 1385, 16:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •