PDA

View Full Version : سوال در مورد replication



master13111
شنبه 29 مهر 1385, 13:39 عصر
1- در مورد بانکهایی که فیلد کلیدی از جنس autonumber دارند و خود سیستم به مقدار دهی آنها می پردازد : اگر در چند جای مختلف اطلاعات بانک را جمع آوری کرده باشیم و با توجه به اینکه replication از فیلد کلیدی برای تعیین وجود و یا عدم وجود یک رکورد استفاده می کند به نظر میرسد در بروزرسانی این جداول باید به مشکل بربخوریم. چاره چیست؟
2- طریقه اجرای دستور replication از داخل برنامه (‌ مثلا دلفی ) و یا بصورت یک پروسیجر به صورت است؟

reza_rad
شنبه 29 مهر 1385, 16:25 عصر
در مورد اول شما باید اصطلاحا surrogate key در مقصد بسازی.
یعنی یک کلید دیگه نه کلیدی که از جاهای دیگه می خونی.

یک راهش می تونه این باشه که:
به هر کدوم از سرور هایی که اطلاعات رو ازشون می خونی یک ID بدی و موقع replication این ID رو به autonumber شون اضافه کنی.

ama55555
شنبه 29 مهر 1385, 16:58 عصر
در مورد سوال دوم می تونی از از این ActiveX استفاده کنی : Microsoft SQL Merge Control 9.0

master13111
یک شنبه 30 مهر 1385, 07:33 صبح
ضمن تشکر از راهنماییتون
در مورد سوال اول : با این تفاسیر میشه برای مقصد یه ID تعریف کرد و این Id و اون فیلد autonumber را همزمان فیلد کلیدی تعریف کرد. اگه اشتباه می گم لطفا تصحیحم کنید.
در مورد سوال دوم : ببینم می تونم پیداش کنم و از پسش بربیام یا نه . در غیر اینصورت حتما مجددا مزاحمتون میشم

AminSobati
یک شنبه 30 مهر 1385, 11:37 صبح
همونطور که اشاره کردند دوستان، کلید Auto Number شما میتونه با فیلد دیگه ای مثل SiteID در کنار هم یونیک بشن. یادتون باشه که در تمام Queryها باید فیلد SiteID رو مد نظر بگیرید (در WHERE یا ON برای JOIN).
ولی اگر دیتابیس از مرحله طراحی گذشته، به شرط اینکه Subscriberهای شما خودشون Data نداشته باشند و بعد از قرار گرفتن در محیط Replication شروع به Data Entry کنند، میتونین از Identity Range استفاده کنید. در این حالت، مثلا Publisher از 1 تا 1000 و Subscriber از 1001 تا 2000 و Subscriber بعدی از 2001 تا 3000 ... مقدار میگیرند.
ولی در بعضی جداول، شما باید مقادیر استانداردی رو برای کل محیط Replication قرارداد کنید. مثلا وقتی اطلاعات سندهای حسابداری از چند Subscriber به Publisher منتقل میشه و شما قصد دارید اطلاعات مربوط به بانک ملی رو (از همه Subscriberها) ببینید، باید بدونید که فرضا کد این بانک، 5 هستش، نه اینکه هر Subscriber کد دلخواهش رو برای این بانک ایجاد کرده باشه. در این حالت شما برای Query گرفتن به مشکل بر میخورید.
در خصوص شروع Replication از روی Client، میتونین از SP_START_JOB استفاده کنید. اگر از Agentها Properties بگیرید، هر کدوم مثل یک Job دارای اسم هستند. این اسم رو در SP مذکور بکار ببرید. به اعتقاد من این روش ساده تر از ActiveX هست...

master13111
دوشنبه 01 آبان 1385, 10:11 صبح
میشه از کلاینت ها یه backup گرفت و توسط اون backup عملیات replication انجام داد؟

AminSobati
دوشنبه 01 آبان 1385, 14:53 عصر
میشه از کلاینت ها یه backup گرفت و توسط اون backup عملیات replication انجام داد؟
در SQL Server 2005 میتونین Snapshot اولیه رو از Backup استخراج کنین تا Subscription راه اندازی بشه ولی دقیقا مطمئن نیستم منظور شما این بود؟

master13111
یک شنبه 07 آبان 1385, 14:56 عصر
منظورم اینه که اگه اطلاعات از کلاینت ها بصورت فایل backup ای که روی سی دی ریخته شده به دستمون برسه بازم میشه کاری کرد؟