PDA

View Full Version : Replication و بحث همزمانی ورود اطلاعات در جداول



RK977877
دوشنبه 12 آذر 1386, 17:43 عصر
با سلام
من میخواهم از Replication استفاده کنم ولی در یکسری از جاها دچار مشکل شدم
مشکله من اینه که چون یکسری از جداولم که انتخاب شده برای عمل Replication
جهت ورود اطلاعات حق تقدم و تاخر دارند بدین معنی که اول باید جدول 1 مقدار دهی شود و بعد جدول 2 ولی ظاهرا عمل Replication اینکار را انجام نمیده چطور میتونم کنترل کنم
آیا در خوده Replication تنظیمه خاصی وجود داره یا خیر
لطفا راهنمائی کنید ؟

AminSobati
دوشنبه 12 آذر 1386, 22:28 عصر
دوست عزیزم،
اول از همه نسخه SQL Server که باهاش کار میکنید رو بفرمایید. بعد، منظورتون از تقدم و تاخر چیزی مثل رابطه Master/Detail هست که با Foreign Key مشخص میشه یا ؟...

RK977877
چهارشنبه 14 آذر 1386, 10:12 صبح
نسخه Sql server 2000 هستش
و در مورد تقدم و تاخر ببینید یکسری از جداول هستند که نسبت به جداول دیگر باید اول پر شوند مثلا جدل معرفی کالا اول باید پر شود و بعد جدول معرفی کالا در انبار و قیمت گذاری کالا

AminSobati
چهارشنبه 14 آذر 1386, 10:59 صبح
زمانیکه FK بین جداول تعریف میشه و این جداول در یک Publication قرار میگیرند، خود SQL Server تقدم و تاخر در ورود اطلاعات رو رعایت میکنه (از روی رابطه Master/Detail بودن). آیا چیزی غیر از این مد نظرتون هست؟

RK977877
چهارشنبه 14 آذر 1386, 11:08 صبح
خوب فرض کنید که ما Replication را پیاده سازی کردیم و حالا قرار است که مقادیر از یک دیتابیس به یک دیتابیس دیگر ریخته شوند حال ممکن است که در جدول A یک کدی باشد که قرار است در جدول B ریخته شود ولی ما همان کد را در جدول B هم داریم و فیلد آن جدول هم
کلید است خوب با این روش ما به مشکل Duplicate key مواجه میشویم در این صورت چه باید کرد . متشکرم

AminSobati
چهارشنبه 14 آذر 1386, 11:27 صبح
زمانی که شما از فیلد Identity برای PK استفاده کرده باشین، Replication میتونه اصطلاحا Identity Range به هر Subscriber اختصاص بده. فرضا به یکی از 1 تا 1000 به دیگری از 1001 تا 2000 و الی آخر...
حالا وقتی اطلاعات در Publisher تجمیع بشه، PK شما تکراری نخواهد بود

RK977877
چهارشنبه 14 آذر 1386, 11:34 صبح
خوب ما بعضی از جداولمان فیلد Identity ندارند
چه باید کرد ممنون

AminSobati
چهارشنبه 14 آذر 1386, 12:53 عصر
میتونین یک فیلد مثلا SiteID در نظر بگیرین و این فیلد در کنار اون فیلد اصلی خودتون، با همدیگه PK بشن. هر Subscriber برای خودش یک SiteID داشته باشه.

RK977877
چهارشنبه 14 آذر 1386, 16:36 عصر
آقای Sobati ببخشید مثلا اگر یک فیلد که خودش دارای کلید هستش ولی نه Identity و حالا قرار باشه که از یه جدول دیگه اطلاعاتش را بگیره که اون جدول از طریق ناشر باشه و دارای مقداری از فیلدی باشه که در این جدول هست مثلا مقدار کد برابر با 10 قرار است در یه جدول دیگه که دارای همان فیلد هست و اون جدول هم دارای مقدار 10 هست ریخته بشه اون
وقت ما به مشکل Duplicate key مواجه میشویم . چه باید بکنیم . ممنون

AminSobati
پنج شنبه 15 آذر 1386, 10:45 صبح
- از SiteID نمیتونین استفاده کنین؟
- زمانیکه Publisher و Subscriber هر دو، اطلاعاتی از قبل دارند و در این حالت تصمیم به Replication گرفته میشه، باید بگم این سخت ترین شرایط ممکنه! چون باید دو دیتابیس اول Merge بشن. متاسفانه این کار پر زحمتیه. یعنی باید برای عدم تداخل PKها، Update انجام داد. اما باز پیشنهاد میکنم در مورد SiteID فکر کنین!

RK977877
شنبه 17 آذر 1386, 10:58 صبح
آقای sobati ببخشید جدول اول و دوم من که قرارهستند در Publisher قرا بگیرند خودشان Master/Detail هستند و مثلا جدول A, B و خود جدول ها هم به تنهائی دارای Identity می باشند حالا عین همین جداول هم در Subscriber هست و دارای مقدار می باشند اینجوری نیست که خالی باشند مثلا در Publisher دو جدول دارای مثلا 100و 200 رکورد بوده و قرار است که در Subscriber به جداول مربوطه مقدار دهی شوند که خود انها هم دارای مقدار هستند مثلا 150 و 200 رکورد هستند این برای من مشکل ساز شده که مرتب با Duplicate Key مواجه میشوم یعنی Replication یک لحظه فعال شده و سریعا Fail می شود اگه میشه منو در حل این مشکل راهنمائی کنید متشکرم .

RK977877
یک شنبه 18 آذر 1386, 09:13 صبح
آقای Sobati اگه میشه منو راهنمائی کنید

AminSobati
یک شنبه 18 آذر 1386, 12:50 عصر
من روش معجزه آسایی سراغ ندارم. همونطور که در پست شماره 10 عرض کردم، یا اطلاعات رو باید دستی Merge کنین قبل از Replication یا با کمک فیلد جدیدی رکوردها رو یونیک کنین.