我有两台服务器,它们都可能尝试执行某些操作。我想要某种形式的分布式锁,以便一次只有一个人会执行此操作。
我知道我可以使用 ZooKeeper 之类的东西,但是为了一件小事要设置很多基础设施。
我想我可以在 SQL Server 中创建一个我在事务中访问的表。这会起作用,但似乎有点乱/乱(如果有人后来发现表格中没有任何内容并决定删除它等等)
我想知道是否有一种方法可以在 T-SQL/SQL Server 中创建“命名”事务(我编造的术语)?
FWIW 我使用实体框架进行数据访问,但如果需要,我总是可以使用原始 ADO.net。
原来它是一个内置的东西
DECLARE @TranName VARCHAR(20);
SELECT @TranName = 'MyTransaction';
BEGIN TRANSACTION @TranName;
USE AdventureWorks2012;
DELETE FROM AdventureWorks2012.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION @TranName;
在 C# 领域,使用 ADO.Net
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Start named transaction.
transaction = connection.BeginTransaction("MyTransaction");
try
{
//Do work you want locked globally
}
finally{
transaction.Commit();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句