如何在sql server中找到会话的连接字符串值?

jya*_*yao 0 sql-server connection-pooling

我知道有一个类似的问题之前,在SO如图所示这里 然而,这个问题的答案真的没有解决我的问题。这是我的场景,我将使用 PowerShell 进行演示。

以下代码将在我的本地 sql2016 实例上创建两个会话

#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();
Run Code Online (Sandbox Code Playgroud)

我的问题是在 sql server 端,我怎么知道哪个会话的连接字符串将池属性设置为true和哪个设置为false

Sea*_*ser 5

我的问题是在 sql server 端,我怎么知道哪个会话的连接字符串将 pooling 属性设置为 true,哪个设置为 false?

你通常不会也不能。连接字符串不会发送到 SQL Server,它是驱动程序关于连接所需的信息和选项以及在某些情况下应如何操作的指令。但是,连接字符串本身不会发送到 SQL Server,并且通常不可能仅从 SQL Server 显示的信息中完整地重建它。

在您的示例中,池选项告诉驱动程序是否使用连接池。SQL Server 不关心这一点,也不知道这一点,因为它完全是一个驱动程序/应用程序构造。