【发布时间】:2015-01-31 09:31:26
【问题描述】:
我正在将应用程序从 Access 转换为 SQL Server 2014。此工具的功能之一是允许用户创建临时 SQL 查询来修改删除或向多个表添加数据。
目前在 Access 中无法跟踪谁做了什么,所以如果某事因意外而搞砸了,就无法知道它是谁或何时发生(它发生的次数足够多,这是一个严重的问题,并且重写工具的众多原因之一)。
我正在编写的应用程序是 C# 中的 Windows 应用程序。我正在寻找有关如何在不对服务器(处理或空间)提出巨大需求的情况下完成此操作的任何和所有建议。由于用户正在创建自己的查询,我不能只为用户名和日期添加一列(这也只会跟踪最近的更改)。
我们不需要保留旧数据,甚至不需要准确识别更改的内容。只是谁更改了数据以及何时更改。我希望能够查看一些内容(视图、表格甚至单独的数据库),这些内容向我显示了进行更改的用户列表以及他们何时进行更改。
【问题讨论】:
-
从 2008 版本开始,SQL Server 中有一个内置机制,即更改数据捕获 (CDC),它就是这样做的。它还会向您展示到底发生了什么变化。
-
从我目前所阅读的所有内容来看,CDC 并未捕获进行更改的用户名。此外,我不需要保留所有更改。这可能会导致数据库比我想要的要大得多。
-
您如何处理对 c# 应用程序中数据库的访问?单一 userId 还是 Windows 身份验证(意味着每个用户都有一个数据库帐户)?
-
Access 数据库没有开启任何安全功能,因此任何人都可以打开它们,C# 应用程序也不必担心。
标签: c# sql-server audit