Sql server 多个数据库用户进行ASP.NETMVC项目SQL Server审核,还是我们自己的?

Sql server 多个数据库用户进行ASP.NETMVC项目SQL Server审核,还是我们自己的?,sql-server,asp.net-mvc,audit,Sql Server,Asp.net Mvc,Audit,我们目前为ASP.NETMVC应用程序设置了一个SQLServer2008实例,SQLServer实例使用内置审计(我相信CDC?) 我们还将ASP.Net应用程序设置为对整个应用程序使用web.config中指定的一个连接字符串,无论谁登录(约50个用户) 问题:我们希望能够在审计信息中包括做出特定更改的用户的用户名。 看起来我们只能通过以下两种方式之一实现: 更改我们的应用程序设置,以便每个用户都可以登录自己的数据库。这需要我们使用动态连接字符串(可能不是太糟糕),但另外,向系统添加新用户将

我们目前为ASP.NETMVC应用程序设置了一个SQLServer2008实例,SQLServer实例使用内置审计(我相信CDC?)

我们还将ASP.Net应用程序设置为对整个应用程序使用web.config中指定的一个连接字符串,无论谁登录(约50个用户)

问题:我们希望能够在审计信息中包括做出特定更改的用户的用户名。

看起来我们只能通过以下两种方式之一实现:

  • 更改我们的应用程序设置,以便每个用户都可以登录自己的数据库。这需要我们使用动态连接字符串(可能不是太糟糕),但另外,向系统添加新用户将是一件痛苦的事,管理员无法再通过应用程序界面自动完成(我想)
  • 使用ASP.Net应用程序本身中的另一个解决方案。这将允许我们在应用程序中添加任何我们希望的信息,但这将涉及放弃整个内置解决方案,并从零开始,付出巨大的努力
  • 一定有人在审计之前遇到过这个问题——1是可行的吗?还是2是我们唯一的出路

    感谢

    选项1对管理员来说是一件痛苦的事情,对于“动态”连接字符串来说是一段有点复杂的代码,并调用sp_addlogin来创建用户。但最糟糕的是,每个用户单独的数据库登录也允许他们直接查询数据库(如果他们知道实例和数据库名称,这可能会以任何方式泄漏给他们并“查看”)直接访问数据库可能会使每个应用程序崩溃。不要这样做,除非您非常确定用户无法直接访问数据库服务器

    关于#2.将列“LastModifiedLogin”添加到每个表中,在每次插入/更新期间将登录用户的登录名放在该表中如何?这不会使CDC崩溃,您得到了您想要的。但是,审核删除问题不大,因为您发出了语句,并且不再有可以放置登录名的行。您可以单独组织“DeleteAudit”表,在该表中,您在每次删除时都会输入表名、行标识符和用户登录名,但这只是一个粗略的想法

    如果您使用NHiBiNess进行数据访问,我建议您考虑将CDC切换到NHiBiEnter Enver,这是非常巧妙的解决方案。

    < P>选项> 1是管理员的“疼痛”,这是一个“动态”的复杂代码。“连接字符串,并调用sp_addlogin创建用户。但最糟糕的是,每个用户单独的数据库登录也允许他们直接查询数据库(如果他们知道实例和数据库名称,这可能以任何方式泄漏给他们,并通过网络“查看”数据库服务器)。直接访问数据库可能会使每个应用程序崩溃。请不要这样做,除非您非常确定用户无法直接访问数据库服务器

    关于#2.将列“LastModifiedLogin”添加到每个表中,在每次插入/更新期间将登录用户的登录名放在该表中如何?这不会使CDC崩溃,您得到了您想要的。但是,审核删除问题不大,因为您发出了语句,并且不再有可以放置登录名的行。您可以单独组织“DeleteAudit”表,在该表中,您在每次删除时都会输入表名、行标识符和用户登录名,但这只是一个粗略的想法


    如果您使用NHiBiNess进行数据访问,我建议您考虑将CDC切换到NHiBiEnter Enver,这是非常巧妙的解决方案。

    我想使用Windows登录是不可能的。是的。谢谢您的输入。我想使用Windows登录是不可能的。是的。谢谢您的输入。