بخشی از پاورپوینت

--- پاورپوینت شامل تصاویر میباشد ----

اسلاید 1 :

تراکنشها در SQL Server

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

مزایای اصلی استفاده از تراکنشها در بانک های اطلاعاتی که مختصراً ACID نامیده می شوند ، به شرح زیر هستند :

(1Atomicity  (تجزیه ناپذیری) : تعریف دستورات در قالب یک فعالیت عملیاتی را به صورتیکه یا کلیه عملیات با هم اجرا شوند ویا هیچکدام اجرا نشوند را Atomicity می نامند .

(2Consistency (پایداری) : یک تراکنش ، پس از خاتمه ، می بایست داده ها را در یک وضعیت پایدار قرار دهد ، به عنوان مثال در یک بانک اطلاعاتی رابطه ای ، پس از خاتمه یک تراکنش  ، کلیه قوانین جامعیت داده ها ، بایستی به داده های تغییر یافته توسط تراکنش اعمال گردد و همجنین ساختارهای داخلی داده های ذخیره شده مانند Index ها بایستی پس از اعمال تغییرات بازسازی و به وضعیت پایدار برسند .

(3Isolation  (جدا سازی) : در هنگام کار با تراکنش ها ، یکی از مهمترین موارد ، امکان دسترسی همزمان یک یا چند کاربر به یک منبع داده مشترک است . تغییرات در یک تراکنش همزمان می بایست از  تغییرات در تراکنش همزمان دیگر ، جدا باشد .

اسلاید 2 :

(4Durability (مقاومت یا دوام ) : یک تراکنش پس از خاتمه می بایست دارای تاثیرات دائمی و ماندگار باشد . این بدان معنی است که عدم سازگاری ناشی از خرابی سیستم مانند قطع Power  یا قطع شبکه و ... توسط تراکنش قابل کنترل و تصمیم گیری باشد .

در SQL Server  سه دسته امکانات برای رسیدن به اهداف فوق وجود دارد :

(1امکانات قفل گذاری (Locking) که محیط را برای رسیدن به Isolation مناسب ، مهیا می سازد .

(2امکانات واقعه نگاری (logging) که در صورت هر نوع خرابی ناشی از سیستم عامل ، شبکه ، سخت افزار ، برق ، یا حتی نسخه بانک اطلاعاتی ، با شروع مجدد ، وضعیت داده ها را به حالت قبل از شروع تراکنش باز می گرداند و در جهت رسیدن به Durability بکار گرفته می شود .

(3امکانات مدیریت تراکنشها  (Transaction Management)  که اصولاً جهت پیش برد اهداف Atomicity و Consistency بکار گرفته می شود . در واقع پس از آغاز ، یک تراکنش ، بایستی بطور موفقیت آمیزی خاتمه یاید ، یا اینکه نسخه جاری مدیریت بانک اطلاعاتی ، همه داده های تغییر یافته در طول تراکنش را به وضعیت قبل از شروع تراکنش باز گرداند .

اسلاید 3 :

در هنگام بروز هر نوع خطا در هنگام اجرای یک تراکنش ، عملیاتی تحت عنوان Recovery آغاز می شود .

عملیات Recovery  معمولاً توسط SQL Server  مدیریت می شوند که Automatic Recovery نامیده می-شود . این عملیات خود سه دسته هستند :

1- با شروع مجدد سرویس SQL Server

2- با در خواست کاربر و اجرای دستور Rollback

3- سرویس خودکار مدیریت تراکنشها

SQL Server هنگام شروع یک تراکنش ، وضعیت جاری را در فایل های Log ذخیره ، و چنانچه نیاز به بازیابی بود ، در هنگام Recovery ، اطلاعات مورد نظر را از فایلهای Log باز خوانی می نماید .

اسلاید 4 :

انواع تراکنشها در SQL Server

دو دسته اصلی از تراکنشها در SQL Server  وجود دارند :

1- Single Transactions

2- Distributed Transactions

دسته اول تراکنشها ، فقط روی یک بانک اطلاعاتی قابل استفاده هستند . در صورتیکه حوزه عملیاتی یک تراکنش بیش از یک بانک اطلاعاتی باشد ، بایستی از دسته دوم تراکنشها ، استفاده شود . در این حالت حتی این امکان وجود دارد که تراکنشها بر روی دو Server نیز استفاده شوند . این امکان با استفاده از سرویس MSDTC (Microsoft Distributed Transaction Coordinator)  قابل انجام است .

اسلاید 5 :

سه دسته اصلی از تراکنشهای Single Transactions در SQL Server وجود دارد :

1- تراکنشهای خودکار  Auto commit Transactions

2- تراکنشهای صریح  Explicit Transactions

3- تراکنشهای ضمنی Implicit Transactions

دسته اول تراکنشهای خودکار :

این دسته از تراکنشها ، توسط SQL Server و در هنگام اجرای دستورات Insert ، Update و Delete آغاز می شوند . در صورت موفقیت آمیز بودن و عدم وجود خطا بصورت خودکار Commit می شوند و در غیر اینصورت عملیات آنها ، لغو می گردد .

این تراکنشها ، دارای مراحل مختلفی هستند که در  زیر می بینیم :

اسلاید 6 :

دسته دوم تراکنشهای صریح :

این دسته از تراکنشها ، دارای نقطه شروع و خاتمه مشخصی هستند .

به شکل مقابل توجه کنید :

اسلاید 7 :

انواع تراکنشها در SQL Server

دسته سوم تراکنشهای ضمنی:

این دسته از تراکنشها ، شباهت زیادی به تراکنشهای صریح دارند ، با این تفاوت که شروع تراکنش صریحاً توسط دستور Begin Transaction تصریح نمی شود و تراکنش های ضمنی با دستور زیر فعال یا غیر فعال می شوند :

Set  Implicit_Transactions  {On|Off}

به کد زیر توجه کنید :

اسلاید 8 :

مثال :

Use [Lab-SimpleCMS]

Declare  @ID  Int

Begin  Transaction

    Begin Try

  Insert  Into [Content]

      Values  (1,GetDate(),'SQL Server 2008 Released')

  Set  @ID  =   SCOPE_IDENTITY()

  Insert  Into News

      Values  (@ID,

      'New Version of SQL Server Is Released ,.... ' ,

      GetDate() , 

      DateAdd(Month,1, GetDate()) ,

      1)

  Commit      Transaction

    End Try

    Begin   Catch

  Print Error_Message()

  RollBack    Transaction

    End      Catch

اسلاید 9 :

کنترل دسترسی همزمان

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

(1Lost Update : در این حالت دو تراکنش A و B بصورت همزمان اقدام به خواندن و به روز رسانی یک منبع می کنند . با توجه به اینکه دسترسی به منبع در زمان نوشتن و یا خواندن بصورت پی در پی (Sequential) می باشد ، تغییرات ثبت شده در یکی از تراکنشها ، نادیده گرفته می شود ، چرا که تراکنشها در زمان دسترسی یک مقدار مشخص را خوانده و از اینکه تراکنش دیگری نیز جهت اعمال تغییرات آن منبع را می خواند مطلع نیستند . در این صورت تراکنشی که زودتر ثبت می شود ، تغییرات آن نادیده گرفته می شود .

راه حل : 

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

اسلاید 10 :

کنترل دسترسی همزمان

(2Dirty Read (Uncommitted Dependency): در این حالت یک تراکنش ، رکوردی از اطلاعات را می خواند ، که تراکنش دیگری در حال به روز رسانی آن است و هنوز Commit نشده است  و ممکن است Commit  شود و یا تغییرات دیگری نماید و یا اصلاً RollBack  شود .

راه حل :

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

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید