View Full Version : انجام تراکنش در دو دیتابیس مجزا
Developer Programmer
چهارشنبه 21 اردیبهشت 1390, 11:18 صبح
فرض کنین که یه دیتابیس برای دبیرخانه دارین و یه دیتابیس هم واسه برنامه خودتون استفاده کردین.
حال می خواین، یه شماره از دبیرخانه بگیرین و در برنامه تون ازش استفاده کنین و تضمین کنین که کلیه عملیات با موفقیت انجام خواهد شد.
چطور میشه تراکنشی نوشت که برای هر دو دیتابیس این اعمال رو انجام بده؟
حمیدرضاصادقیان
چهارشنبه 21 اردیبهشت 1390, 11:49 صبح
سلام.
ببینید برای جابجایی یا استفاده از دو دیتابیس در Query هاتون شما باید قبل از نام جداول از Owner و نام دیتابیس استفاده کنید.
مثال:
Begin Tran
Insert into Db1.Dbo.Table
Select * from db2.dbo.Table2
Commit Tran
در این مثال در داخل یک Transaction محتویات جدول Table2 از دیتابیس db2 به داخل جدول Table از دیتابیس Db1 اضافه خواهد شد.
این مورد میتونه در تمام جاها تعمیم داده بشه.
Developer Programmer
چهارشنبه 21 اردیبهشت 1390, 12:20 عصر
دو تا سئوال:
اول اینکه مطمئن هستین، تراکنش در multiple database ها با ذکر پیشوند کاملا درست کار میکنه
دوم اینکه اگه دبیرخانه روی یه سرور و برنامه شما روی سرور دیگه بود چطور ؟
دنبال روشی هستم که بشه مشابه اونچه که نوشتین، با استفاده از کوئری و امکانات SQL Server 2008 مشکل رو حل کرد تا مجبور نباشم از داخل کد و با امکانات دات نت بازسازیش کنم.
حمیدرضاصادقیان
چهارشنبه 21 اردیبهشت 1390, 12:45 عصر
اول اینکه مطمئن هستین، تراکنش در multiple database ها با ذکر پیشوند کاملا درست کار میکنهاگر در داخل یک Engine باشند بله.
دوم اینکه اگه دبیرخانه روی یه سرور و برنامه شما روی سرور دیگه بود چطور ؟شما باید با استفاده از Linked Server به سرور دوم وصل شوید و در Transaction با استفاده از ساختار زیر کار کنید.
Begin Distributed Transaction
..
..
Commit Transaction
با این روش تراکنشهای شما توسط Ms DTC کنترل می شود.
در مورد Distributed Transaction میتوانید به اینجا (http://msdn.microsoft.com/en-us/library/ms188386.aspx)مراجعه کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.