فعال کردن اشتراک های تجدید پذیر تکرار تراکنش در SQL Server 2019

تاریخ ایجاد صفحه :

مقدمه و اقدامات احتیاطی

این مقاله برای تکرار در SQL Server 2019 در نظر گرفته شده است. یکی از توابع در آن «اشتراک تجدیدپذیر» فعال است.

این قابلیت به صورت پیش فرض در نسخه های قبلی SQL Server فعال شده بود، اما از سال ۲۰۱۷ (احتمالاً) غیرفعال شده است.

نسخه های آینده SQL Server ممکن است این ویژگی را حذف کنند. به جز ارتقاء محیط موجود، توصیه می کنیم که آن را جایگزین ساخت و ساز جدید با تکرار ادغام و غیره کنید.

مرجع

محیط

استفاده از دو سرور ، یک سرور و دو SQL سرور. Windows Server در حالتی است که هیچ تنظیمات اضافی بلافاصله پس از نصب انجام نشده است.

واحد اول (سمت انتشار)
  • ویندوز سرور 2019 نسخه استاندارد
  • SQL سرور 2019 نسخه توسعه دهنده (نسخه استاندارد و یا بالاتر مورد نیاز)
  • SQL سرور مدیریت استودیو 18.9.1
واحد دوم (سمت مشترک)
  • ویندوز سرور 2019 نسخه استاندارد
  • SQL سرور 2019 اکسپرس نسخه
  • SQL سرور مدیریت استودیو 18.9.1

هدف

حتی اگر سوابق جدول در هر دو پایگاه داده سرور اول یا دوم به روز شده اطمینان حاصل کنید که سوابق جدول در سرورهای یکدیگر همگام سازی شده اند.

به هر حال یکی در سمت انتشار خوب است اما طرف مشترک می تواند هر تعداد واحد داشته باشد. همچنین با چند نمونه از SQL سرور در یک سرور کار می کند.

نصب SQL سرور

نصب SQL سرور بخش اصلی این نکات نیست ، بنابراین من نمی خواهد به جزئیات بروید. فقط کسانی که مربوط به تکرار ذکر شده است.

نصب سمت انتشار نیاز به Standard Edition یا بالاتر دارد. این نکات نصب نسخه توسعه دهنده به عنوان یک محیط آزمون.

مشترکان با اکسپرس نسخه خوب هستند. البته نسخه های دیگر بسته به پیکربندی DB خوب هستند.

برای انتخاب ویژگی ها، سرویس موتور پایگاه داده و SQL Server Replication را انتخاب کنید. این برای هر دو طرف انتشار و طرف مشترک یکسان است.

به عنوان مثال پیکربندی پیش فرض به هر دو سمت انتشار و طرف مشترک. حتی اگر نام مثال را تغییر دهید، تفاوت این است که آیا نام مثال را بعداً در مشخصات سرور مشخص می کنید یا نه.

در سمت انتشار، پیکربندی SQL سرور عامل به طور خودکار شروع می شود. شما می توانید این تنظیمات را بعدا تغییر دهید.

این نکته تکرار را با حساب SQL Server sa تصدیق می کند. بنابراین، احراز هویت SQL Server را فعال کنید. اگر نمی خواهید به دلایل امنیتی از حساب sa استفاده کنید، قسمت تأیید هویت SQL Server توضیح را بعداً با احراز هویت ویندوز یا حساب دیگری جایگزین کنید.

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

نصب SQL سرور مدیریت استودیو

نصب SQL سرور مدیریت استودیو که شما دانلود. از آنجا که صفحه نصب تنها برای نصب است، توضیح حذف شده است.

اگر از شما خواسته می شود که پس از نصب راه اندازی مجدد شود، Windows را راه اندازی مجدد کنید. همچنین هر وصله ای را در Windows Update نصب کنید.

ایجاد یک پایگاه داده سمت انتشار و جداول

اگر جدولی در سمت انتشار ایجاد کنید، طرف مشترک به طور خودکار جدول یا رکورد را تکرار می کند.

روش خلقت همان رویه عادی است، بنابراین جزئیات را حذف خواهم کرد.

شما در حال ایجاد یک پایگاه داده به نام انتشار DB در SQL سرور مدیریت استودیو.

جدولی به نام "کاربران" ایجاد کنید و ستون ها را به صورت زیر ثبت کنید: تنها کاری که باید انجام دهید این است که همگام سازی رکوردها را بررسی کنید، بنابراین نام، شماره و محتویات ستون جدول می تواند هر چیزی باشد. با این حال، تنها کلید اولیه مورد نیاز است.

چند رکورد اضافه کنید تا مطمئن شوید که رکوردها پس از ایجاد تکرار همگام سازی شده اند.

پیکربندی اتصالات از راه دور

پیکربندی آنها برای اجازه دسترسی از راه دور به پایگاه داده های سرورهای یکدیگر. جزئیات در نکات زیر خلاصه شده است.

تنظیم مجوزهای پوشه

در سرور سمت انتشار، خواص پوشه زیر را باز کنید: مسیر پوشه بستگی به نسخه SQL Server و نام مثال دارد.

  • C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

از زبانه امنیتی، حساب "SERVICE" را اضافه کنید و آن را برای کنترل کامل تنظیم کنید.

پیکربندی توزیع

این بار توزیع بر روی همان سرور انتشار ایجاد می شود.

شروع SQL سرور مدیریت استودیو، راست کلیک تکرار، و انتخاب پیکربندی توزیع.

روی بعدی کلیک کنید.

بررسی "ایجاد سرور خود را > توزیع کننده خود را" <.

پس از آن، کلیک کنید "بعدی" آن را به عنوان آن است که آن را تکمیل کنید.

ایجاد یک نشریه

در اصل، آن را از جادوگر به عنوان در شکل زیر نشان داده شده ایجاد شده است، در SQL Server 2019، ایجاد از یک سهل آموز امکان «اشتراک های تجدیدپذیر» را ندارد و اجازه همگام سازی رکوردها بین جداول را نمی دهد.

بنابراین ما از T-SQL برای ایجاد نشریه در اینجا استفاده می کنیم.

در زیر SQL برای ایجاد یک نشریه با احراز هویت SQL Server می باشد: لطفا رمز عبور را با توجه به تنظیمات خود تغییر دهید.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

هنگام استفاده از احراز هویت Windows، قسمت های "sp_addlogreader_agent" و "sp_addpublication_snapshot" را به sp_addpublication_snapshot تغییر دهید.

SQL سرور احراز هویت

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

احراز هویت Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

اگر با موفقیت ایجاد شود، موارد زیر را خواهید دید:

همچنین خواص نشریه ایجاد شده را باز کنید و مطمئن شوید که «اشتراک تجدیدپذیر» فعال است.

مشخص کردن مقالات

در اصل، اگر شما آن را با یک جادوگر ایجاد کنید، شما مقاله را در همان زمان مشخص کنید، از آنجا که اسکریپت فوق شامل پردازش مقاله نمی شود، از ملک مشخص می شود.

"مقالات" را از منوی سمت چپ انتخاب کنید، جدول مورد نظر برای همگام سازی را بررسی کنید و روی دکمه OK کلیک کنید.

یک msrepl_tran_version به ستون های جدول اضافه می شود تا همگام شود، و یک ماشه جدول در همان زمان اضافه می شود.

ایجاد اشتراک

روی نشریه ای که تازه ایجاد کرده اید کلیک راست کنید و اشتراک جدید را انتخاب کنید.

روی بعدی کلیک کنید.

نشریه ای را که ایجاد کرده اید انتخاب کنید.

بررسی اجرای همه عوامل در توزیع < >.

روی دکمه Add SQL Server Subscriber کلیک کنید.

سرور (+ نام مثال) را برای ثبت نام به عنوان مشترک مشخص می کند.

اگر پایگاه داده مشترک داري، يک بانک جديد ايجاد کن. اگر در حال حاضر وجود دارد، آن را انتخاب کنید زیرا مورد انتخاب نمایش داده شده است.

پس از مشخص کردن پایگاه داده، روی Next کلیک کنید.

اگر شما بیش از یک مشترک، شما می توانید به عنوان بسیاری از شما نیاز دارید در اینجا ثبت نام کنید.

روی دکمه "..." کلیک کنید.

در اینجا، عامل زیر حساب sa اجرا می شود، اما لطفا آن را با توجه به محیط زیست خود را تنظیم کنید.

اجرای مداوم را انتخاب کنید.

تنظیم "اشتراک تجدید پذیر" باید عملیاتی شود.

در مورد "ارتکاب تغییرات در همان زمان"، بلافاصله همگام سازی می شود، اما همه سرورها باید در حال اجرا باشند.

"صف تغییر می کند و در صورت امکان مرتکب می شود" تغییرات در صف را انباشته می کند، بنابراین زمانی که سرور در حال اجرا است، حتی اگر سرور در حال اجرا نیست، متعهد می شوند. با این حال زمان بندی همگام سازی کند است.

بررسی استفاده از یک سرور از پیش تعریف شده مرتبط یا راه دور.

حالا انتخاب کنید.

روی بعدی کلیک کنید.

روی دکمه Finish کلیک کنید.

اگر خطایی وجود نداشت بسته شود.

پس از چند لحظه می بینید که پایگاه داده در سمت مشترک ایجاد شده است و جداول نیز ایجاد شده اند.

شما می توانید تایید کنید که سوابق نیز همگام سازی شده اند.

اگر پس از مدتی همگام سازی نشد، لطفاً موارد زیر را انجام دهید.

اشتراک ایجاد شده را راست کلیک کنید و Reinitialize را انتخاب کنید.

"استفاده از عکس فوری جدید" را بررسی کنید و روی دکمه "تنظیم برای احیای مجدد" کلیک کنید.

اگر خطایی رخ داد، دوباره امتحان کنید.

بررسی عملیات

سعی کنید جداول سمت انتشار را اضافه یا تغییر دهید.

چند ثانیه یا بیشتر صبر کنید تا مطمئن شوید که با مشترک همگام سازی شده است.

حالا بیایید رکورد سمت مشترک را اصلاح کنیم.

شما می توانید تایید کنید که آن را به سمت انتشار همگام شده است.

اگر مشترکان متعددی ثبت نام کرده باشید، مطمئن شوید که بین مشترکان همگام سازی شده اند.