Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cấu hình sao chép giao dịch SQL Server

Sao chép giao dịch trong SQL Server là một trong những kỹ thuật Nhân bản được sử dụng phổ biến nhất để sao chép hoặc phân phối dữ liệu qua nhiều đích. Trong các bài viết trước, chúng ta đã thảo luận về SQL Server Replication và cách Replication hoạt động nội bộ. Bây giờ mục tiêu của chúng ta là xem cách Định cấu hình Bản sao Giao dịch trong SQL Server bằng cách sử dụng phương pháp Sao lưu và cách thêm hoặc loại bỏ các Bài viết để Nhân bản đúng cách. Nếu không có các biện pháp thích hợp, chúng tôi có nguy cơ làm mất hiệu lực của ảnh chụp nhanh và đối mặt với sự cần thiết phải định cấu hình lại tính năng Sao chép.

Quản trị sao chép giao dịch

Trong các bài viết trước của tôi, chúng ta đã xem qua hướng dẫn từng bước về các mục dưới đây:

  • Định cấu hình phân phối
  • Định cấu hình Ấn phẩm với tùy chọn Ảnh chụp nhanh
  • Định cấu hình Đăng ký với tùy chọn Ảnh chụp nhanh

Trong khi định cấu hình Replication, trước tiên chúng ta đã cấu hình Nhà phân phối. Sau đó, chúng tôi tiến hành Tạo Ấn phẩm và Đăng ký. Để loại bỏ hoặc dọn dẹp Replication, chúng ta cần thực hiện quy trình ngược lại. Trước tiên, chúng tôi cần xóa Đăng ký, sau đó là Xuất bản, và cuối cùng, xóa Nhà phân phối hoặc cơ sở dữ liệu phân phối.

Trong bài viết này, chúng tôi thử bỏ Bản sao Giao dịch trong SQL Server mà chúng tôi đã định cấu hình trước đó. Chúng tôi sẽ sử dụng phương pháp Sao lưu và thêm hoặc xóa các bài viết khỏi Nhân bản theo cách sau:

  • Bỏ đăng ký
  • Bỏ xuất bản
  • Bỏ nhà phân phối hoặc cơ sở dữ liệu phân phối
  • Dọn dẹp hoàn toàn tính năng Sao chép nếu bất kỳ bước nào ở trên không hoạt động chính xác
  • Định cấu hình sao chép bằng Sao lưu cơ sở dữ liệu
  • Bỏ các bài báo khỏi Replication bằng cách sử dụng cả phương pháp tiếp cận Wizard và T-SQL
  • Thêm các bài viết mới vào Replication bằng cách sử dụng cả phương pháp tiếp cận Wizard và T-SQL
  • Thêm bài viết về Thủ tục được lưu trữ và nghiên cứu sự khác biệt giữa bài viết trên Bảng và bài viết về Thủ tục đã lưu trữ

Bỏ đăng ký

Để loại bỏ bất kỳ Bản sao đã định cấu hình nào, trước tiên chúng ta cần Bỏ đăng ký.

Trong SSMS, kết nối với phiên bản Publisher> Replication > Ấn phẩm địa phương . Nhấp chuột phải vào Đăng ký> Xóa hoặc Thả Đăng ký:

SQL Server sẽ yêu cầu bạn xác nhận hành động của mình:

Nhấp vào để bỏ Đăng ký. Điều này sẽ loại bỏ hoàn toàn Đăng ký.

Trong thiết lập hiện tại của tôi, cả Nhà xuất bản và Người đăng ký đều ở trên cùng một phiên bản. Do đó, không có yêu cầu nào được gửi để kết nối với phiên bản Người đăng ký để xác thực. Trong trường hợp chúng tôi có nó trên một phiên bản SQL Server khác, nó sẽ yêu cầu kết nối với phiên bản Người đăng ký để xác thực trước khi xóa Người đăng ký.

Bỏ xuất bản sử dụng nội bộ sp_droppublication và chúng tôi có thể sử dụng quy trình này để loại bỏ Ấn phẩm theo cách thủ công thông qua cách tiếp cận T-SQL

Bỏ xuất bản

Sau khi Đăng ký bị xóa, chúng tôi có thể tiếp tục và bỏ Ấn phẩm . Nhấp chuột phải vào AdventureWorks_Pub và chọn Xóa từ menu:

Bạn sẽ thấy một thông báo yêu cầu bạn xác nhận hành động đó. Lưu ý rằng bạn sẽ xóa Ấn phẩm. Tuy nhiên, tất cả các bản ghi đã được sao chép sang cơ sở dữ liệu Người đăng ký sẽ không bị xóa. Chúng tôi sẽ cần xóa cơ sở dữ liệu theo cách thủ công để xóa các bản ghi được sao chép đó. Nhấp vào .

Việc bỏ ấn bản áp dụng nội bộ sp_droppublication thủ tục.

Bỏ nhà phân phối hoặc Cơ sở dữ liệu phân phối

Trước đó chúng ta đã đề cập rằng cơ sở dữ liệu phân phối là cơ sở dữ liệu hệ thống. Do đó, chúng tôi không thể bỏ nó bằng cách nhấp chuột phải vào cơ sở dữ liệu và chọn tùy chọn xóa như với cơ sở dữ liệu người dùng. Nếu chúng tôi nhấp chuột phải vào cơ sở dữ liệu phân phối, chúng tôi chỉ nhận được các tùy chọn dưới đây:

Khi chúng ta cần xóa cơ sở dữ liệu phân phối, trước tiên, chúng ta phải nhấp chuột phải vào Replication nút> Tắt Xuất bản và phân phối .

Nó sẽ mở Wizard.

Theo mặc định, tùy chọn thứ hai ( Không, tiếp tục sử dụng máy chủ này với tư cách là Nhà xuất bản ) được chọn để tránh vô tình làm rơi tất cả các ấn phẩm trên máy chủ.

Trong trường hợp của chúng tôi, chúng tôi chỉ có một Ấn phẩm và chúng tôi muốn xóa. Do đó, chúng tôi chọn tùy chọn đầu tiên - Có, tắt Xuất bản trên máy chủ này . Nó sẽ loại bỏ tất cả các Ấn phẩm cùng với Đăng ký nếu vẫn chưa bị loại bỏ cùng với việc vô hiệu hóa Nhà phân phối.

Chúng tôi có thể sử dụng chính trình hướng dẫn này để dọn dẹp mọi thứ nếu Máy chủ của chúng tôi chỉ có một Bản sao được cấu hình. Tuy nhiên, nếu có nhiều Bản sao được định cấu hình, chúng tôi loại bỏ Bản sao Giao dịch trong SQL Server bằng cách làm theo các bước tiêu chuẩn được chia sẻ ở trên.

Bây giờ, chúng tôi cần chọn tùy chọn đầu tiên Có, tắt xuất bản trên máy chủ này và nhấp vào Tiếp theo .

Trong cửa sổ mới, chọn cả hai tùy chọn: Tắt xuất bản và phân phối Tạo tệp tập lệnh với các bước…

Để tạo tệp tập lệnh, bạn sẽ cần cung cấp đường dẫn nơi lưu trữ tệp đó.

Nhấp vào Tiếp theo và xem các tùy chọn đã chọn trong trình hướng dẫn. Kiểm tra và đảm bảo rằng bạn đã chọn mọi thứ một cách chính xác.

Nhấp vào Kết thúc .

Loại bỏ cơ sở dữ liệu phân phối nội bộ sử dụng sp_dropdistributor thủ tục.

Sau khi Nhà phân phối bị vô hiệu hóa, chúng ta có thể thấy rằng cơ sở dữ liệu phân phối bị loại khỏi cơ sở dữ liệu hệ thống.

Dọn dẹp hoàn toàn bản sao nếu bất kỳ Bước nào ở trên không hoạt động đúng cách

Nếu Đăng ký hoặc Ấn bản bị bỏ qua bất kỳ cách tiếp cận nào khác, chúng tôi sẽ dẫn đến việc loại bỏ Nhân bản Giao dịch không nhất quán trong SQL Server và gặp rất nhiều lỗi. Để làm sạch tất cả các phần còn lại của Đăng ký hoặc Xuất bản, chúng tôi có thể sử dụng quy trình hệ thống sp_removedbreplication .

exec_spremovedbreplication

Chỉ thực hiện quy trình này nếu vẫn còn bất kỳ vấn đề sao chép nào sau khi thử tất cả các cách tiếp cận khác được đề cập. Thủ tục được lưu trữ sp_removedbreplication sẽ được thực thi trên cơ sở dữ liệu Publisher hoặc từ cơ sở dữ liệu chính và sử dụng lệnh dưới đây sau khi thay thế @dbname bằng tên của Cơ sở dữ liệu nhà xuất bản.

exec_spremovedbreplication @dbname

Định cấu hình sao chép bằng Phương pháp tiếp cận sao lưu

Sau khi loại bỏ hoàn toàn Bản sao, hãy định cấu hình lại Bản sao giao dịch trong SQL Server bằng Phương pháp tiếp cận sao lưu. Nó bao gồm các bước sau:

  • Định cấu hình Nhà phân phối
  • Tạo ấn phẩm
  • Sửa đổi các thuộc tính Ấn phẩm để cho phép tạo Đăng ký từ Bản sao lưu đầy đủ hoặc khác biệt.
  • Thực hiện một bản sao lưu đầy đủ của nhà xuất bản và khôi phục nó với tư cách là Người đăng ký.
  • Định cấu hình Đăng ký và bắt đầu khởi chạy từ Bản sao lưu.

Chúng tôi đã thực hiện hầu hết các bước trước đó khi định cấu hình Bản sao. Do đó, chúng tôi sẽ không đi vào chi tiết về các bước đó ở đây.

Định cấu hình Nhà phân phối &Xuất bản

Tham khảo hướng dẫn Từng bước từ bài viết trước về cách định cấu hình cả Phân phối và Xuất bản bằng trình hướng dẫn Tạo Ấn phẩm. Để tìm hiểu các tập lệnh T-SQL được trình hướng dẫn sử dụng để tạo Phân phối và Xuất bản, chỉ cần tạo các tập lệnh vào một tệp trong bước cuối cùng của trình hướng dẫn và không thực thi các tập lệnh bằng cách bỏ chọn tùy chọn “Tạo Ấn phẩm” như được hiển thị bên dưới .

Bây giờ, hãy mở tệp tập lệnh được lưu trong Cửa sổ truy vấn mới để tạo Nhà phân phối và Ấn phẩm bằng cách sử dụng các Tập lệnh đó:

Vui lòng lưu ý dòng nhận xét thứ hai - nó nói rằng tất cả các giá trị mật khẩu chúng tôi nhập trong trình hướng dẫn đã được chuyển đổi thành NULL hoặc chuỗi trống vì Lý do bảo mật. Hãy xem dòng được đánh dấu với các giá trị @password =blank. Thay thế nó bằng các giá trị mật khẩu chính xác, làm tương tự cho các phần khác có mật khẩu và thực thi tập lệnh.

Tập lệnh đã được thực thi thành công. Chúng ta có thể thấy rằng việc thực thi các tập lệnh đã tạo ra cơ sở dữ liệu phân phối và tất cả các bảng hệ thống bên trong nó. Ở cuối thông báo, chúng ta có thể thấy rằng công việc Tác nhân đọc nhật ký cũng đã được tạo và khởi chạy.

Nếu cần, bạn có thể lưu trữ kết quả để tìm hiểu về tất cả các bảng, dạng xem và các thủ tục quan trọng trong cơ sở dữ liệu phân phối. Thông tin này sẽ hữu ích cho việc gỡ rối thêm.

Sau khi thực thi thành công các tập lệnh, chúng ta có thể thấy cơ sở dữ liệu phân phối và ấn phẩm được tạo thành công.

Sửa đổi thuộc tính xuất bản để cho phép tạo đăng ký từ bản sao lưu đầy đủ hoặc khác biệt

Nếu kích thước cơ sở dữ liệu rất nhỏ, thời gian cần thiết để gửi Ảnh chụp ban đầu sẽ nhanh hơn.

Mặt khác, việc tạo Bản sao Giao dịch trong SQL Server bằng cách sử dụng Ảnh chụp nhanh không hiệu quả trong các trường hợp sau:

  1. Nếu cơ sở dữ liệu lớn (300 GB trở lên). Thời gian cần thiết để gửi Ảnh chụp nhanh ban đầu sẽ quá lâu.
  2. Nếu Người đăng ký ở khắp các địa điểm khác nhau với băng thông mạng thấp. Sau đó, quá trình chụp nhanh ban đầu sẽ diễn ra trong nhiều ngày.

Do đó, việc tạo Bản sao lưu đầy đủ, chuyển bản sao lưu qua FTP hoặc vật lý đến vị trí khác, khôi phục bản sao lưu đó và khởi tạo Người đăng ký sẽ nhanh hơn đáng kể so với phương pháp Ảnh chụp nhanh.

Để cho phép Ấn phẩm hỗ trợ khởi tạo từ Bản sao lưu, chúng tôi phải sửa đổi một trong các thuộc tính Ấn phẩm. Nó có thể được thực hiện thông qua SSMS hoặc T-SQL.

Phương pháp tiếp cận SSMS

Nhấp chuột phải vào AdventureWorks_pub xuất bản và chọn Thuộc tính :

Nhấp vào Tùy chọn đăng ký :

Đặt Đúng cho Cho phép Khởi tạo từ các tệp sao lưu và nhấp vào OK . Điều này sẽ cho phép chúng tôi khởi tạo từ cả Sao lưu toàn bộ và Sao lưu khác biệt.

Phương pháp tiếp cận T-SQL

Trong T-SQL, chúng ta có thể gọi thủ tục sp_changepublication để sửa đổi thuộc tính này.

Dưới đây là tập lệnh để thay đổi thuộc tính này:

USE AdventureWorks
GO
exec sp_changepublication @publication = 'AdventureWorks_pub', @property = 'allow_initialize_from_backup', @value = 'true'

Sao lưu toàn bộ nhà xuất bản và khôi phục nó với tư cách người đăng ký

Một yếu tố quan trọng cần lưu ý là chúng tôi phải thực hiện một Bản sao lưu đầy đủ sau khi triển khai thuộc tính Publication ở trên. Nếu kích thước cơ sở dữ liệu lớn, chúng tôi có thể thực hiện Sao lưu toàn bộ và khôi phục nó ở chế độ PHỤC HỒI trong phiên bản Người đăng ký, đồng thời thực hiện sao lưu Khác biệt sau khi thực hiện thay đổi cấu hình ở trên và khôi phục nó trong cơ sở dữ liệu Người đăng ký với chế độ NORECOVERY.

Định cấu hình đăng ký và bắt đầu khởi tạo từ bản sao lưu

Một lần nữa, hãy tham khảo hướng dẫn Từng bước. Chúng tôi cần tạo các tập lệnh cần thiết nhưng không thực thi chúng. Vấn đề là, chúng tôi sẽ Khởi tạo Đăng ký từ Bản sao lưu Toàn bộ hoặc Khác biệt chỉ sử dụng các tập lệnh T-SQL. Tôi đã tạo các tập lệnh đó trong quá trình tạo Đăng ký lần trước. Xem tệp đang mở bên dưới.

Lưu ý :Các tập lệnh để tạo Đăng ký phải được thực thi từ cơ sở dữ liệu Nhà xuất bản. Do đó, hãy mở cửa sổ Truy vấn kết nối với phiên bản Publisher.

Chúng tôi cần thực hiện một số thay đổi để Đăng ký khởi chạy từ bản sao lưu:

  • Thay đổi @sync_type giá trị từ tự động để khởi tạo bằng bản sao lưu
  • Cung cấp mật khẩu chính xác cho những mật khẩu được thay thế bằng NULL hoặc chuỗi trống. Vì tôi đã sử dụng tài khoản Dịch vụ đại lý trong máy chủ nên tôi không cần thay đổi mật khẩu.
  • Thêm các tham số @backupdevicetype @backupdevicename và cung cấp đường dẫn đến bản sao lưu Toàn bộ hoặc Khác biệt trên Máy chủ nhà xuất bản (tập lệnh sẽ được thực thi trên đó).

Khi hoàn tất, tập lệnh của chúng ta sẽ giống như sau:

Thực thi tập lệnh để hoàn tất cấu hình Đăng ký và chúng tôi sẽ nhận được hoàn thành tập lệnh thành công như hình dưới đây.

Như trạng thái chỉ ra, công việc Tác nhân phân phối SQL Server Agent đã được tạo và khởi chạy trong khi tạo Đăng ký.

Như vậy, chúng tôi đã tạo thành công Bản sao của mình bằng cách sử dụng phương pháp Sao lưu. Bây giờ chúng tôi có thể xác minh Đăng ký có sẵn.

Khởi chạy Trình theo dõi nhân bản và nhấp chuột phải vào Người đăng ký. Nó sẽ hiển thị trạng thái Sao chép:

Như chúng ta có thể thấy, tất cả dữ liệu đã được khởi tạo thành công từ Bản sao lưu mà không cần chạy công việc Snapshot Agent. Vì không có giao dịch đang hoạt động nào xảy ra trên cơ sở dữ liệu, chúng tôi nhận được thông báo "Không có giao dịch trùng lặp nào khả dụng" trong Giám sát nhân bản tại thời điểm này.

Bỏ các bài báo khỏi bản sao

Sau khi học cách định cấu hình Sao chép giao dịch trong SQL Server thông qua trình hướng dẫn Sao chép hoặc tập lệnh T-SQL, bây giờ chúng ta có thể kiểm tra cách bỏ một bài viết khỏi Bản sao thông qua cả hai phương pháp này.

Sử dụng Trình hướng dẫn

Nhấp chuột phải vào AdventureWorks_pub Xuất bản > Thuộc tính . Nhấp vào Bài báo để xem danh sách các bài báo có trong Replication.

Theo mặc định, nó sẽ liệt kê các đối tượng cơ sở dữ liệu ở định dạng OBJECT_NAME (SCHEMA_NAME). Đối với mục đích thử nghiệm, hãy bỏ qua bảng Person.ContactType từ Bản sao.

Đối với điều đó, chỉ cần bỏ chọn hộp trước ContactType (Người). SQL Server sẽ hiển thị cảnh báo hoặc thông báo xác nhận:

Như nó giải thích, nếu hiện có bất kỳ ảnh chụp nhanh nào, nó sẽ làm mất hiệu lực của những ảnh chụp nhanh đó do những thay đổi trong bài viết.

Vì chúng tôi đã khởi chạy bằng cách sử dụng phương pháp Sao lưu và chưa sử dụng Ảnh chụp nhanh, chúng tôi có thể bỏ qua thông báo này một cách an toàn và nhấp vào để xóa Bài viết bảng này khỏi Nhân bản. Nhấp vào OK để hoàn tất việc xóa bài viết khỏi Bản sao.

Bây giờ là Person.ContactType bảng được xóa khỏi Bản sao. Mọi thay đổi xảy ra trên Nhà xuất bản sẽ không được gửi đến cơ sở dữ liệu Người đăng ký. Chúng tôi có thể kiểm tra điều này bằng cách CHÈN / CẬP NHẬT / XÓA bản ghi trên Person.ContactType bảng.

Sử dụng T-SQL

Một cách khác là loại bỏ một bài viết khỏi Bản sao với sự trợ giúp của sp_droparticle thủ tục.

USE [AdventureWorks]
GO
EXEC sp_droparticle 
  @publication = N'AdventureWorks_pub', 
  @article = N'ContactType',
  @force_invalidate_snapshot = 1;
GO

Thêm các bài viết mới để nhân rộng thông qua Phương pháp tiếp cận Wizard hoặc TSQL

Trong một số trường hợp (như bảo trì bảng), chúng tôi có thể cần xóa một số bài viết và thêm chúng trở lại Bản sao sau khi bảo trì xong.

Chúng tôi đã học thành công cách xóa các bài viết khỏi Replication. Hãy xem xét cách thêm các bài viết mới vào Replication. Chúng tôi sẽ thêm Person.ContactType bảng mà chúng tôi đã xóa trước đó trở lại Replication.

Sử dụng thuật sĩ

Để thêm lại một bài báo trong bảng vào Bản sao, hãy nhấp chuột phải vào Ấn bản > Thuộc tính > Bài báo . Nó sẽ hiển thị danh sách các bài báo có trong Ấn phẩm.

Chúng tôi không thể tìm thấy Person.ContactType bảng - màn hình chỉ hiển thị những bảng là một phần của Replication. Để xem tất cả các bảng có sẵn trong cơ sở dữ liệu Nhà xuất bản, hãy bỏ chọn Chỉ hiển thị các bài viết đã chọn trong danh sách để xem tất cả các bảng.

Bây giờ, chúng ta có thể thấy Person.ContactType bảng được liệt kê.

Như chúng ta đã thảo luận trước đó, tất cả các bảng không có Khóa chính sẽ có Vòng tròn màu đỏ biểu tượng cho biết rằng các bảng này không thể được đưa vào Bản sao thông qua phương pháp tiếp cận Wizard hoặc T-SQL.

Kiểm tra Loại liên hệ (Người) để thêm lại nó vào Bản sao và nhấp vào OK .

Bảng được thêm một lần nữa vào Bản sao. Tuy nhiên, chúng tôi cần tìm ra một phương pháp để gửi ảnh chụp nhanh ban đầu cho bài viết bảng mới được thêm vào này.

Nếu bạn đã xem qua bài viết cho đến nay, bạn sẽ đoán đúng - chỉ cần chạy Snapshot Agent Job để gửi ảnh chụp ban đầu cho bảng này.

Hãy làm điều đó ngay bây giờ - nhấp chuột phải vào Ấn phẩm > xem Tác nhân chụp nhanh trạng thái.

Nhấp vào Bắt đầu để gửi ảnh chụp nhanh cho các bài báo đủ điều kiện. Gửi những dữ liệu đó đến cơ sở dữ liệu Phân phối và cuối cùng là cơ sở dữ liệu Người đăng ký.

Cách tiếp cận T-SQL

Chúng tôi có thể thực hiện các hành động tương tự bằng cách sử dụng sp_addarticle thủ tục.

Tập lệnh dưới đây sẽ thêm các Bài báo vào Bản sao.

use [AdventureWorks]
GO
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ContactType', @source_owner = N'Person', @source_object = N'ContactType'
, @type = N'logbased', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F
, @identityrangemanagementoption = N'manual', @destination_table = N'ContactType', @destination_owner = N'Person', @vertical_partition = N'false'
, @ins_cmd = N'CALL sp_MSins_PersonContactType'
, @del_cmd = N'CALL sp_MSdel_PersonContactType'
, @upd_cmd = N'SCALL sp_MSupd_PersonContactType'
GO

Trước đó, chúng tôi đã nhận thấy cách Nhân bản hoạt động cho một bài báo trong bảng bằng cách áp dụng 3 thủ tục được tạo trong cơ sở dữ liệu Người đăng ký để xử lý các hoạt động CHÈN / CẬP NHẬT và XÓA.

Sử dụng cách tiếp cận T-SQL, chúng tôi biết cách các thủ tục này được tham chiếu. Nếu cần, chúng ta có thể đổi tên các đối tượng, tên bảng đích hoặc các thủ tục mặc định. Vì vậy, chúng tôi sẽ thực hiện các thay đổi đối với sp_addarticle thủ tục.

LƯU Ý :Nếu chúng tôi thực hiện bất kỳ sửa đổi nào đối với Bản sao, chúng tôi nên ghi lại tất cả chúng một cách chính xác. Nếu không, nó có thể dẫn đến thảm họa sau này.

Thêm Bài viết về thủ tục được lưu trữ và Nghiên cứu sự khác biệt giữa Bài báo trên bảng và Bài báo về thủ tục được lưu trữ

Để thêm Thủ tục được lưu trữ vào Bản sao, chúng ta cần đi tới Bài viết và kiểm tra Thủ tục được lưu trữ bắt buộc để làm cho nó được Nhân rộng. Chúng tôi có thể làm tương tự đối với Lượt xem , Lượt xem được lập chỉ mục hoặc Chức năng do người dùng xác định nữa.

Để tìm hiểu thêm về sự khác biệt giữa Các bài báo trong Bảng so với Chế độ xem / Thủ tục được Lưu trữ / Chế độ xem được Lập chỉ mục / Chức năng do Người dùng Xác định, chúng tôi có thể thêm một trong các bài viết cho mọi danh mục bằng T-SQL:

Thêm một bài viết về thủ tục được lưu trữ mới để sao chép

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'uspGetBillOfMaterials', @source_owner = N'dbo'
, @source_object = N'uspGetBillOfMaterials', @type = N'proc schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'uspGetBillOfMaterials', @destination_owner = N'dbo'

Thêm một bài viết ở chế độ xem mới để nhân rộng

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vVendorWithContacts', @source_owner = N'Purchasing'
, @source_object = N'vVendorWithContacts', @type = N'view schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop'
, @schema_option = 0x0000000008000001, @destination_table = N'vVendorWithContacts', @destination_owner = N'Purchasing'
GO

Thêm một bài viết mới về chế độ xem được lập chỉ mục để nhân rộng

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vStateProvinceCountryRegion', @source_owner = N'Person'
, @source_object = N'vStateProvinceCountryRegion', @type = N'indexed view schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'vStateProvinceCountryRegion', @destination_owner = N'Person'

Thêm bài viết mới về Hàm do người dùng xác định vào bản sao

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ufnGetStock', @source_owner = N'dbo', @source_object = N'ufnGetStock'
, @type = N'func schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001
, @force_invalidate_snapshot = 1, @destination_table = N'ufnGetStock', @destination_owner = N'dbo'

Chúng tôi sử dụng sp_addarticle thủ tục thêm bất kỳ loại bài viết nào vào Bản sao với các tham số đầu vào cần thiết và các tùy chọn thay đổi @type bao gồm tham số.

Chúng tôi cũng có thể thêm các bài viết này vào Ấn phẩm bằng cách nhấp chuột phải vào Ấn phẩm > Thuộc tính > Bài báo và thêm chúng vào Ấn phẩm.

Thuộc tính bài báo trong bảng

Bây giờ, hãy thay đổi thuộc tính Bài viết qua Bài báo trong trình đơn Ấn phẩm thuộc tính:

Nhấp vào Person.ContactType yêu thích của chúng tôi bảng> Thuộc tính bài viết . Sẽ có một tùy chọn để thay đổi Thuộc tính bài viết chỉ dành cho Bảng này hoặc tất cả các Bảng có trong Bản sao. Để kiểm tra, chúng tôi chọn Đặt thuộc tính của Bài viết trên bảng được đánh dấu để xem các thuộc tính của Person.ContactType bảng.

Xem tất cả các tùy chọn có sẵn cho bảng này Bài viết:

Sao chép đối tượng và cài đặt vào người đăng ký Phân phối bản sao kê là những cài đặt quan trọng nhất cho Replication. Chúng tôi cần phải hết sức thận trọng khi thay đổi bất kỳ thông số nào trong số này.

Nhấp vào định dạng phân phối INSERT \ UPDATE \ DELETE để nhận các tùy chọn bên dưới.

  • Không sao chép câu lệnh INSERT \ UPDATE \ DELETE - để tùy chỉnh Sao chép không gửi các lệnh cụ thể đến cơ sở dữ liệu Người đăng ký
  • Câu lệnh INSERT \ UPDATE \ DELETE - để gửi câu lệnh INSERT \ UPDATE \ DELETE trực tiếp tới Người đăng ký thay vì tạo lại dữ liệu từ nhật ký giao dịch
  • CALL - Thực hiện quy trình được lưu trữ tích hợp được hiển thị ở trên trong sp_addarticle để sao chép dữ liệu.
  • XCALL - Thực thi thủ tục được lưu trữ mở rộng để sao chép các thay đổi.

Thuộc tính bài viết thủ tục được lưu trữ

Nhấp vào Thuộc tính bài viết trên bất kỳ một trong các Quy trình đã lưu trữ để xem Thuộc tính

Một trong những thuộc tính chính của Thủ tục được lưu trữ là tùy chọn Replicate - xem các tùy chọn có sẵn bên dưới:

  • Chỉ định nghĩa về Thủ tục được Lưu trữ - chỉ sao chép các thay đổi cấu trúc DDL của Thủ tục Đã lưu trữ. Đây là tùy chọn mặc định cho bất kỳ Quy trình đã lưu trữ nào.
  • Thực hiện thủ tục đã lưu trữ - sử dụng tùy chọn này để giảm tải Replication. Nó thực hiện tất cả các thay đổi thông qua Thực thi Thủ tục Lưu trữ trên Thuê bao mà không cần gửi các lệnh riêng lẻ. Chúng ta có thể xem về tính năng này để giải quyết các vấn đề về hiệu suất trong khi sao chép các thay đổi dữ liệu lớn trong bài viết tiếp theo của tôi.
  • Thực hiện trong một giao dịch được tuần tự của SP - tùy chọn kết hợp để chọn Thực hiện quy trình đã lưu trữ chỉ khi quy trình được thực hiện trong một giao dịch tuần tự. Nếu không, nó sẽ được sao chép thành các lệnh DML riêng lẻ.

Xem thuộc tính bài viết

Nhấp vào Thuộc tính bài viết cho bất kỳ Chế độ xem nào để có được Thuộc tính :

Thuộc tính bài viết dạng xem được lập chỉ mục

Nhấp vào Thuộc tính bài viết cho bất kỳ một trong các Chế độ xem được lập chỉ mục cho Thuộc tính :

Thuộc tính bài viết chức năng do người dùng xác định

Nhấp vào Thuộc tính bài viết trên bất kỳ Chức năng nào do Người dùng Xác định cho Thuộc tính của nó

Các thuộc tính của Chế độ xem, Chế độ xem được lập chỉ mục và Chức năng do người dùng xác định là khá giống nhau. Do đó, chúng tôi không thể tùy chỉnh chúng nhiều.

Kết luận

Cảm ơn bạn đã xem qua một bài viết đầy sức mạnh khác liên quan đến Replication. Hôm nay, chúng tôi đã làm rõ các chi tiết về việc loại bỏ Đăng ký, Xuất bản, Cơ sở dữ liệu Phân phối và dọn dẹp Bản sao hoàn toàn ngay cả khi chúng tôi gặp bất kỳ vấn đề nào.

Chúng tôi đã cấu hình một Bản sao mới được khởi tạo từ bản sao lưu và thử nghiệm cách thêm các bài viết mới vào Bản sao hoặc xóa chúng khỏi nó. Khi tiếp tục làm việc với cơ sở dữ liệu và đặc biệt là tìm ra sự khác biệt giữa chúng, bạn sẽ được hưởng lợi rất nhiều từ các công cụ chuyên nghiệp. Gói so sánh dbForge dành cho SQL Server xác định và phân tích tất cả các khác biệt như vậy và báo cáo chúng.

Trong bài viết tiếp theo của chúng tôi, chúng tôi sẽ xem xét các vấn đề Nhân bản thường gặp phải và cách giải quyết chúng một cách chuyên nghiệp.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tránh trùng lặp trong truy vấn CHÈN VÀO CHỌN trong SQL Server

  2. Khóa ngoài cho khóa không phải khóa chính

  3. Tìm hiểu xem một bảng có được phân vùng trong SQL Server (T-SQL) hay không

  4. 2 cách lấy thông tin phân vùng cho bảng trong SQL Server (T-SQL)

  5. Công dụng của dấu ngoặc vuông [] trong câu lệnh sql là gì?