Eu sei que havia uma pergunta semelhante antes no SO, como mostrado aqui No entanto, essa resposta realmente não aborda minha pergunta. Então, aqui está o meu cenário, e vou demonstrá-lo com o PowerShell.
O código a seguir criará duas sessões na minha instância sql2016 local
#The only difference in the two connection strings is [pooling] property, the $connstr_1 has pooling=true, while the $connstr_2 has pooling=false.
$connstr_1 = "data source=localhost\sql2016; initial catalog=master; trusted_connection=true; app=ConnPoolTest; pooling=true";
$SqlConnection1 = New-Object System.Data.SqlClient.SqlConnection($connstr_1)
$connstr_2 = "data source=localhost\sql2016; initial catalog=master; trusted_connection=true; app=ConnPoolTest; pooling=false";
$SqlConnection2 = New-Object System.Data.SqlClient.SqlConnection($connstr_2)
$SqlConnection1.Open()
$SqlConnection2.Open();
Minha pergunta está no lado do servidor sql, como posso saber qual string de conexão da sessão tem a propriedade de pooling definida como true
e qual definida como false
?
Você geralmente não vai e não pode. A string de conexão não é enviada ao SQL Server, é uma diretiva para o driver sobre quais informações e opções ele precisa para se conectar e como ele deve agir em determinadas situações. A cadeia de conexões em si, no entanto, não é enviada ao SQL Server e geralmente não é possível reconstruí-la em sua totalidade apenas a partir das informações apresentadas pelo SQL Server.
No seu exemplo, as opções de pooling informam ao driver se deve ou não usar o pool de conexões. O SQL Server não se importa com isso, nem sabe disso, pois é inteiramente uma construção de driver/aplicativo.