نمایش نتایج 1 تا 8 از 8

نام تاپیک: Replication and Subscription in sql server 2014

  1. #1

    Question Replication and Subscription in sql server 2014

    سلام.

    من يک ديتابيس اس کيو ال روي سرور شرکت دارم.اين ديتابيس درحال کار هست و با نرم افزار حسابداري در ارتباطه.مثلا اسمشو بزاريم:database A
    يک ديتابيسم روي يک سرور ديگه دارم.اينم اسمشو بزاريم database B
    در ديتابيس اولي(database A) من داده ها ثبت ميشن و ميخام داده هاي من هرلحظه با ديتابيس دومي من (database B) مچ باشن يعني تغييرات در ديتابيس A من در ديتابيس B هر لحظه حس کنم.البته بايد بگم جداول و ساختار ديتابيس ها متفاوت هست.کل ساختار از زمين تا آسمون با هم فرق ميکنن.
    من راه کار ميدم اگر ديديد درسته و يا راه کار خود کارفرما درست تره اونو به من ياد بديد.
    از طريق سرورسي به نام Replication از ديتابيس اولي ... ميسازي و از طريق Subscription در ديتابيس دومي ... پيادش ميکني.

    ممنون میشم راهنماییم کنید

  2. #2

    نقل قول: Replication and Subscription in sql server 2014

    خواسته شما خیلی سنگین است ولی میشه با
    Triggers
    انجامش داد .
    برای این کار باید دو سرور را به هم ارتباط دهید (Linked Server).

  3. #3

    نقل قول: Replication and Subscription in sql server 2014

    نقل قول نوشته شده توسط pezhvakco مشاهده تاپیک
    خواسته شما خیلی سنگین است ولی میشه با
    Triggers
    انجامش داد .
    برای این کار باید دو سرور را به هم ارتباط دهید (Linked Server).
    میشه یکم بیشتر توضیح بدید
    چون در واقع این مشکل من نیست.جایی مطرح شد و منم کنجکاو شدم که بدونم چجوری میشه این کار رو انجام داد

  4. #4

    نقل قول: Replication and Subscription in sql server 2014

    خواسته شما دو بخش دارد :
    1)Link Server
    2)انجام خواسته یا همان تغییرات در پایگاه داده دیگر

    درباره Link Server نوشته های زیادی است ولی برای آگاهی ابتدایی:

    Linked server ها امکان اتصال به منابع داده خارجی را فراهم آورده ، به شما اجازه دسترسی به داده و اجرای procedure ها در SQL Serverی غیر از Instanceی که در حال اجراست را می دهد.

    علاوه بر این linked serverها امکان دسترسی به هر نوع منبع داده ای که قابل تطبیق با ODBC باشد از قبیل Oracle,Excel,Flat File و ... را می دهد که همین امکان باعث می شود در بسیاری مواقع linked serverها گزینه مناسبی در DTS ها و یا BCP ها بجای منابع خارجی باشند.

    قدم اول در تنظیم یک linked server اطمینان از وجود راه ارتباطی بین دو سرور است . سپس باید سرور linked(و یا بعبارتیremote) را به سرور Local معرفی کنیم.دستور SQL مربوط به تنظیم یک linked server به شکل زیر است:
    SP_addlinkedserver 'Other_InstanceName',N'SQL Serve'

    پس از اجرای دستور فوق بایستی سطح دسترسی بین دو سرور و اینکه چه کاربری با چه user/passی باید به linked server بتواند Log in کند، مشخص شود.
    در حالت پیش فرض هر Loginی که در هر دو سرور موجود باشد مجاز به اجرای query ها در طول این ارتباط است.در غیر اینصورت کاربر با پیغام "Loginfailed" مواجه می شود.پس از همسان بودن user و مجوزها در دو سرور اطمینان حاصل کنید تا دردسر برای admin سرورها در حالی که شما نیستید ایجاد نشود!

    2) و ... پس از برقراری ارتباط می توانید به انجام تغییرات برسید که پیشنهاد
    من کار با Triggers ها است
    Triggers ها یه جور مدیریت رویداد ها در یک جدول هستند و میشند بنا به نوع رویداد (جدید، ویرایش و با پاک کردن) انجام گرفته در ردیف های جدول کاری را بر روی هر یک از بخش های دیگر این پایگاه داده و یا دیگر پایگاه داده ها انجام داد .


  5. #5
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    ته دنیا!
    پست
    26

    نقل قول: Replication and Subscription in sql server 2014

    به نظر من Linked Server به هیج وجه پاسخ خوبی برای مشکل مطرح شده نیست.
    اگر دو سرور در دوتا شبکه جداگانه باشن و بین دو شبکه Trust Relationship وجود نداشته باشه قضیه یک کم پیچیده تر می شه.
    البته قابل حله.
    از طرفی در خیلی از موارد برای ست کردن درست دسترسی های کاربران باید از Proxy استفاده کنی. اشکال استفاده از Proxy اینه که که چون شما Password رو دستی وارد می کنی یا به اصطلاح یه جورایی Hard Code می کنی، اگه کاربر شما در ویندوز رمزش رئ عوض کنه Linked Server شما دیگه کار نخواهد کرد.
    مشکل دیگه که به روش پیشنهادی بالا وارده سرعت کم Triggerها ست که باعث کندی کل سیستم می شه. دیگه بماند که Trigger بخواد روی Linked Server هم کار کنه.

    اما Replication هم پاسخ نیست چون می گی که ساختار دیتابیس ها متفاوت هستن.

    جواب استفاده از SSIS یا همون SQL Server Integration Services هست.
    می تونید توی SSIS یه تعداد Package بسازید که کار رو براتون به راحتی انجام بدن.
    فقط مسئله اینه که می گی می خوای تغییرات رو در لحظه ببینی.

    من روی این مورد یه بحثی دارم، در اغلب مورادی که گفته می شه می خوان تغییرات در لحظه دیده بشه، در واقع منظورشون از لحظه یه چیزی مثل هر 10 دقیقه یه بار یا دیگه اگه خیلی قضیه جدی باشه هر 1 دقیقه یک بار هست.

    در این صورت پس از ایجاد SSIS Packageها، یه SQL Server Agent Job درست می کنی که هر دقیقه یک بار پکیج های SSIS رو برات اجرا کنه.

    هم Performance عالی میتونه باشه اگه طراحی خوبی کرده باشی، هم اشکال زدایی رو خیلی راحت می تونی انجام بدی و پروسه خیلی پیچیده ای نداری که چیزیو از قلم بندازی.
    آخرین ویرایش به وسیله soheileee : سه شنبه 25 فروردین 1394 در 04:59 صبح

  6. #6

    نقل قول: Replication and Subscription in sql server 2014

    https://msdn.microsoft.com/en-us/library/ff772782.aspx
    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    از طرفی در خیلی از موارد برای ست کردن درست دسترسی های کاربران باید از Proxy استفاده کنی
    نیازی به Proxy ندارد.

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    مشکل دیگه که به روش پیشنهادی بالا وارده سرعت کم Triggerها ست که باعث کندی کل سیستم می شه.
    میشه بدونم این مشکل رو کدام منبع نوشتیند.

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    جواب استفاده از SSIS یا همون SQL Server Integration Services هست.
    با سپاس فراوان، درباره امکانات و شرایط این ابزار هم توضیحی بندیسید.

    تا جایی که من فهمیدم، خواسته این بوده :
    بروز رسانی ردیف جدول های پایگاه داده ای براساس پایگاه داده ای دیگر که شباهتی بین اشیا این دو نیست(پایگاه داده در دو سیستم جدا از هم هستند).

    روش پیشنهادی شما برای بروز رسانی اشیا دو پایگاه داده است که یکسان هستند.
    در این صورت پس از ایجاد SSIS Packageها، یه SQL Server Agent Job درست می کنی که هر دقیقه یک بار پکیج های SSIS رو برات اجرا کنه.
    روش ارتباط این دو SQL Server Instance به هم رو بنویسید برای انجام دستورات.
    انجام چند دقیقه یکبار این دستور ها شاید یک کار پرهزینه و بی کاربرد باشد =>
    چون بروز رسانی هنکامی انجام میشه که تغییر داده شده باشه و نه اینکه هرچند دقیقه الکی این کار انجام بشه (بدون وجود تغییر در جدول ها)

  7. #7
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    ته دنیا!
    پست
    26

    نقل قول: Replication and Subscription in sql server 2014

    نیازی به Proxy ندارد.
    اگر بین دو شبکه Trust Relationship وجود نداشته باشه و شبکه ها کاملاً جدا باشن به Proxy نیاز داری. اما اگه سرورها در یک Domain باشن خوب مسلماً نیازی نخواهد بود. البته این رو هم بگم که اگه دو سرور در یک Domain نباشن، باز هم می شه بدون Proxy یه Linked Server راه انداخت به شرط اینکه SQL Server User داشته باشید در سرور مقصد که خوب این یکی به دلایل امنیتی توسط هیچ DBA با تجربه ای توصیه نمی شه. حتی توصیه می شه که SA رو Disable کنید و هرگز Server Athentication رو Mixed Mode نذارید تا سکیوریتی بیشتری داشته باشید.
    میشه بدونم این مشکل رو کدام منبع نوشتیند.
    اینو گوگل کن تا بینهایت مطلب پیدا کنی:

    SQL Server triggers pros and cons

    البته خیلی هم نیازی به گوگل کردن نیست خیلی واضحه که تأثیر Triggers روی Performance منفی هست.
    خیلی ساده ست، به این فکر کن که یه Table داری که 10 میلیون رکورد داره، و تریگری نوشتی که قراره کار خاصی رو برات روی این Table انجام بده. فکر می کنی هر تغییری که باعث بشه اون Trigger شما Fire بشه، چقدر طول خواهد کشید تا کارش رو انجام بده؟

    با سپاس فراوان، درباره امکانات و شرایط این ابزار هم توضیحی بندیسید.
    والا چی بگم؟ SQL Server Integration Services یکی از ابزارهای معروف Business Intelligence هست که فقط در SQL Server با نسخه های Standard، Business Intelligence یا Enterprise موجوده. باهاش می تونید کارهای بسیار متفاوتی انجام بدید. از قبیل Integrate کردن دیتابیسهای مختلف، با ساختارهای مختلف و سیستمهای مختلف. مثلاً یه سری Flat File داری با فرمت CSV، یه سری Excel داری، یه دیتابیس در Oracle داری و یه دیتا بیس در SQL Server و می خواهی همه رو مجتمع کنی یه جا. فرض کن که سرور Oracle شما كلاً در یک کشور دیگه ست. با SSIS می تونی کار مجتمع سازى تمام انواع داده ها رو انجام بدی.

    می تونی این رو هم گوگل کنی:

    what is ssis

    روش ارتباط این دو SQL Server Instance به هم رو بنویسید برای انجام دستورات.
    ارتباط بین سرورها در SSIS تعریف میشه.

    انجام چند دقیقه یکبار این دستور ها شاید یک کار پرهزینه و بی کاربرد باشد =>
    چون بروز رسانی هنکامی انجام میشه که تغییر داده شده باشه و نه اینکه هرچند دقیقه الکی این کار انجام بشه (بدون وجود تغییر در جدول ها)
    به هیچ وجه پر هزینه نیست، خصوصاً در مقایسه با روشهای کلاسیک.
    اگه چیزی در Tableها تغییر نکرده باشه اجرای SQL SERVER Agent Job در کمتر از 1 ثانیه تموم میشه. البته در صورتی که ارتباط شبکه ای بین سرورها سریع و خوب باشه.
    منظور از کار الکی رو نمی فهمم، چون تمام کارها اتوماتیک انجام می شن.
    آخرین ویرایش به وسیله soheileee : پنج شنبه 27 فروردین 1394 در 10:42 صبح

  8. #8

    نقل قول: Replication and Subscription in sql server 2014

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    البته خیلی هم نیازی به گوگل کردن نیست خیلی واضحه که تأثیر Triggers روی Performance منفی هست.
    این یک قانون همیشگی نیست و بستگی به شرایط (کدنویسی، اجرا ، ساختار پایگاه داده و ... ) داره.

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    به این فکر کن که یه Table داری که 10 میلیون رکورد داره، و تریگری نوشتی که قراره کار خاصی رو برات روی این Table انجام بده. فکر می کنی هر تغییری که باعث بشه اون Trigger شما Fire بشه، چقدر طول خواهد کشید تا کارش رو انجام بده؟
    این که این جدول چند تا ردیف داره چه کار داره به خواسته ما
    =وظیفه Triggers ها همینه و اینکه در هر حالت دیگه باید تغییرات روی جدول انجام بشه (وظیفه پایگاه داده همینه)

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    ارتباط بین سرورها در SSIS تعریف میشه.
    در این روش هم تنظیمات خاص خودشو داره برای کاربری ...

    نقل قول نوشته شده توسط soheileee مشاهده تاپیک
    اگه چیزی در Tableها تغییر نکرده باشه اجرای SQL SERVER Agent Job در کمتر از 1 ثانیه تموم میشه.
    چرا باید کاری انجام بشه بدون اینکه بهش نیازی باشه
    =این میشه کار الکی.

تاپیک های مشابه

  1. خطا در نصب sql server 2014
    نوشته شده توسط baradar در بخش مسائل مرتبط با نصب و راه اندازی
    پاسخ: 1
    آخرین پست: سه شنبه 30 اردیبهشت 1393, 12:12 عصر
  2. آشنایی با قابلیت های جدید SQL Server 2014
    نوشته شده توسط in_chand_nafar در بخش T-SQL
    پاسخ: 0
    آخرین پست: شنبه 16 فروردین 1393, 10:32 صبح
  3. سوال: export and Import from sql server to Text File
    نوشته شده توسط ozzy_mra در بخش C#‎‎
    پاسخ: 6
    آخرین پست: شنبه 12 دی 1388, 10:05 صبح
  4. Back up and Restore in SQL-Server using SMO
    نوشته شده توسط navid010 در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 0
    آخرین پست: شنبه 04 آبان 1387, 00:33 صبح
  5. سوال: Attach and Detach در SQL server EXPRESS
    نوشته شده توسط MAH1362 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: دوشنبه 29 مهر 1387, 20:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •