Luôn có sẵn nhóm, Luôn luôn chuyển hướng người dùng để chỉ đọc


9

Chúng tôi có nhóm Luôn sẵn sàng với nhóm chính và phụ có thể đọc. Chúng tôi có một người dùng cho nhóm thực hiện sử dụng cơ sở dữ liệu để kiểm tra tính chính xác của dữ liệu mà họ dự định đưa vào cơ sở dữ liệu.

Người dùng chỉ có quyền đọc từ cơ sở dữ liệu nhưng khi họ kết nối (thông qua SSMS) thông qua Trình nghe AG, họ luôn kết nối với nút hoạt động.

Tôi đã cố gắng để họ truy cập trực tiếp vào trường hợp chỉ đọc nhưng họ bị mắc kẹt theo cách của họ và sau một hoặc hai ngày họ lại quay trở lại nút hoạt động.

Có cách nào để SQL Server nói rằng người dùng này sẽ luôn sẵn sàng với mục đích chỉ đọc và chuyển hướng họ đến đó không?

LƯU Ý: Tôi đã thử cài đặt 'ApplicationIntent = ReadOnly' trong các tham số kết nối bổ sung nhưng điều này dường như không chuyển hướng đến nút phụ và không phải là giải pháp lý tưởng vì chắc chắn họ sẽ quên thiết lập nó cho người mới bắt đầu.

SQL Server 2012 Enterprise, Nhóm khả dụng 1 chính, 1 thứ cấp có thể đọc được với cam kết đồng bộ.

Tôi không có ý định cho người dùng kết nối với máy chủ được liên kết hoặc thông qua bất kỳ máy chủ nào khác. Người dùng kết nối trực tiếp với cơ sở dữ liệu thông qua SSMS (không có ứng dụng nào khác) và tôi muốn AG Listener (hoặc một cái gì đó ở đó) có thể hướng người dùng đó đến một nút phụ nếu có sẵn (vì nó chỉ có quyền truy cập đọc ở đó không có điểm nào trong việc truy cập chính) mà người dùng không phải làm gì cả, vì họ di chuyển xung quanh các máy và sẽ quên thêm ý định ứng dụng. Ngoài ra tôi thấy việc thêm vào các tham số kết nối bổ sung không phải lúc nào cũng hướng bạn đến nút phụ.


Ngoài các ý kiến ​​dưới đây, bạn cần chỉ định cơ sở dữ liệu trong AG mà bạn đang kết nối.
swasheck

Câu trả lời:


4

Tôi không có câu trả lời cho toàn bộ câu hỏi của bạn (mặc dù tôi đã trả lời cho một câu hỏi tương tự ngày hôm nay https://dba.stackexchange.com/a/137844/38812 ) nhưng bạn đã đề cập rằng sử dụng ApplicationIntent = ReadOnly không hoạt động đúng cách

Bạn đã thiết lập chỉ đọc URL định tuyến? Bởi vì nó không được thực hiện ngoài hộp và nếu bạn không thực hiện thì các cài đặt này và cờ đó sẽ không hoạt động. Tôi nghĩ rằng nếu bạn đã làm việc đó thì bạn có thể bắt đầu đánh giá lại các yêu cầu của bạn.

Hướng dẫn về MSDN https://msdn.microsoft.com/en-us/l Library / hh710054.aspx và dễ dàng thực hiện nhất trong PowerShell.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"

Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica

1

Ste, những gì bạn đang muốn là một giải pháp điểm và nhấp hoặc một thiết lập ở đâu đó. Thật không may, không ai trong số này hiện đang tồn tại ở dạng "ngoài giá". Sẽ thật tuyệt nếu Microsoft đưa tính năng này vào cài đặt kết nối cho Máy chủ đã đăng ký để có thể lưu nó, nhưng than ôi thì không.

Điều này khiến bạn có một trong hai lựa chọn:

  • Viết một cái gì đó cho mình
  • Thay đổi hành vi người dùng

Tôi đã chạy qua bản tải xuống của Microsoft cho SNAC - SQL Client Access, tìm kiếm thứ gì đó có thể đáp ứng (các) yêu cầu của bạn. Điều này sẽ cho phép bạn viết một đoạn mã nhỏ để cung cấp cho người dùng một nút để truy cập trực tiếp vào phần phụ Chỉ đọc. https://bloss.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-USE-application-intent-read-only/

Khả năng khác là buộc người dùng điền vào hộp thoại tham số kết nối khi kết nối qua SSMS. Để buộc hành vi này, bạn sẽ cần sửa đổi thông tin đăng nhập trên máy chủ chính và máy chủ phụ, từ chối kết nối với máy chủ chính và cho phép kết nối với máy phụ. Bạn có thể sử dụng công việc Tác nhân SQL để kiểm tra trạng thái của máy chủ và đặt thông tin đăng nhập phù hợp.

Phải thừa nhận rằng, tôi đã không cố gắng làm cái sau, nhưng trên lý thuyết nó sẽ hoạt động.


-2

Có vẻ như đây là một tính năng trong SQL Server 2019.

Từ chuyển hướng kết nối đọc / ghi bản sao thứ cấp sang bản sao chính (Luôn có sẵn các nhóm) trong tài liệu chính thức:

Xem trước SQL Server 2019 CTP 2.0 giới thiệu chuyển hướng kết nối đọc / ghi bản sao thứ cấp sang bản sao chính cho các nhóm luôn sẵn sàng. Chuyển hướng đọc / ghi kết nối có sẵn trên bất kỳ nền tảng hệ điều hành nào. Nó cho phép các kết nối ứng dụng khách được chuyển hướng đến bản sao chính bất kể máy chủ đích được chỉ định trong chuỗi kết nối.

Ví dụ: chuỗi kết nối có thể nhắm mục tiêu một bản sao thứ cấp. Tùy thuộc vào cấu hình của bản sao nhóm khả dụng (AG) và các cài đặt trong chuỗi kết nối, kết nối có thể được tự động chuyển hướng đến bản sao chính.


Tôi không chắc tôi có thể thấy tính năng mới này có liên quan như thế nào ở đây. Kịch bản của OP dường như khác với kịch bản mà tính năng này được dành cho. OP muốn chuyển hướng các kết nối chỉ đọc đến nút phụ (chỉ đọc), trong khi tài liệu cho tính năng mới này nói rằng đó là để chuyển hướng các kết nối đọc / ghi đến nút chính. Bạn có thể vui lòng giải thích về cách chức năng mới có thể được sử dụng để giải quyết vấn đề đang đề cập?
Andriy M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.