پاورپوینت تراکنشها در SQL Server (pptx) 20 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 20 اسلاید
قسمتی از متن PowerPoint (.pptx) :
بسم لله الرحمن الرحیم
تراکنشها در SQL Server
Transactions
تراکنشها در SQL Server
به مجموعه ای از دستورات که می بایست یا همگی با هم با موفقیت اجرا شوند و یا هیچکدام اجرا نشوند ، تراکنش گفته می شود . تراکنش ها باعث حفظ جامعیت داده های ذخیره شده در بانک اطلاعاتی می شوند .
مزایای اصلی استفاده از تراکنشها در بانک های اطلاعاتی که مختصراً ACID نامیده می شوند ، به شرح زیر هستند :
Atomicity (تجزیه ناپذیری) : تعریف دستورات در قالب یک فعالیت عملیاتی را به صورتیکه یا کلیه عملیات با هم اجرا شوند ویا هیچکدام اجرا نشوند را Atomicity می نامند .
Consistency (پایداری) : یک تراکنش ، پس از خاتمه ، می بایست داده ها را در یک وضعیت پایدار قرار دهد ، به عنوان مثال در یک بانک اطلاعاتی رابطه ای ، پس از خاتمه یک تراکنش ، کلیه قوانین جامعیت داده ها ، بایستی به داده های تغییر یافته توسط تراکنش اعمال گردد و همجنین ساختارهای داخلی داده های ذخیره شده مانند Index ها بایستی پس از اعمال تغییرات بازسازی و به وضعیت پایدار برسند .
Isolation (جدا سازی) : در هنگام کار با تراکنش ها ، یکی از مهمترین موارد ، امکان دسترسی همزمان یک یا چند کاربر به یک منبع داده مشترک است . تغییرات در یک تراکنش همزمان می بایست از تغییرات در تراکنش همزمان دیگر ، جدا باشد .
Transactions
تراکنشها در SQL Server
Durability (مقاومت یا دوام ) : یک تراکنش پس از خاتمه می بایست دارای تاثیرات دائمی و ماندگار باشد . این بدان معنی است که عدم سازگاری ناشی از خرابی سیستم مانند قطع Power یا قطع شبکه و ... توسط تراکنش قابل کنترل و تصمیم گیری باشد .
در SQL Server سه دسته امکانات برای رسیدن به اهداف فوق وجود دارد :
امکانات قفل گذاری (Locking) که محیط را برای رسیدن به Isolation مناسب ، مهیا می سازد .
امکانات واقعه نگاری (logging) که در صورت هر نوع خرابی ناشی از سیستم عامل ، شبکه ، سخت افزار ، برق ، یا حتی نسخه بانک اطلاعاتی ، با شروع مجدد ، وضعیت داده ها را به حالت قبل از شروع تراکنش باز می گرداند و در جهت رسیدن به Durability بکار گرفته می شود .
امکانات مدیریت تراکنشها (Transaction Management) که اصولاً جهت پیش برد اهداف Atomicity و Consistency بکار گرفته می شود . در واقع پس از آغاز ، یک تراکنش ، بایستی بطور موفقیت آمیزی خاتمه یاید ، یا اینکه نسخه جاری مدیریت بانک اطلاعاتی ، همه داده های تغییر یافته در طول تراکنش را به وضعیت قبل از شروع تراکنش باز گرداند .
Transactions
تراکنشها در SQL Server
در هنگام بروز هر نوع خطا در هنگام اجرای یک تراکنش ، عملیاتی تحت عنوان Recovery آغاز می شود .
عملیات Recovery معمولاً توسط SQL Server مدیریت می شوند که Automatic Recovery نامیده می-شود . این عملیات خود سه دسته هستند :
1- با شروع مجدد سرویس SQL Server
2- با در خواست کاربر و اجرای دستور Rollback
3- سرویس خودکار مدیریت تراکنشها
SQL Server هنگام شروع یک تراکنش ، وضعیت جاری را در فایل های Log ذخیره ، و چنانچه نیاز به بازیابی بود ، در هنگام Recovery ، اطلاعات مورد نظر را از فایلهای Log باز خوانی می نماید .
انواع تراکنشها در SQL Server
دو دسته اصلی از تراکنشها در SQL Server وجود دارند :
1- Single Transactions
2- Distributed Transactions
دسته اول تراکنشها ، فقط روی یک بانک اطلاعاتی قابل استفاده هستند . در صورتیکه حوزه عملیاتی یک تراکنش بیش از یک بانک اطلاعاتی باشد ، بایستی از دسته دوم تراکنشها ، استفاده شود . در این حالت حتی این امکان وجود دارد که تراکنشها بر روی دو Server نیز استفاده شوند . این امکان با استفاده از سرویس MSDTC (Microsoft Distributed Transaction Coordinator) قابل انجام است .
MSDTC
انواع تراکنشها در SQL Server
Transactions
سه دسته اصلی از تراکنشهای Single Transactions در SQL Server وجود دارد :
1- تراکنشهای خودکار Auto commit Transactions
2- تراکنشهای صریح Explicit Transactions
3- تراکنشهای ضمنی Implicit Transactions
دسته اول تراکنشهای خودکار :
این دسته از تراکنشها ، توسط SQL Server و در هنگام اجرای دستورات Insert ، Update و Delete آغاز می شوند . در صورت موفقیت آمیز بودن و عدم وجود خطا بصورت خودکار Commit می شوند و در غیر اینصورت عملیات آنها ، لغو می گردد .
این تراکنشها ، دارای مراحل مختلفی هستند که در زیر می بینیم :
Instead Of Triggers
Constraints
After Triggers
انواع تراکنشها در SQL Server
Transactions
دسته دوم تراکنشهای صریح :
این دسته از تراکنشها ، دارای نقطه شروع و خاتمه مشخصی هستند .
به شکل مقابل توجه کنید :
انواع تراکنشها در SQL Server
دسته سوم تراکنشهای ضمنی:
این دسته از تراکنشها ، شباهت زیادی به تراکنشهای صریح دارند ، با این تفاوت که شروع تراکنش صریحاً توسط دستور Begin Transaction تصریح نمی شود و تراکنش های ضمنی با دستور زیر فعال یا غیر فعال می شوند :
Set Implicit_Transactions {On|Off}
به کد زیر توجه کنید :
Use [Lab-EasyShop]
Insert Into Customer
Values (N'Bill' , N'Gates')
Insert Into Customer
Values (N'Paul' , N'Alen')
Set Implicit_Transactions On
Insert Into Customer
Values (N'Steve' , N'Jobs')
Update Customer
Set FirstName = N'Bills'
Where ID = 1
RollBack Transaction
Insert Into Customer
Values (N'Steve',N'Jobs')
Commit Transaction
Delete Customer
Where ID In (21,22)
Set Implicit_Transactions Off