Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在SQL Server中记录插入和更新?_Asp.net_Sql Server - Fatal编程技术网

Asp.net 如何在SQL Server中记录插入和更新?

Asp.net 如何在SQL Server中记录插入和更新?,asp.net,sql-server,Asp.net,Sql Server,我想知道当用户从我的ASP.NET应用程序中插入或更新某些数据时,记录日志的最佳做法是什么 在我的应用程序中,我需要知道是哪个用户进行了更改,我想我必须选择: 将我的ASP.NET用户注册到SQL Server中,为他们添加所需表的权限,并为我的每个用户存储 单个连接字符串。因此,我可以使用当前登录的 连接到数据库时用户的connectionstring,以便 无法为选择和更新写入T-SQL触发器 我想到的另一个选择是,我可以编写存储过程,将ASP.NET用户名作为输入参数,并使 日志(我在应

我想知道当用户从我的ASP.NET应用程序中插入或更新某些数据时,记录日志的最佳做法是什么

在我的应用程序中,我需要知道是哪个用户进行了更改,我想我必须选择:

  • 将我的ASP.NET用户注册到SQL Server中,为他们添加所需表的权限,并为我的每个用户存储 单个连接字符串。因此,我可以使用当前登录的 连接到数据库时用户的connectionstring,以便 无法为选择和更新写入T-SQL触发器

  • 我想到的另一个选择是,我可以编写存储过程,将ASP.NET用户名作为输入参数,并使 日志(我在应用程序中只使用一个connectionstring)。 从应用程序中修改数据库后,我将其称为 提供当前登录用户用户名的过程


第二个选项对我来说似乎更简单,但我认为为此我应该选择第一个选项。

选择第二个选项。管理数据库中的用户会给您带来更多的麻烦,如果您必须移动数据库服务器,会发生什么?您需要更新所有用户的所有连接字符串。这只会产生额外的管理开销

此外,如果您需要记录数据库中的所有更改,那么我提出了一些我过去使用过的方法来存储随着时间的推移对数据库所做的所有更改。看一看,可能有用


选择第二个选项。管理数据库中的用户会给您带来更多的麻烦,如果您必须移动数据库服务器,会发生什么?您需要更新所有用户的所有连接字符串。这只会产生额外的管理开销

此外,如果您需要记录数据库中的所有更改,那么我提出了一些我过去使用过的方法来存储随着时间的推移对数据库所做的所有更改。看一看,可能有用


第二个选项很简单。此外,在数据库中创建具有权限的用户。意味着他是否可以做出改变。您可以使用数据库的id字段,而不是使用名称。您还可以使用触发器记录用户对数据库所做的更改。这是一篇关于触发器的好文章,第二个选项很简单。此外,在数据库中创建具有权限的用户。意味着他是否可以做出改变。您可以使用数据库的id字段,而不是使用名称。您还可以使用触发器记录用户对数据库所做的更改。这是一篇关于触发器的好文章,谢谢你的回复。是的,我认为您对第一个选项有更多问题的看法是正确的,将来我可能还会考虑行版本控制。但仅提及第二个选项的一个缺点,它重复了数据库连接,因为在每次插入或更新之后,我必须调用进行日志记录的存储过程。您可以确保打开并保持与数据库的连接,并将其用于sql语句(插入/更新和存储过程)。此外,.net framework将尝试通过连接池来减少这种情况。谢谢你的回复。是的,我认为您对第一个选项有更多问题的看法是正确的,将来我可能还会考虑行版本控制。但仅提及第二个选项的一个缺点,它重复了数据库连接,因为在每次插入或更新之后,我必须调用进行日志记录的存储过程。您可以确保打开并保持与数据库的连接,并将其用于sql语句(插入/更新和存储过程)。此外,.net framework将尝试通过连接池来减少这种情况。