جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
انتقال اطلاعات با Replication در SQL Server
-(5 Body) 
انتقال اطلاعات با Replication در SQL Server
Visitor 2034
Category: دنياي فن آوري
معرفي Replication راه حلي براي انتقال اطلاعات از يک بانک اطلاعاتي SQL sever به يک بانک اطلاعاتي ديگر از همان نوع و البته مستقر در يک محل و کامپيو تر ديگر است .
اين فرآيند توسط ايجاد يک کپي از اطلاعات موجود در مبدا و انتقال به مقصد صورت مي گيرد . در اين ارتباط اطلاعاتي اصطلاحا به کامپيو تر وبانک اطلاعاتي مبدا ، ناشر (publisher) و به کامپيو تر وبانک اطلاعاتي مقصد ، مشترک يا متعهد (subscriber) مي گويند البته اين نوع رابطه ، با وجود تنها يک ناشر اما يک يا چند مشترک امکان پذير است . بدين معني که اطلاعات يک بانک اطلاعاتي در مبدا قابل انتقال به چند مقصد مختلف است . از نسخه 7 به بعد SQL severامکان تغيير اطلاعات در مقصد و انتقال آن به مبدا نيز وجود دارد . با اين وصف ، اين رابطه داده اي بين ناشر و مشترک ممکن است گاهي اوقات بر عکس شود و جاي مبدا و مقصد در يک مقطع زماني عوض شود . بدين ترتيب يک کامپيوتر مشترک يا مقصد مي تواند گاهي اوقات نقش ناشر يا مبدا در همان رابطه بازي کند . اين قابليت جديدMulti site update مي گويند . در SQL sever، سه نوع انتقال اطلاعات از طريق Replication وجود دارد. هر کدام از اين سه راه ، سناريو ي خاصي براي انتقال اطلاعات از مبدا به مقصد و يا برعکس را مديريت مي کنند که در ادامه به بررسي آن ها مي پردازيم . 1- انتقال اطلاعات به روش ادغام (Merge) اينوع انتقال اطلاعات که از قابليت Multi site هم پشتيباني مي کند ، زماني مورد استفاده قرار مي گيرد که استقلال داخلي هر بانک اطلاعاتي طرف يک رابطه ، به رسميت شناخته مي شود . بدين معني که در يک رابطه انتقال اطلاعات ، هر کامپيو تر ضمن حف ظ ساختار بانک اطلاعاتي خود ، هم مي تواند نقش ناشر را داشته باشد و نقش مشترک را ايفا نمايد . در اين حالت هر تغييري در جداول مشترک هر طرف ديگر اعمال مي شود . نکته مهمي که در اينجا مطرح است اين است که چطور طرفين اين ارتباط متقابل بايد با هم هماهنگ باشند و اولويت يکديگر را به رسميت بشناسند . به عنوان مثال فرض کنيد در يک زمان واحد ، هر دو طرف بخواهند اطلاعاتي را در مورد يک جدول بانک اطلاعاتي به يکديگر ارسال کنند . (يعني بروز حالت تداخل ) اين مشکل با استفاده از روش خاصي که هر نوع Replication مخصوص خودش دارد قابل حل است .
به طور کلي در حالت ادغام ، يک پايگاه داده حايل ميان ناشر و مشترک به عنوان توزيع گر ( Distributor) ساخته مي شود . اين پايگاه داده به نام Distributor در ليست پايگاه هاي داده اي ناشر قرار مي گيرد و وظيفه ايجاد همزماني (synchronization ) بين ناشر و مشترکين را ايفا مي کند . پايگاه داده توزيع گر هم مي تواند در سمت ناشر و هم در يک کامپيوتر مياني ديگر (غير از کامپيو تر هاي سمت مشترک ) قرار داشته باشد . اين پايگاه داده ضمن ايجاد همزماني در ردو بدل اطلاعات بين ناشر و مشترک ، اين امکان را نيز فراهم مي سازد تا مدير سيستم بتواند اولويت و در واقع ارجحيت جهت انتقال اطلاعات در زمينه بروز تداخل را مشخص کند . اين اولويت priority در زمان تعريف طرف هاي ناشر و مشترک يک Replication از نوع ادغام توسط مدير سيستم تنظيم مي شود . 2- تصوير برداري از اطلاعات (Snapshot) در اين روش ابتدا يک تصوير کامل از آنچه که بايد از سمت ناشر به سمت مشترک برود تهيه مي شود . اين تصوير هم شامل خود ساختار آنچه که منتقل مي شود ( مثلا ساختار يک جدول ) و هم شامل اطلاعات داخل آن است . در ابتداي کار، تصويرمذکور عينا به مشترک فرستاده مي شود . روند و توالي ارسال اين تغييرات هم همانند حالت قبل (ادغام ) طي يک فاصله زماني مشخص مثلا ساعتي يک بار که توسط مدير سيستم قابل تنظيم است ، انجام مي گيرد . يکي از مزاياي اين روش نسبت به حالت ادغام ، اين است که زمان کمتري از وقت مدير سيستم را جهت پيکر بندي و تنظيم عمل انتشار صرف مي کند و به دليل اينکه در ابتداي عمل انتشار، خود ساختار نيز عينا به مشترک منتقل مي شود ، از قابليت اطمينان بيشتري برخوردار است . به طور کلي کاربرد اين نوع انتقال اطلاعات ، زماني است که مدير سيستم قصد ايجاد يک ارتباط ساده و يکطرفه ولي مطمئن دارد 3- انتقال بر اساس فرآيند (Transactional) اين روش يکي از بهترين و قابل کنترل ترين روش هاي انتقال است. در اين روش هر تغييري که در جداول ناشر صورت مي گيرد ، به صورت يک دستور SQL درآمده که تحت يک فرآيند واحد هم در سمت کليه مشترکين اجرا مي شود . در اين صورت اگر به طور مثال يکي از مشترکين به دليلي با اشکال مواجه شده و تغيير مورد نظر در آن انجام نشود ، اين تغيير نه در خود ناشر و نه در هيچ کدام از مشترکين ديگر نيز انجام نخواهد شد ، بدين معني که يا يک تغيير در اطلاعات براي تمام کامپيوتر ها اعم از ناشر و کليه مشترکين انجام مي شود و يا اين که براي هيچ کدام انجام نخواهد شد در اين حالت هم يک پايگاه داده به واسطه به نام Distribution نقش دريافت وارسال فرآيند را به طرف مشترک ايفا مي کند . در واقع روش فرآيند ، در مقايسه با دو روش قبل از حالت به هنگام (online) بودن بيشتري برخورداراست . يعني اين که هر فرآيند و هر دستور در همان لحظه که مي خواهد در ناشر اجرا شود ، به واسط فرستاده شده و سپس در يک زمان واحد در کليه مشترکين نيز انجام مي شود و در واقع زمان تغيير اطلاعات در ناشر و در مشترکين تقريبا يکسان است .
همچنين در اين روش تداخلي هم پيش نمي آيد . چون هر تغييري ابتدا بايد به واسط فرستاده شود و از آن جا به جاهاي ديگر ارسال شود و واسط هم آن ها را در يک صف اولويت (priority queue ) قرار داده و به ترتيب انجام مي دهد . نتيجه اين نوع انتقال اطلاعات ، داشتن چند پايگاه داده کاملا يکسان و به هنگام در مکان هاي مختلف است که همگي از يک ناشر ، اطلاعات مورد نظر را دريافت مي کنند . تعريف ناشر و مشترکين براي تعيين يک SQLserverوان ناشر ، کافي است يک رابطه Replication براي آن تعريف کرده و پس از انجام تنظيمات مربوطه و طي يک مراحل خاص هر يک از سه نوع انتقال اطلاعات ، آن کامپيوتر را به عنوان مبدا يا ناشر يک فرآيند انتقال معرفي کنيم . در همين حين و براي ايجاد پايگاه داده واسط يا همان توزيع گر (Distributor) هم مي توان وارد عمل شده و خود ناشر را به عنوان توزيع گر آن فرآيند انتقال معرفي کنيم . پس از اين کار نوبت به تعريف مشترکين مي رسد . براي تعريف يک مشترک از دو راه مي توان اقدام کرد ، که هر يک کاربرد مخصوص به خودرادارند . در روش اول که فرستادن اطلاعات به طرف يک مشترک است و در اصطلاح push ناميده مي شود . بدين معني که مدير سيستم مي تواند بلا فاصله پس از تعريف يک ارتباط و ناشر آن از همان لحظه و در همان محل استقرارناشر ، مشترکين را يک به يک به اين نوع ارتباط دعوت و اضافه کند و اطلاعات را به سمت آنها بفرستد . اين ارتباط به دليل اين که کامکلا از طرف ناشر، کنترل مي شود، از حالت به هنگام بيشتري (online) برخوردار است و اطلاعات بلا فاصله به سمت مشترک فرستاده مي شود . در روش دوم که pull نام دارد ، تعريف مشترک از سمت خودش انجام مي شود و در واقع اين مشترک است که اطلاعات را از ناشر طلب مي کند . اين حالت بيشتر در مواقعي است که اطلاعات را از ناشر طلب مي کند . اين حالت بيشتر در مواقعي کاربرد دارد که اولا تعداد مشترکين از قبل براي ناشر مشخص نيست و ثانيا بروز بودن اطلاعات در آن واحد از اهميت حياتي براي سيستم برخوردار نيست و انتقال اطلاعات درآن واحد از اهميت حياتي براي سيستم برخوردار نيست و انتقال اطلاعات مي تواند با تاخير و با درنگ زماني و در زمان دلخواه مشترک انجام شود . طرح يک مسئله فرض کنيد مي خواهيم با استفاده از مکانيسم Replication ، اطلاعات موجود در بانک اطلاعاتي Northwind را از يک پايگاه داده SQL server به نام server به يک بانک اطلاعاتي به همان نام و بر روي يک پايگاه داده ديگر مستقر در يک سرور راه دور به نام Home server منتقل کنيم .
براي اين کار مي توانيم از هر کدام از سه روش انتقال اطلاعات ، استفاده نماييم . مراحل ايجاد ناشر براي اين کار ، در پنجره Enterprise Manager بر روي گزينه Publication از آيتم Replication کليک سمت راست نموده فرمان New را انتخاب مي نماييم . با آغاز ويزارد مخصوص ، کليد Next را کليک کرده و در صفحه بعد در پاسخ به اين سوال که آيا مي خواهيد پايگاه داده توزيع گر (Distriburtor) درهمين کامپيوتر ساخته شود يا خير ، گزينه اول يعني خود کامپيوتر server را انتخاب مي کنيم و به مرحله بعد مي رويم . در پنجره بعدي از کاربر خواسته مي شود تا فولدري را جهت قرار دادن فايل هاي مربوط به عمليات انتقال مشخص کند . وجود اين فولدر براي انجام عمل Distriboutضروري است و بايد طوري انتخاب شود که در شبکه اي که قرار است مشترکين به آن بپيوندند قابل دسترسي باشد . پس از انتخاب اين فولدر و کليک بر روي کليد Next، در مرحله بعد نام بانک اطلاعاتي مورد نظر يعني Northwind را از داخل ليست انتخاب کرده و به مرحله اصلي يعني انتخاب نوع Replication مي رسيم که در اين جا همان گزينه اول يعني snapshot را انتخاب مي کنيم . سپس در مرحله بعد بايد هر موجوديتي اعم از جداول و روال هايي، را که مي خواهيم در اين عمليات انتقال وجود داشته باشند ، معرفي کنيم براي مثال جدول مشتريان (customers) را از داخل ليست جداول علامت زده و به مرحله بعد مي رويم . در مرحله بعد يک نام براي عمليات انتقال انتخاب کرده و کليد Next را مي زنيم و در نهايت با کليک بر روي عبارت Finish عمليات را پايان مي دهيم . مراحل ايجاد مشترکين 1- روش Pull ( از طريق مشترک ) براي ايجاد يک مشترک با روش pull ، به کامپيوتر مشترک مراجعه کرده و بر روي گزينه subscription کليک سمت راست کرده و فرمان New pull را انتخاب مي کنيم .
سپس از داخل پنجره بعدي گزينه دوم يعني Look in the Active Directory را انتخاب مي نماييم . در مرحله بعد نام ناشر و سپس بانک اطلاعاتي مورد نظر ، نام عمل نشر که در ناشر تعريف کرديم و سپس رمز عبور مربوط به يک کاربر معتبر در ناشر مثلا کاربر sa را وارد نماييم . در قسمت بهد هم نام بانک اطلاعاتي مقصد را که همان Northwind است انتخاب مي ناميم . پس از طي چند مرحله ديگر که نياز به تغييري در آن ها نيست و صرفا با کليک بر روي کليد Next ، مقادير پيش فرض را تاييد مي کنيم به مرحله انتخاب توالي زماني به روز شدن مشترک مي رسيم . در اين جا هم بايد بين سه روش مختلف يعني حالت هاي بلا درنگ ، زمان دار ، بر اساس در خواست ، يکي را انتخاب کنيم که در اين جا همان نوع اول يعني بلادرنگ را انتخاب مي نماييم . با اين کار مراحل تعريف يک مشترک از طريق Pull پايان مي پذيرد . اما نکته مهمي که در اين جا بايد به آن اشاره کنيم اين است که براي فراهم ساختن امکان تعريف مشترکين از طريق Pull حتما بايد اين اجازه را قبلا و از طريق ناشر به کاربران مشترک داده باشيم . براي اين کار ، قبل از تعريف مشترک ، بايد در کامپيوترناشر ، بر روي نام عمليات انتقال ايجاد شده کليک سمت راست کرده و گزينه خصوصيات (properties)را انتخاب نماييم . سپس زبانه subscription را باز کرده و مطمئن شويم که گزينه هاي Allow anonymous و همچنين Allow Pull در حالت تاييد شده باشند . 2- روش push (از طريق ناشر ) براي تعريف يک مشترک با استفاده از روش Push ، به کامپيو تر ناشر مراجعه کرده و بر روي نام عمليات نشر که قبلا ايجاد کرده ايم کليک سمت راست مي کنيم . با شروع مراحل ويزارد ، نام کامپيوتر مشترک را از ليست انتخاب مي کنيم . در مراحل بعدي با معرفي بانک اطلاعاتي Northwind به عنوان مقصد به پنجره ويژه تعريف زمان به روز شدن مشترک مي رسيم که از بين دو نوع بلادرنگ و زماندار قابل انتخاب است . که باز هم نوع اول را انتخاب مي کنيم .
در مرحله بعد هم مطمئن مي شويم که گزينه start snapshot agent درحالت تاييد قراردارد و سپس با چند کليک بر روي کليد Nextعمليات را پايان مي دهيم . نکته بسيار مهمي که براي تعريف مشترک از طريق روش push بايد در نظر داشته باشيم اين است که براي ظاهر شدن نام هر مشترک درليست انتخاب که در شکل 8 ملاحظه کرديد ، بايد قبلا اين مشترک با استفاده از عمليات Registration در کامپيوتر ناشر تعريف شده باشد . در غير اين صورت نام آن در داخل ليست مشترکين ظاهر نمي شود . عمل مذکور هم در يک محيط شبکه اي بسيار آسان است . کافي است بر روي SQL server Group در کامپيوتر ناشر کليک راست کرده و با انتخاب New Registration و وارد کردن نام مشترک اين کار را انجام دهيم .

معرفي سايت مرتبط با اين مقاله
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image