将扩展参数传递到Sql 2008连接字符串

问题描述:

我需要为支持Sql Server 2008的系统支持广泛的审计功能。由于我打算使用LINQ(没有存储过程),数据库将是一个干净的零联系人数据库。将扩展参数传递到Sql 2008连接字符串

不过,我需要pratically记录下每一个发生这种情况在数据库变更的快照。所以,我认为我应该使用触发器。但是,我需要特定用户的用户标识(而不是连接字符串用户标识)流入数据库。

在oracle中,我应该可以设置一个代理用户,并且触发器可以选择它。最后我检查了一下,Sql Server中没有代理用户的概念。

有谁知道是否有任何extender属性可用于流经我的身份验证用户名?

PS:我不介意连接池的影响(如果有的话)。

谢谢。 P

我还没有尝试过,但从parameters in a connection string,这两个(可能更多)可以在T-SQL中检索:APP_NAME()HOST_NAME()

+0

我想HOST_NAME(),但我还以为是什么东西少“哈克”。我将使用host_name()。谢谢,@devio。 P. – 2010-05-07 17:36:19

我通过将@@SPID与当前用户ID相关联来解决此问题。

您需要一个结构为SPID int,UserID int和具有相同参数的SP的表。如果存在,SP将删除具有SPID的记录,并插入新的一对。

在触发器中,您可以通过使用@@ SPID查询此表来检索用户ID。

的SP需要每当打开一个连接到被调用。 (你没有提到你想如何访问数据库)