Tôi đang làm việc trên gói SSIS sẽ làm mới cơ sở dữ liệu dev từ bản sao lưu sản xuất. Gói đã được sử dụng trong nhiều năm, nhưng chúng tôi đang triển khai Nhóm khả dụng trên ví dụ nhà phát triển, vì vậy các tác vụ phải được thay đổi để hoạt động với cả bản sao chính và phụ. Bối cảnh: Tất cả các phiên bản là SQL Server 2014 SP2. Một phiên bản sản xuất (PD1), hai phiên bản dev (DV3 & DV7) và một phiên bản tiện ích (DV1), trong đó gói SSIS được triển khai cho SSISDB và nơi công việc Tác nhân SQL chạy. Trong gói SSIS, sau khi có được các bản sao lưu đầy đủ và đưa vào chia sẻ mạng từ sản xuất, bộ tác vụ tiếp theo (trong gói SSIS riêng) cần tìm ra nút nào lưu trữ bản sao chính. Tôi đang làm theo các bước được liệt kê ở đâyđể thực hiện công việc này và mọi thứ sẽ hoạt động tốt nếu nó được mã hóa cứng (điều này, tất nhiên sẽ không hoạt động nếu / khi xảy ra lỗi chuyển đổi). Cách duy nhất tôi có thể nghĩ về việc tiếp cận điều này là, trong thời gian chạy, đánh giá trường hợp nào là chính và sau đó tiến hành các tác vụ (trong đó, tất cả đều là các đối tượng "Thực thi tác vụ SQL" - yêu cầu định nghĩa kết nối của riêng chúng ). Tôi đã thấy một vài ví dụ về cách sử dụng biểu thức trong ConnectionStrings và các biến, nhưng không thể tìm ra cách đặt giá trị được trả về từ truy vấn bên dưới trong SQL Server để trả về thể hiện chính xác để đặt chuỗi kết nối trong gói.
select cs.replica_server_name
from sys.dm_hadr_availability_replica_states rs
join sys.dm_hadr_availability_replica_cluster_states cs
on rs.replica_id = cs.replica_id
join sys.dm_hadr_name_id_map n
on rs.group_id = n.ag_id
where rs.role = 2
and n.ag_name = 'DVAG001'
Lý tưởng nhất, sẽ có hai trong số các trình quản lý kết nối này, một cho chính và một cho phụ, sau đó tôi có thể sử dụng trong các đối tượng "Thực thi tác vụ SQL". Sau đó, mọi thứ sẽ hoạt động hoàn hảo. Có thể có nhiều cách khác để làm điều này, nhưng tôi không có nhiều kinh nghiệm về SSIS hoặc phát triển ngoài TSQL.
CẬP NHẬT: Quá trình trên được thực hiện mỗi ngày ... đó là lý do tại sao tôi đang sử dụng gói SSIS và Tác nhân SQL. Vì vậy, toàn bộ quá trình phải được tự động hóa và có tất cả các giá trị cần thiết - đặc biệt là xác định trạng thái bản sao (chính và phụ) - bên trong gói để không cần can thiệp thủ công.