如何防止两个应用程序同时访问一个数据库

时间:2014-04-25 12:53:44

标签: c# sql sql-server-2012

想象一下,您有一个可以访问SQL Server 2012的应用程序,因此它从一个表读取数据,处理它并将结果写入另一个表。 如果在不同的计算机上同时启动两个此类应用程序,结果数据将加倍。 问题是: 如何防止这种情况?

请为您提供Transact-SQL和C#的示例。

2 个答案:

答案 0 :(得分:2)

您在数据库中设置了一些状态,通知应用程序正在执行处理任务。 (我认为两个应用程序可以一个接一个地运行,没有副作用,或者同一个应用程序可以运行两次),这是可以的。

然后,应用程序将检查此状态,并在设置时拒绝运行。

或者,您可以锁定整个表,以便第二个实例无法使用isolation level读取(或写入)数据。

答案 1 :(得分:1)

你想要的是在一个应用程序正在执行它时锁定相应的表。

此处有更多信息:http://www.sqlteam.com/article/introduction-to-locking-in-sql-server