SQL Server всегда включен и пулы соединений

Я пытаюсь выяснить проблему, с которой я сталкиваюсь при настройке реплики только для чтения. У меня есть простое приложение, которое будет запрашивать реплику только для чтения, и я могу проверить, что оно соответствует правильному, запустив @@servername. Все работает как запланировано. Я могу без проблем переключаться на синхронные серверы, и мое тестовое приложение все еще считывает данные из реплики.

У меня проблема в том, что когда я перезагружаю реплику только для чтения, приложение никогда не возвращается обратно в реплику только для чтения. Он переходит к тому, что установлено в маршрутизации, даже после того, как реплика только для чтения снова подключается. Новые соединения с другого сервера попадут в реплику только для чтения. Если я попробую другой способ подключения к AG на сервере, на котором я запускаю тест, он подключится к реплике только для чтения. Сценарий powershell ниже продолжит работу на другом сервере.

Если я остановлю приложение, подождите около 10 или 15 минут, затем запустите приложение, и я попаду в реплику только для чтения. Если я установлю строку подключения для использования pooling=false. Затем он ведет себя так, как и предполагалось, ударив по реплике, как только реплика будет готова принимать соединения.

Это то, что я использую для проверки сценария с репликой только для чтения.

function Get-Readonly-Server
{
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Server=AG_OLTP_Listnr.myenv.local;Database=AGTest;Integrated Security=True;applicationintent=readonly"
    $SqlConnection.Open()
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "select @@servername as colName into #tmp; select colName from #tmp; drop table #tmp"
    $SqlCmd.Connection = $SqlConnection
    $servername = $SqlCmd.ExecuteScalar()
    $SqlConnection.Close()
    $servername
}

for ($i=1; $i -le 1000000; $i++) 
    {
        Get-Readonly-Server
        write-host $i
        Start-Sleep -s 1
    }

Что мне не хватает? Или мой тест неверен?

0 ответов

Другие вопросы по тегам