在连接字符串中传递附加信息

时间:2014-07-18 07:54:58

标签: c# sql .net

我想在连接字符串中传递一个额外的字符串值,以便可以看到连接了哪个人。

此连接字符串以sql身份验证身份登录,日志文件将显示sql用户ID和计算机名称,但我想添加连接到我的应用程序的用户名。

有没有办法传递使用该应用程序的用户信息并添加sql server日志文件。例如信息。

string constr = "WorkStation id=computerName;"
                    + "packet size=0000"
                    + ";user id=user001;"
                    + "data source=servername;"
                    + "persist security info=True;"
                    + "initial catalog=database"
                    + ";password=password";

2 个答案:

答案 0 :(得分:1)

连接字符串旨在作为所有用户使用的单个字符串。它也是通常由多个用户共享的东西,因为数据库可能具有有限数量的开放连接。如果您为每个用户打开了连接,那么您将遇到扩展问题和连接池溢出。

如果您想知道用户发出了什么命令,最好的解决方案是使用一个存储过程,该过程将用户信息作为参数并将其记录下来。

然而,将用户信息通过逻辑层传递到数据层是一种代码味道。如果您需要知道谁做了一个事务,那么将它记录在应用程序代码中而不是通过SQL数据库中会更好。

答案 1 :(得分:0)

根本无法直接在SQL日志中执行此操作。

如果您想记录用法,您有两个不错的选择:

1)为应用程序中的每个用户名创建不同的SQL用户。这可能只有在你有Active Directory集成时才有可能,否则它可能是添加新SQL用户的一个非常繁琐的过程

2)将应用程序使用情况从应用程序记录到单独的SQL表中。这就是很多应用程序的工作方式,并且在这种情况下被认为是最佳实践。