2016-10-31 18 views
1

我想添加多用戶訪問功能,從而在我的Web應用程序中不會發生併發,是否有任何方法可以輕鬆實現?我如何使用Visual Studio 2015實現行或表鎖定?

+5

這些將是*底層*數據庫引擎的功能 - 不是Visual Studio的功能。 –

+0

@marc_s底層數據庫引擎如mySQL?我可以知道該怎麼做嗎? – user7093382

+1

是的,確切地說 - 這取決於你在使用哪個RDBMS來實現它。對於SQL Server,我會**強烈推薦** NOT **來完成它!處理少量併發的情況要比需要管理和可能中斷的鎖簡單得多(如果有人離開他們的PC,將鎖留在原地......) –

回答

0

儘管您可以在代碼中指定鎖定提示,但通常鎖定在大多數rdms中都是透明的,並使用基礎引擎的鎖定特性。

您是否要求獨佔訪問資源?如果是這樣,那麼一個選項是使用sp_getapplock系統存儲過程。您可以將關鍵部分邏輯放入事務中,並使用sql server的內置鎖定來確保同步訪問。

CREATE PROC MyCriticalWork(@MyParam INT)  
AS 
    DECLARE @LockRequestResult INT 
    SET @LockRequestResult=0 

    DECLARE @MyTimeoutMiliseconds INT 
    SET @MyTimeoutMiliseconds=5000--Wait only five seconds max then timeouit 

    BEGIN TRAN 

    EXEC @LockRequestResult=SP_GETAPPLOCK 'MyCriticalWork','Exclusive','Transaction',@MyTimeoutMiliseconds 
    IF(@LockRequestResult>=0)BEGIN 

     /* 
     DO YOUR CRITICAL READS AND WRITES HERE 
     */ 

     --Release the lock 
     COMMIT TRAN 
    END ELSE 
     ROLLBACK TRAN