PDA

View Full Version : سوال: اطلاعات در مورد Replication؟



SYNDROME
سه شنبه 18 تیر 1387, 20:31 عصر
با سلام
بنده یک سری اطلاعات در مورد Replication می خواستم.
1-چه کارایی دارد؟
2-چطور تنظیم می شود؟
3-چطور عملیات خود را بین دو تا بانک انجام می دهد؟
اگر امکان دارد یک لینک ، مقاله و . . . (اگر فارسی باشد خیلی خوب است)در مورد موضوع زیر به بنده بدهید و یا کمی توضیح دهید واقعاً بنده را شرمنده می کنید
ممنون می شوم بنده را راهنمایی کنید.
موفق باشید

amin_alexi
چهارشنبه 19 تیر 1387, 07:55 صبح
سلام ...
من خودم یک مدت هست که در گیره کارم (Replication)
جدا از مراحل کار که نسبتا ساده و به صورت ویزارد می باشد یک سری درده سرای خاص خودش رو داره ...
قبل از این که بخوای Replication رو بزنی از نظر من خیلی مهمه که ساختار بانک رو هم اگه بتونی مهیا کار کنی ... مخصوصا در حالت Merge که هر دو طرف همدیگه رو Update می کنن
Replication در حالت کلی به 3 روش انجام میشه :


Snapshot replication
Transactional replication
Merge replication

من نکته مهم و ساده رو در ابتدا می گم مهمتر از دانستن خود مفهوم Replication می باشد !!
اول برو و SQL Server SP4 رو download کن و حتما نصب کن !
بعد باید یک Windows با از نوع سرور نصب کنی ... ترجیحا Server 2003 with SP2 ...

فکر می کنم اگه دوستانه دیگه در این زمینه تجربه های عملی دارن و می خوان به هم کمک کنیم این موضوع رو در اینجا ادامه بدیم و هر کی به مشکل و تجربه جدیدی میرسه اینجا مطرح کنه !
و مراحل کار رو از ابتدا شورع کنیم و هر کی بیاد و یک بخش خاصی رو توضیح بده !!!

amin_alexi
چهارشنبه 19 تیر 1387, 08:12 صبح
من یک سری Link مفید رو Search کردم و اینجا می زارم و سعس می کنم که همیشه Update کنم !

http://barnamenevis.org/forum/showthread.php?t=73586
http://barnamenevis.org/forum/showthread.php?t=110490
http://barnamenevis.org/forum/showthread.php?t=42029
http://barnamenevis.org/forum/showthread.php?t=18166
http://barnamenevis.org/forum/showthread.php?t=60561
http://barnamenevis.org/forum/showthread.php?t=15919
http://barnamenevis.org/forum/showthread.php?t=77477

SYNDROME
چهارشنبه 19 تیر 1387, 21:17 عصر
با تشکر از دوستان


اول برو و SQL Server SP4 رو download کن و حتما نصب کن !

من از SQL2005 استفاده می کنم.


بعد باید یک Windows با از نوع سرور نصب کنی ... ترجیحا Server 2003 with SP2 ...

باید حتماً ویندوز سرور نصب کنیم تا بتوانیم از این امکان استفاده کنیم؟
در ضمن فکر کنم اگر قدم به قدم حرکت کنید بتوان موضوع را راحتر فهمید.
پس فکر می کنم بهتر است اول بدانیم:
1-Replication به چه کاری می آید؟
2-چند نوع داریم و کارایی که کدام در کجا بیشتر است؟
با تشکر از دوستان

AminSobati
پنج شنبه 20 تیر 1387, 09:42 صبح
دوست عزیزم،
Replication برای همسان سازی اطلاعات بین دو یا چند دیتابیس استفاده میشه. همچنین میشه اطلاعات رو فیلتر کرد تا هر درخواست کننده (Subscriber) فقط با دسته خاصی از اطلاعات ارتباط برقرار کنه. در حالت Merge هر جدول سه Trigger براش ساخته میشه تا عملیات ویرایش رو ثبت و به سایرین منتقل کنه. در Transactional دیگه Trigger ساخته نمیشه بلکه Transactionهای ثبت شده در Log File به سایرین منتقل میشن تا اونجا هم اجرا بشن.
تقریبا میشه گفت Merge انعطاف پذیرترین حالت هست فقط کمی Triggerها سربار اضافه میکنند در مقایسه با Transactional ولی معمولا این مسئله قابل اغماض هست.
در SQL Server 2008 قابلیتهایی اضافه شده که بعضا با Merge سازگار نیستند و در صورت نیاز به Replication اجبارا باید Transactional رو استفاده کرد.

SYNDROME
پنج شنبه 20 تیر 1387, 20:47 عصر
با تشکر از امین آقا گل
ممنون از مطالب که خیلی کمک کرد.
فقط الان چند نکته دیگر.
1-عمل Replication در همان لحظه ای که ما در بانک عملیات انجام می دهم در بانک دیگر اعمال می شود و یا نه در یک زمان بخصوص؟
2-حالا اگر در یک زمان بخصوص باشد یک نکته پیش می آید و آن این است که :
اگر من دو تا بانک داشته باشم و DataBase1 بانک اصلی و DataBase2 بانک فرعی من باشد.
اگر اول کار در هر دو بانک سه رکورد 1 و 2 و 3 وجود داشته باشد و سپس ما Replication را ایجاد کنیم.
حالا اگر در بانک 1 رکورد شماره 1 را حذف کنیم و در بانک 2 رکورد شماره 2 را ویرایش کنم و سپس عمل Replication را بخواهم انجام شود چه اتفاقی می افتد؟
واقعا ممنون می شوم بنده را باز هم راهنمایی کنید.
موفق باشید

AminSobati
جمعه 21 تیر 1387, 21:21 عصر
- زمان نقل و انتقال اطلاعات درست مثل Job دست شماست و قابل تنظیمه.
- حذف رکورد اول میتونه باعث حذف این رکورد در دیتابیس دوم هم بشه، و ویرایش رکورد دوم به دیتابیس اول هم قابل انتقاله.

SYNDROME
جمعه 21 تیر 1387, 21:24 عصر
- زمان نقل و انتقال اطلاعات درست مثل Job دست شماست و قابل تنظیمه.
- حذف رکورد اول میتونه باعث حذف این رکورد در دیتابیس دوم هم بشه، و ویرایش رکورد دوم به دیتابیس اول هم قابل انتقاله.
امین جان
حالا اگر رکورد اول در بانک اول حذف و همان رکورد در بانک دوم ویرایش شود چه اتفاقی می افتد؟
با تشکر

amin_alexi
شنبه 22 تیر 1387, 08:06 صبح
حالا اگر رکورد اول در بانک اول حذف و همان رکورد در بانک دوم ویرایش شود چه اتفاقی می افتد؟

در این حالت Merge به Conflict می خوره و در این حالت به طور پیش فرض Publisher به عنوان Winner تلقی میشه و این Conflict رو نگه میداره و ما میتونیم اون رو اگه خواستیم تغییر بدیم ! بگیم Winner کی باشه !!!
البته در هنگامی که طبق زمانبندی عملیات Replication انجام میشه در آخر کار گزارش بهت میده تا بدونی چه اتفاقی افتاده ...
مثلا میگه 2 Conflict , 3 Update,7 inserted که میشه بری و تو تک تک Conflict ها اگه بخوای بگی کی Winner بشه ...

AminSobati
شنبه 22 تیر 1387, 10:07 صبح
کمی شک دارم در مورد پاسخی که میدم چون خیلی وقت پیش موردش رو تجربه کردم و احتمالا همین مورد بود:
از اونجاییکه اول Deleteها در Merge Replication منتقل میشن، قائدتا رکورد حذف شده به دیتابیس دوم هم حذفش منتقل میشه اما ویرایشی که اونجا اعمال شده باعث بازگشت این رکورد به هر دو دیتابیس خواهد شد. پس از اون بعنوان Conflict قابل بررسی خواهد بود.

SYNDROME
شنبه 22 تیر 1387, 21:52 عصر
کمی شک دارم در مورد پاسخی که میدم چون خیلی وقت پیش موردش رو تجربه کردم و احتمالا همین مورد بود:
از اونجاییکه اول Deleteها در Merge Replication منتقل میشن، قائدتا رکورد حذف شده به دیتابیس دوم هم حذفش منتقل میشه اما ویرایشی که اونجا اعمال شده باعث بازگشت این رکورد به هر دو دیتابیس خواهد شد. پس از اون بعنوان Conflict قابل بررسی خواهد بود.
با تشکر از امین گل
یعنی منظور شما این است:
* که عملیاتها با توجه به زمان عملیات به ترتیب انجام می شود؟
و یا
* اول تغییرات انجام شده در بانک اول در همه بانکها اعمال می شود و سپس تغییرات بانک دوم در بانک اعمال می شود؟
اگر ایجوری باشد و ما 3 تا بانک داشته باشیم این اولویتهای به چه ترتیب انجام می شود؟
با تشکر فراوان از دوستان

amin_alexi
یک شنبه 23 تیر 1387, 07:51 صبح
با سلام ...
من دیروز تست کردم !

که عملیاتها با توجه به زمان عملیات به ترتیب انجام می شود؟
اصلا زمان درج برای ثبت اهمیت نداشت ! (شاید چون من با تنظیمات پیش فرض کار کردم این طوری بود !!)

اول تغییرات انجام شده در بانک اول در همه بانکها اعمال می شود و سپس تغییرات بانک دوم در بانک اعمال می شود؟من فکر می کنم باید به جای واژه بانک اول و دوم به ترتیب از Publisher و Subscription بگیم (با ارز پوزش! :لبخندساده:)
چون بانکهای شرکت کننده در Replication میتونن از دو تا بیشتر باشن ... مثلا یک Pub و 2 تا Sub
معمولا بستگی داره به نوع Replication که این اولویتها و تقدم و تاخر ها پیش میاد ...
مثلا در حالت Merge معمولا اولویت با Sub می باشد . اون جور که من تست کردم و زمان رو هم مد نظر گرفتم دیدم در آخر هر سر در موارد Conflict که من در یک جا یکی رو ویراش و یکی رو Delete کردم اولویت رو با Sub گذاشت ولی اون Conflict رو هم گزارش داد (که من میتونستم بگم کدوم رو اعمال کن تغییرات Sub یا Pub) ....
حالا اگه من چیزی رو اشتباه می گم دوستان با تجربه تر ما رو راهنمایی کنن ...
ممنون میشم اگه سایر دوستان هم در این تاپیک شرکت کنن

SYNDROME
دوشنبه 24 تیر 1387, 06:57 صبح
اصلا زمان درج برای ثبت اهمیت نداشت ! (شاید چون من با تنظیمات پیش فرض کار کردم این طوری بود !!)

آیا دوستان دیگر هم همین نظر را دارند.


من فکر می کنم باید به جای واژه بانک اول و دوم به ترتیب از Publisher و Subscription بگیم (با ارز پوزش! :لبخندساده:)

به روی چشم:چشمک:


معمولا بستگی داره به نوع Replication که این اولویتها و تقدم و تاخر ها پیش میاد ...
مثلا در حالت Merge معمولا اولویت با Sub می باشد . اون جور که من تست کردم و زمان رو هم مد نظر گرفتم دیدم در آخر هر سر در موارد Conflict که من در یک جا یکی رو ویراش و یکی رو Delete کردم اولویت رو با Sub گذاشت ولی اون Conflict رو هم گزارش داد (که من میتونستم بگم کدوم رو اعمال کن تغییرات Sub یا Pub) ....
حالا اگه من چیزی رو اشتباه می گم دوستان با تجربه تر ما رو راهنمایی کنن ...
ممنون میشم اگه سایر دوستان هم در این تاپیک شرکت کنن
به توجه به صحبتهای امین گل

کمی شک دارم در مورد پاسخی که میدم چون خیلی وقت پیش موردش رو تجربه کردم و احتمالا همین مورد بود:
از اونجاییکه اول Deleteها در Merge Replication منتقل میشن، قائدتا رکورد حذف شده به دیتابیس دوم هم حذفش منتقل میشه اما ویرایشی که اونجا اعمال شده باعث بازگشت این رکورد به هر دو دیتابیس خواهد شد. پس از اون بعنوان Conflict قابل بررسی خواهد بود.
آیا عملیات به ترتیب نوع عملیات انجام می شود؟
آیا عملیات از Publisher شروع می شود و یا از SubScriptionو یا نه قابل تنظیم است.
منتظر نظرات دوستان هستم
موفق باشید

AminSobati
دوشنبه 24 تیر 1387, 13:19 عصر
اگر منظورتون دقیقا موضوع ویرایش در یک بانک، و حذف در بانک دیگر هست، طبیعتا زمان میتونه تاثیر داشته باشه (یعنی اینکه ما بین عملیات Sync اتفاق بیافته یا خیر)
اگر یکی حذف رو انجام بده و این حذف به بانک دیگه سرایت کنه، پس اونجا ویرایشی هم بعدا اتفاق نخواهد افتاد. اما اگر Sync انجام نشه و بانک دوم هم ویرایش بکنه، در این مورد حضور ذهن ندارم که آیا اولویت ویرایش و حذف تاثیری در نحوه بروز Conflict داره یا خیر، خیلی ساده میتونین تستش کنین

SYNDROME
دوشنبه 24 تیر 1387, 20:20 عصر
(یعنی اینکه ما بین عملیات Sync اتفاق بیافته یا خیر)

امین جان منظورتان از Sync چی است؟
با تشکر از شما

AminSobati
سه شنبه 25 تیر 1387, 07:35 صبح
منظور زمانی هست که Agent مربوطه به کار میافته و اطلاعات و تغییرات رو تبادل میکنه

babak2000
سه شنبه 02 مهر 1387, 22:38 عصر
در SQL Server 2008 قابلیتهایی اضافه شده که بعضا با Merge سازگار نیستند و در صورت نیاز به Replication اجبارا باید Transactional رو استفاده کرد.

امین جان میشه کمی توضیح بدید چرا 2008 با Merge سازگار نیست ؟؟ چون میخواهم بانک ها

از 2000 به 2008 ارتقا بدم و مسله Replicat و مرج برام خیلی مهم هستش

اگه دردسر:عصبانی++: داشته باشه از همون 2000 استفاده می کنم

AminSobati
چهارشنبه 03 مهر 1387, 15:01 عصر
در حالت عادی این ارتقا مشکلی ایجاد نمیکنه. اون مطلب که اشاره کردم برای استفاده از بعضی قابلیتهای خاص هست که الان دیتابس شما در نسخه 2000 اصلا نداره، لذا نگرانیی هم نیست وقتی Upgrade کنین

aghayex
سه شنبه 13 مهر 1389, 20:42 عصر
آیا این امکان برا این سرویس هست که بتونیم فایلشو بریزیم تو یه سی دی و ببریم تو سیستم دیگه ؟