Always On 가용성 그룹, 항상 인스턴스를 읽기 전용으로 사용자 리디렉션


9

기본 및 읽기 가능 보조가있는 Always On 가용성 그룹이 있습니다. 데이터베이스를 사용하여 데이터베이스에 넣을 데이터의 정확성을 확인하는 구현 팀의 사용자가 있습니다.

사용자는 데이터베이스에서 읽을 수있는 권한 만 갖지만 AG 리스너를 통해 SSMS를 통해 연결할 때 항상 활성 노드에 연결합니다.

나는 그들이 읽기 전용 인스턴스에 직접 액세스하도록 시도했지만 길에 갇혀 있고 하루나 이틀 후에 모두 다시 활성 노드로 돌아갑니다.

SQL Server가이 사용자에게 항상 읽기 전용이 있고이를 리디렉션 할 것이라고 말하는 방법이 있습니까?

참고 : 추가 연결 매개 변수에서 'ApplicationIntent = ReadOnly'를 설정하려고 시도했지만 이것은 보조 노드로 리디렉션되지 않는 것으로 보이며 새로운 스타터에 대한 설정을 잊어 버릴 수 없으므로 이상적인 솔루션은 아닙니다.

SQL Server 2012 Enterprise, 가용성 그룹 1 기본, 동기 커밋이 포함 된 읽기 가능 보조 1

사용자가 연결된 서버 또는 다른 서버를 통해 연결하려고하지 않습니다. 사용자는 SSMS (다른 응용 프로그램 없음)를 통해 데이터베이스에 직접 연결하고 AG 리스너 (또는 그 주변의 무언가)가 사용 가능한 경우 보조 노드로 사용자를 보낼 수 있기를 원합니다 (읽기 권한 만 있음) 사용자가 기계를 움직이며 응용 프로그램 의도를 추가하는 것을 잊어 버릴 것이므로 사용자가 아무것도 할 필요없이 기본에 액세스하는 데 아무런 의미가 없습니다. 또한 추가 연결 매개 변수에 추가한다고해서 항상 보조 노드로 연결되는 것은 아닙니다.


아래 설명 외에도 연결할 AG의 데이터베이스를 지정해야합니다.
swasheck

답변:


4

전체 질문에 대한 답변이 없습니다 (오늘 비슷한 질문에 대한 답변을 했지만 https://dba.stackexchange.com/a/137844/36812 ) ApplicationIntent = ReadOnly 사용이 작동하지 않는다고 언급했습니다. 정확히.

읽기 전용 라우팅 URL을 설정 했습니까? 기본적으로 수행되지 않았으므로 그렇게하지 않으면 이러한 설정과 해당 플래그가 작동하지 않습니다. 당신이 그 일을했다면 요구 사항을 다시 평가하기 시작할 수 있다고 생각합니다.

MSDN https://msdn.microsoft.com/en-us/library/hh710054.aspx 에 대한 지침 은 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, 당신이 원하는 것은 포인트 앤 클릭 솔루션 또는 어딘가의 설정입니다. 불행히도, 이들 중 어느 것도 현재 "기성품"형태로 존재하지 않습니다. Microsoft가 등록 된 서버의 연결 설정에이 기능을 포함 시켜서 저장할 수 있다면 정말 좋을 것입니다.

그러면 두 가지 옵션 중 하나가 남습니다.

  • 스스로 무언가 쓰기
  • 사용자 행동 변경

SNAC-SQL Native Access Client 용 Microsoft 다운로드를 통해 요구 사항을 충족시킬 수있는 제품을 찾았습니다. 이를 통해 약간의 코드를 작성하여 사용자에게 읽기 전용 보조에 직접 액세스 할 수있는 버튼을 제공 할 수 있습니다. https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/

다른 가능성은 SSMS를 통해 연결할 때 사용자가 연결 매개 변수 대화 상자를 채우도록하는 것입니다. 이 동작을 강제하려면 기본 및 보조 서버에서 로그인을 수정하여 기본에 대한 연결을 거부하고 보조에 대한 연결을 허용해야합니다. SQL 에이전트 작업을 사용하여 서버의 상태를 확인하고 그에 따라 로그인을 설정할 수 있습니다.

분명히, 나는 후자를 시도하지 않았지만 이론적으로는 효과가 있습니다.


-2

이것이 현재 SQL Server 2019의 기능인 것 같습니다.

에서 1 차, 2 차 복제에 읽기 / 쓰기 연결 리디렉션 (항상 켜짐 가용성 그룹) 공식 설명서를 :

SQL Server 2019 미리보기 CTP 2.0에는 Always On 가용성 그룹에 대한 보조 복제본에서 기본 복제본 읽기 / 쓰기 연결 리디렉션이 도입되었습니다. 읽기 / 쓰기 연결 리디렉션은 모든 운영 체제 플랫폼에서 사용할 수 있습니다. 연결 문자열에 지정된 대상 서버에 관계없이 클라이언트 응용 프로그램 연결을 기본 복제본으로 보낼 수 있습니다.

예를 들어 연결 문자열은 보조 복제본을 대상으로 할 수 있습니다. 가용성 그룹 (AG) 복제본의 구성 및 연결 문자열의 설정에 따라 연결이 기본 복제본으로 자동 리디렉션 될 수 있습니다.


이 새로운 기능이 여기에서 어떤 관련이 있는지 잘 모르겠습니다. OP의 시나리오는이 기능이 의도 한 것과 다릅니다. OP는 읽기 전용 연결을 보조 (읽기 전용) 노드로 리디렉션하려고하지만이 새로운 기능에 대한 설명서에는 읽기 / 쓰기 연결을 기본 노드로 리디렉션하기위한 것입니다. 새로운 기능을 사용하여 문제를 해결하는 방법에 대해 자세히 설명해 주시겠습니까?
Andriy M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.