PostgreSQL中的Workstationid属性

本文关键字:属性 Workstationid 中的 PostgreSQL | 更新日期: 2023-09-27 18:16:19

这里我需要得到一个字符串,该字符串标识使用c#的PostgreSQL数据库客户端。下面是一个例子:

:

private static void OpenNpgsqlConnection(string connectionString)
{
     using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
     {
        connection.Open();
        Console.WriteLine("WorkstationId: {0}", connection.WorkstationId);
     }
}
误差

:

'Npgsql.NpgsqlConnection' does not contain a definition for 'Workstationid'.

PostgreSQL中的Workstationid属性

您似乎指的是MS SQL特定属性SQLConnection.WorkstationId

这是一个MS SQL特定的属性。它不存在于nPgSQL,当然你可以添加它。

MSDN中的文档毫无用处,因此很难判断它的实际用途。随便猜一下,我想你可能指的是PostgreSQL的application_name——一种让服务器从存储过程或函数中找到客户端信息的方法。

客户端驱动程序或应用程序必须设置application_name;没有任何东西会自动设置为"网络名称"。(如果客户端不是Windows盒子,这又意味着什么呢?)您的应用程序可以在连接字符串中设置application_name,也可以通过显式的SET命令设置。

您还可以运行任意的SET命令。例如,你可能决定在myapp.workstationid连接属性中存储"工作站名称"。所以你:

SET myapp.workstationid = 'BOBSCOMPUTER';

从你的应用程序,在建立初始连接后。

存储过程现在可以通过current_setting('myapp.workstationid')访问它。

注意,在这两种情况下,有能力发送原始SQL的用户可以用他们想要的任何东西替换这些设置。因此,为了安全起见,不要使用它们。