想象一下,您有一个可以访问SQL Server 2012的应用程序,因此它从一个表读取数据,处理它并将结果写入另一个表。 如果在不同的计算机上同时启动两个此类应用程序,结果数据将加倍。 问题是: 如何防止这种情况?
请为您提供Transact-SQL和C#的示例。
答案 0 :(得分:2)
您在数据库中设置了一些状态,通知应用程序正在执行处理任务。 (我认为两个应用程序可以一个接一个地运行,没有副作用,或者同一个应用程序可以运行两次),这是可以的。
然后,应用程序将检查此状态,并在设置时拒绝运行。
或者,您可以锁定整个表,以便第二个实例无法使用isolation level读取(或写入)数据。
答案 1 :(得分:1)
你想要的是在一个应用程序正在执行它时锁定相应的表。
此处有更多信息:http://www.sqlteam.com/article/introduction-to-locking-in-sql-server